Monday, October 29, 2007

FOSSCamp

This weekend I was invited by Jonathan Riddell of Kubuntu fame to attend a completely unscheduled conference in Cambridge, MA called FOSSCamp. Most of the attendees were Canonical employees but there were many representatives from other projects and companies (such as gnome, Red Hat, Samba, the FSF) as well. I was joined by Troy from KDE's publicity machine and Leo, Jeff from Amarok. Thank-you to Canonical (Jonathan and Claire in particular) for inviting us.

I have never been to an 'unconference' before, but there were many interesting sessions going. Unfortunately given that there were 3-5 happening at any one time on the first day, I missed a few that I would have liked to attend. Here is a summary of the sessions which I was able to participate in.

Suspend and Resume

The first session I attended was a whistle-stop tour through the seedy and hack-filled world of what happens when your laptop goes to sleep and wakes up again, led by Matt Garratt. After a basic introduction to how suspend and resume are supposed to work, Matt explained why it doesn't always. The next few sentences allude to terrifying hacks and should not be read by young children and people of a nervous disposition.
The main problem faced at the moment is getting the video hardware programmed correctly on resume. Currently the BIOS is tricked into running its own video setup code on resume which may or may not work. Better documentation from the manufacturers should help but it is slow to appear. Debugging suspend and resume (using the system clock as a debug data store!) was also covered. The need for more public details on the process was raised and they will probably appear in the Ubuntu wiki soon.

HotWire

HotWire is a replacement for the standard shell. It is both a text-driven graphical user interface and an object-orientated command line written in Python. The front-end is designed to greatly improve the accessibility of the shell with better auto-completion and history preservation. It can also use a modern graphical UI to visualize the output of commands. For example, typing "ls" produces a list of files in the current directory with appropriate icons and columns which can be resized and arranged. Commands are executed asynchronously so that multiple commands can be executed simultaneously and their output switched between much more easily than a conventional terminal. The downside when I last tried HotWire is that it didn't feel as responsive as a normal terminal. There are also quite a few bugs to fix and polishing required to make it feel slicker and a more natural experience.

The other aspect of HotWire, the object orientated shell, was the one which garnered much more interest. Current UNIX shells pass simple byte streams between applications. Like Microsoft's PowerShell, the idea is that passing objects between commands could allow for much more powerful command lines and less error-prone text processing. Quite a few attendees at the session were interested in having a better object shell but still wanted to use it from within their existing terminals (which include the Linux terminal on machines without X, emacs and text editors or IDEs with shell plugins).

GNOME Online Desktop

Like Hotwire, there are several aspects to Gnome's online desktop, some more interesting than others. One aspect is re-engineering applications to sync with online services and make use of data from them out of the box with minimal effort on the part of the user. This is something which would probably be very valueble to many KDE users as well since they could use their favorite KDE applications for work and communication and still share the results easily with friends or get access to the information regardless of the PC or other device they are using. Another aspect is 'Big Board' which, from what I saw at the demo, provides a summary view of information of interest to the user across various local and online services. It also brings the concept of an online identity more prominently onto the desktop and provides facilities to sign into various online services without having to go to their website. Plasma has a few applets which do similar things with regards to providing status snippets and updates for online and local services so it would be possible, if Plasma was working as it should be, to create something that looked like Big Board. What 'Big Board' has in its favor is a much more cohesive design from the end user's perspective such that the various parts fit together out of the box in a way which is useful. The downside is that at the moment it does not appear to be all that flexible and is limited in the range of services that it can talk to. One of the attendees suggested that it should use Evolution Data Server to get its calendar, TODO, status updates and other data. In the KDE world, the equivalent would be Akonadi. Having a side-panel which displayed aggregated summary updates from my various mail sources, calendars and so on which are spread across multiple web sites, local and remote files would certainly be quite useful. With Qt 4 eye candy it could look very pretty. At one point during the demonstration the internet connection failed and 'Big Board' became a big white empty space at the side of the screen. Better off-line support is obviously a requirement.

Looking at the web-site there are parts of the system (such as the web sign in daemon) which seem like good candidates for cross-desktop collaboration.

The other major aspect of the OD project is the server which stores a subset of users' settings (including desktop setup and I guess personal information and passwords etc.) online.

There is lots to think about as far as KDE and online services are concerned. KDE's libraries (new and old) provide a good technical foundation on which some really neat applications could be built. The question is how to approach this from the user experience perspective, that is not something which I have seen a big discussion on yet.

Freedom for Web Services

Brett Smith of the Free Software Foundation lead a discussion on what 'free' means in the context of online services and how the advantages of online services might be provided in a way which preserves this freedom. Apparently the FSF's position is that no centralized online service can meet their definition of free because the users of such a service cannot modify the code which is run when the service is used, even if the service provider makes the code available (which most do not). In this view, even something like Wikipedia does not qualify as free and the problem becomes a technological rather than legal one to invent a new means of delivering such services.

There was some discussion around the distinction between freedom as it relates to software which an online service uses to process data and the freedoms users have over the data they create and store in the service. The need for an easy way to convey these data freedoms was raised. My personal view is that large centralized online services (as opposed to the FSF's theoretical alternatives) will be a reality for the foreseeable future and therefore companies need more incentives to provide users with freedom over their data. An example might be a simple labeling system. In the UK food now comes with 'traffic light' labels on the packaging to indicate in simple terms how good or bad it is for you (in terms of fats, salt, sugar, proteins etc.) which has had some success in encouraging sales of healthier food and discouraging sales of unhealthy food. Perhaps the same idea could work for online services. The idea being that if a user Mike has a choice of "Larry's Calendar Service" or "Sergey's Calendar Service" he would be able to see a simple 'freedom rating' for the service and factor that into his decision. The problem of course is that the choice might largely be determined by the service which Mike's friends use rather than the service's features.

KDE 4 Libraries and Technologies

This was quite a busy session lead by Troy with discussion of the new libraries in KDE 4 and how they relate to other parts of the Linux platform. The usual topics of Qt 4 and KDE's new libraries for multimedia, hardware, search and the semantic desktop were also discussed. Leo and Jeff from Amarok were on hand to discuss the implications of these libraries in real, working applications.

* WebKit was probably the topic which attracted the most interest as it is relevant for both Gnome and KDE developers. WebKit/KHTML's CSS 3 support was trumpeted by other developers present.
* The problem of the multitude of indexers available including Strigi,Tracker etc. attracted some attention. I mentioned XESAM as a specification which allows client applications to be indexer-independent for queries. Mark Shuttleworth noted that this left the problem of how applications can provide information to indexers. I didn't know this at the time, but according to the XESAM website the specification is being developed incrementally and that facilities to do this might form part of the second iteration.

One of the participants mentioned the need for a demo KDE 4 application (like Qt's qt-demo) which shows off KDE 4's new features and provides simple working code which new developers can make use of in their own applications. I agreed but pointed to the applications in kdegames and kdeedu as the best place to start until such an application is written.

I mentioned Akonadi briefly which generated some interest. Unfortunately at the moment it is difficult to demonstrate in a really meaningful way.

Education

This session became a demonstration of KDE 4's educational applications. Marble in particular attracted attention from the participants. One point that did come up in the discussion was the usefulness of being able to adjust an educational product to fit in with different cultures and environments. An example given was an educational authority which wanted to remove smoking-related items from KTuberling. In KDE 4 this should be much easier to do given the use of SVG objects which allows individual items in scenes to be adapted and removed. I attempted to given an impromptu demonstration with Inkscape, but it wasn't quite as easy as I hoped since I picked the wrong file to edit. More documentation for distributors on how to edit or create new resources for applications would be useful.

The importance of making educational applications and games which work well on thin client systems was also raised. Firefox was cited as a problematic application because of the memory used for X pixmaps. There was hope that a WebKit browser would help in this area. For KDE, it is not easy to judge the problems until someone actually attempts to use the applications in such an environment.

Upstream Patch Flow

This session was a debate and discussion on how we (upstream) can discover and manage patches produced by distributions. Ubuntu hackers pointed to a few resources such as Ubuntu Merges which can help upstreams keep track of patches. Unfortunately both upstream and downstream have the same problem in that they have a large number of suppliers and consumers respectively which all have different systems for managing and accepting patches. Something which Ubuntu can do in the short term is automated emails to upstream maintainers about patches which are added. A quick review of patches to kdebase/kdelibs showed that much of what is patched or added are changes to the build system which is less interesting than changes to the code itself.

KDE 4 Applications

This session took part on the second day which was considerably quieter. I demonstrated a wide range of KDE 4 applications from various KDE projects to a small audience of about 15. There was appreciation for many of the new features, although in order to really impress people the front-end needs to be much slicker. The colour scheme which ships with the Oxygen style does not work very well on projectors or lighter flat screens at the moment, adjustments are definitely required in this area. Leo and Jeff lead a demonstration of the new features which Amarok 2 will provide including more online services, a new playlist, a much more prominent canvas for displaying contextual information and better plug-and-play support for a variety of media devices.

I was also asked about PIM applications afterwards. As many readers will know, the PIM applications shipped with KDE 4.0 will be fairly similar to their KDE 3.5 counterparts. Akonadi should make much more exciting things possible.