Beyond the Browser

At OSBC last week I gave a Radar talk on current technology trends. The trend of moving traditional desktop applications to massively networked, Web 2.0 online applications like Google Docs is well-known. The problem is, a web browser is a terribly limited platform for application development, and JavaScript is a less-than-fully-featured language. There are inherent limitations to the kinds of applications you can develop and the kinds of user experiences you can offer in a web browser. Toolkits like Flash and Silverlight attempt to cram more functionality into a web browser, but they still can’t offer the fully integrated desktop experience. Add in the fact that the nirvana of 100% connectivity at all times is far from a reality, even in the most technologically advanced parts of the world. This is a significant usability problem for the pure web browser applications, as anyone who has experienced the frequent forced coffee breaks by a Google Spreadsheet “waiting to connect” can confirm.

The wave of the future is not web browser applications. Instead we’re coming full circle back to desktop applications, but this time we’ve broken the old idea of single user silo applications with no connection to the outside world. The wave of the future is lightweight desktop applications with the same massively networked, Web 2.0 behavior we’ve come to expect from browser applications. iTunes is a classic example of this, with both an offline component available all the time, and a seamlessly integrated online component available when connected.

Songbird on Fluxblog

Songbird is an even better example. It’s an open source media player built on the Mozilla application framework but it doesn’t run in the browser, in fact it embeds a lightweight browser within the desktop application. Like iTunes, Songbird acts as a local desktop media player, media library organizer, and media device manager and also allows you to purchase music/movies online and add them to your library. But it also does more than iTunes. The embedded browser means that you can surf to any website, not just one company’s dedicated store pages. When you hit a site with links to media files, Songbird creates a dynamic playlist of all the media on that page. So you can surf to a music blog, and while you’re reading the blog listen to its virtual playlist. You can add songs to your library from the online playlist with a simple “Add to library” button, and Songbird maintains a “Web Library” of the music you’ve encountered while surfing so you can find it again.

Looking ahead to the next few years, one of the critical steps to making Linux a complete drop-in replacement for proprietary operating systems is filling in the last few missing desktop productivity applications: calendaring, contact management, project management tools, PDA/cell phone/laptop synchronization, etc. There are various projects working on various aspects of the remaining gaps, but none stands out as a clear lead, and none approach the problem in a fully integrated way. I would like to see the lightweight, networked desktop application approach brought to these remaining gaps. I don’t want Linux to just provide functional copies of existing proprietary desktop applications, I want it to shoot ahead to the next wave, driving innovation where the incumbents are afraid of change.

An important development in this space is LINA, due for first release in June, under a GPL license. I launched it in my OSBC talk last Wednesday, it hit Linux Devices on Friday, and Slashdot on Sunday. LINA is a lightweight virtual machine that allows desktop applications to be developed for Linux and run with a native look-and-feel on Windows, Mac OS X, and various flavors of *nix. I asked Nile Geisinger, CTO of LINA, for a quick summary of the technology involved:

There are already several ways to run an application written for one platform on a different platform. One is system call mapping: for instance mapping a Linux system call to a Windows system call as CYGWIN does. This allows a Linux application to run in CYGWIN on Windows without the Linux kernel. Unfortunately, syscalls cannot always be mapped exactly, which can prevent the application from compiling or from working as expected. Virtualization takes a different approach, actually implementing an entire operating system on top of another, but applications running in this guest end up being completely unintegrated with the host operating system.

LINA takes a new approach. In LINA, Linux applications run on a cross-platform Linux kernel on a virtual machine. LINA uses resource mapping instead of syscall mapping. So the Windows file system is mapped to a Linux file system, the Windows GUI APIs are mapped to Linux GUI APIs, etc. From the perspective of the LINA Linux application, it is running in a standard Linux operating system. From the perspective of the user, the LINA application is identical to a normal Windows or Mac OS X application.

LINA changes the game for Linux application development. Instead of a labor of love for a minority platform, developing for Linux becomes the easiest way to reach a broad audience on multiple platforms.

The next 5 years will be interesting.