To generate a graph simiar to Figure 1 on your system, download the IPython log and replay it with
ipython -pylab -p pysh -logplay <filename>. It is beyond the scope of this article to cover installation of IPython and related tools, but this should not be difficult. Your distribution may also have packages available already.
Even basic system administration tasks, using the simplest of traditional commands, benefit from supplementation with a high-level language.
The Browser Is the Desktop
If the network is the computer then the browser should be your desktop.
There is definite enthusiasm for Firefox as a platform. The Web is already an essential tool, just about everyone has a browser open all the time. The browser is our interface for doing research, catching up on email, booking an airline ticket, and performing banking transactions. As mentioned at the beginning of this article, many SaaS applications are now mature, and more are on the way. Online tools can even handle photo editing. In fact, SaaS may already fulfill all the needs of some users.
Of course, there are still security problems to resolve, and skepticism if a SaaS-only solution is generally possible, or desirable (including in established areas such as email). The desktop application is far from dead.
Firefox, however, with its tabbed interface and long list of powerful extensions, makes even the wilderness of the Web seem like home. Could it not do the same for local applications? What if Firefox became a portal that mashed up plain web sites, remote SaaS applications, and local programs with each other? Is this the real future of the Web OS?
During the writing of this article, a discussion arose on the
mozilla.dev.planning list, about building a Mozilla-based operating system layer. The discussion mentioned many alternatives, including earlier projects that had similar goals (such as Symphony OS and Penzilla Desktop), the use of XUL (Mozilla's XML-based user interface language) to produce a graphical desktop environment, and running Ajax applications offline. Of course, some of these ideas are already close to reality: Firefox 3.0 will support offline Ajax execution and DOM storage.
Surprisingly, even currently mature technology is nearly sufficient to make Firefox the primary user interface. The browser itself can perform the role of an X window manager (see below); its tabs provide an elegant alternative to traditional windows. After all, if users are spending more and more time on the Web, what could be more natural than just opening another tab to use an application, even if that application happens to be local. In fact, Mac OS X has a tool "which extends the tab browsing experience to the Desktop." The Ion X window manager also uses this approach.
Figure 2 shows Firefox running without a window manager. The tabs work as expected, and even dialog boxes are largely usable. For now, a minimalist window manager (blackbox or ratpoison, for example) would improve some functionality, such as the dialog boxes.
Figure 2: Firefox without a window manager; the "Preferences" dialog box is functional, despite the lack of a window frame
The next step is to integrate native applications with the browser. Virtual Network Computing (VNC) is the most mature option. Figure 3 shows a default Ubuntu 6.06 LTS (Dapper Drake) desktop, running inside Firefox using the TightVNC Java applet. This is a common approach for remote system access, but here everything is on the local machine. Firefox is running without a window manager, like in Figure 2. Note that Sun's Java is not yet fully open, but Sun is committed to FOSS licensing.
Figure 3: Firefox, showing a standard GNOME desktop using the TightVNC Java applet
Of course, a Firefox tab is ideally suited to focus on just one application. Figure 4 shows OpenOffice, running with the ratpoison window manager. The VNC-based integration with Firefox is nearly identical to that in Figure 3. If Firefox included some window manager features, it could control applications directly.
Figure 4: Firefox, showing OpenOffice using the TightVNC Java applet.
You can download the source code (a short shell script) for the Firefox examples above. The comments provide further directions. Installation is beyond the scope of this article, but your Linux distribution should provide sufficient packages to allow you to experiment. Note that generally, X windows offers many capabilities for combining multiple desktops.