Online desktop or desktop online?
There are interesting changes under way in how software applications are designed and deployed, and I’m curious about the role of Ubuntu will be in this process. I’m thinking about this in terms of three categories:
1. Desktop applications
These are our traditional word processors, spreadsheets, messaging clients, music players, and so on.
End users of desktop applications benefit from high performance, access to local data and offline availability, but are hampered by high maintenance requirements and primitive collaborative features.
Developers of desktop applications benefit from access to local OS APIs, a wealth of existing free source code, and relatively low maintenance overhead, but are hampered by a complex distribution model, multiple platform targets, and many versions being actively used in the wild.
Ubuntu specializes in this area today.
2. Web applications
They are distinguished from simple websites by virtue of having a consistent look and feel throughout, a high degree of interactivity, and a defined feature set.
End users of web applications benefit from the universal availability of the applications and associated data, advanced collaborative features, and virtually zero maintenance, but are hampered by comparatively low performance, unavailability when offline, primitive user interfaces (though they are getting better), and data privacy issues.
Developers of web applications benefit from a simple distribution model, fewer platform-specific issues, and fewer versions to support at once (typically one), but are hampered by high maintenance (production hosting), a more complex user interaction model, and a comparative scarcity of open source code.
Ubuntu aims to provide an excellent browser experience, but doesn’t go much further than that yet.
3. Hybrid web applications
Ubuntu doesn’t do much in this area yet.
What does this mean for Ubuntu?
Ubuntu is, most essentially, a means for users to obtain and use applications, and for developers to create them. Operating systems exist to make these things easier, so changes in this area are highly relevant to us. They may even lead to reinterpretation of some of our most basic principles, for example:
Every computer user should have the freedom to download, run, copy, distribute, study, share, change and improve their software for any purpose, without paying licensing fees.
How does this apply to web applications which need not be downloaded, distributed or copied in order to be run or shared? Is it useful to be able to copy, change and improve the source code for a desktop application if all of the interesting functionality is hidden behind a web API?
To what extent can (or should) hybrid applications truly be a part of a free system? Do they make free software values less relevant, or just less obvious? These questions are the subject of active debate in the media today.
Once we’ve addressed the philosophical issues, how can Ubuntu take advantage of this innovation at a technical level? How can Ubuntu become a superior platform for hybrid web applications? The just-announced Google Chrome has interesting implications, both for bringing web applications further into the desktop and supporting hybrid applications.