[Jaffa Software]

Sunday 20 April 2008

maemo.org: what next?

I was invited, but unfortunately had to decline, to speak at the maemo track of LinuxTag 2008. The final topic, maemo.org: what next? is subtitled "mid-term: what Nokia should do + what the community could do". Whilst looking at whether I could attend, I started thinking about this topic. Below is the crystallisation of some of those thoughts which probably would've formed the basis of a few slides to kickstart discussion.

Where are we?

Since November 2005, we've had the N800 and N810; both spaced about a year apart. But whilst the release of the N810 saw its OS backported and released for free for the N800; the release of the N800 saw the 770 dropped in terms of official support.

All three releases had "device programmes" whereby key members of the community could get the devices at severe discounts. This had the advantage of ensuring key software and power-users could deal with the new devices; but meant that hackers who may have maintained support for the earlier devices didn't have to scratch that itch.

Nokia were criticised very heavily for their decision to drop 770 support. However, in their defense they've generally had a fairly open, but unguided approach, to community involvement. It seemed such a large company was having difficulty defining - let alone adjusting to - truly open, community-involved processes.

Recent developments such as the involvement of Niels Breet and Quim Gil have certainly helped here. There've been improvements to the maemo.org website such as karma and rating downloads & news articles which have definitely increased interaction. Quim's contact with the community both through official channels and the Internet Tablet Talk forums has been very well received. These are steps in the right direction, but more needs to be done.

Corporate interests in open source projects

There are three aspects to an open source project, especially when there's corporate sponsorship:
Triangle representing the interests of corporations vs. open source involvement
Open source triangle
Community involvement
Pushes sales and reduces costs: more software developed for a device; more community support for users; some aspects of software development being done by the community which can become headline items in sales packages.

Openness
Allows experimentation with a device: new operating systems; backported OSes etc. However may be viewed by suspicion by marketing teams wanting to make a large fanfare for an upcoming release.

Control
Essential for a company: what's going to be in a release, how it's going to be supported; ensuring the package as a whole has a consistent marketing message.
None of these are "better" than the others, and a true open source project - without any control at all - either splinters into a series of forks, or never gets enough traction or user-base to get that far. However, I'd suggest the best corporate-sponsored open source projects sit closer to the middle of the triangle than anywhere else. For example, if the 770 ecosystem was closer to the centre, the "hacker editions" may not have been a cost Nokia needed to swallow.

Are there "good" open source projects with corporate sponsorship? Sure! Amongst many others there are:
  • Eclipse (IBM)
  • Firefox (Mozilla Corporation)
  • OpenOffice.org (Sun)

What Nokia should do

Nokia need to take action to really push community involvement. Nothing's got for free: if Nokia aren't seen to be committed to the community, why should the community be committed to Nokia? I'm sure we can have a discussion about where we are on the triangle, although I suspect there won't be much argument that we're closer to the bottom left than anywhere else.

Is this a bad thing? It depends. Certainly, being further towards the centre would mean - at least - the Hacker Editions could be maintained outside of the maemo.org team; other OSes such as Poky, Mamona and even Ubuntu Mobile could be got running on the device; the experts in the community could provide input into specifications, designs and even provide implementations. This'd mean:

  • Somewhat reduced costs on behalf of Nokia;
  • More devices being sold. Some people are looking for an entirely open device (see the interest in OpenMoko or Pandora). Others are looking for an open device on which they can run a software stack of their own choosing, such as Poky.
  • Contributions from people who are personally devoted to the device, rather than being paid to work on it by their employer. That's not to say that the employees aren't doing a good job, or that they're not devoted to the device; but if someone's willing to do even some work for free, why look that gift horse in the mouth?
These are all good things, both to the end-users, the community and Nokia's bottom-line.

So, to increase openness and community involvement in maemo.org, I suggest the following to Nokia:
Default code position: open
The default position for all ITOS and Maemo code should be open source, unless there are legal and contractual reasons it shouldn't be the case. It should be possible for an external developer to tweak - say - the look and feel of the Media Player (perhaps cover.jpg album art support), rebuild it and share it in the community. Any component which is closed should have a page in the wiki or somewhere else explaining why that is closed source, and details of the API that component is supposed to provide to the system.

Work in the community, not with the community
  • Nokia's internal bug tracker should be closed to anything but issues with upcoming, unannounced hardware: all software bugs and development features should be in the maemo.org Bugzilla or component-specific open bug trackers.
  • All components should have discussion - even between Nokia staff - on open mailing lists and IRC. All high-level designs should be discussed on maemo-developers to get most involvement and input. Low-level implementation details should be discussed on component-specific mailing lists.
  • Discuss software roadmaps on maemo-developers, engage the non-Nokia community to feel like they're not just contributing into a black hole; but are involved in the decision-making, policy-making and strategic direction of the platform on all levels.
  • Improve the tooling for people wanting to rebuild an ITOS component, possibly even including the ability for third parties to produce their own FIASCO images. Indeed, for the community to help with the Hacker Editions, this ability is essential.

Raise the bar for third-party developers
Put considerable effort into integrating, homogenising and ensuring consistency between all of the built-in applications. Polish here will encourage application developers to raise their game. I've tried to avoid an iPhone comparison, but look at the quality of third-party iPhone apps, even before the official SDK was launched.

Increase the ease with which applications can be fully Hildonised and integrated into maemo
  • It's currently too easy to half complete a port, without any addition of battery-management functionality; proper load notification; proper backgrounding etc.
  • Effort could be made, for example, to make GtkMenuBars a more pluggable interface: Hildon would use a plugin which rendered it as a fixed point pop-up, the Mac OS-inspired desktops would use a plugin which rendered it at the top of the screen, the ROX-based distributions could have a fully popped up menu. This should also decrease the effort to port applications.
  • Similarly, HildonWindow is a hack to get default themes working. This hack would be better put in the window manager, rather than requiring changes to every application.
  • Work closely, and openly, with other companies using Hildon as an interface to effect these changes; such as Intel and Ubuntu; to ensure that Moblin, UME and maemo don't splinter and that porting applications between them, and innovations made by one company can be reused without being dismissed because of "Not Invented Here" syndrome.
Some of these may be too much for Nokia to swallow as a company not used to openness. There will be comments within Nokia that this will open themselves up to too much competition; that if their entire software stack is open someone else will be able to clone it. So what, though? Be a hardware company; be a focal point; sell services to your competitors building similar hardware; sell to consumers a polished device with an active community.

I strongly believe taking these actions will increase the openness of ITOS (and hence maemo) development and massively increase the participation of the non-Nokia community. For example, I and at least a handful of others, would commit to regularly commenting, reviewing and participating in design reviews of high-level (and perhaps even low-level) specifications; if only we were asked.

Nokia have a large, untapped resource of professional, enthusiastic programmers; artists and users, who would be willing to effectively work for Nokia for almost nothing: just an acknowledgement that their input is being listened to, visible changes resulting from their work and - perhaps, just maybe - inclusion in the next device programme ;-)