[maemo-developers] [maemo-developers] Ideas for unifying the IT OS codebase

From: Jani-Matti Hätinen jani-matti.hatinen at iki.fi
Date: Sun Jan 14 04:30:05 EET 2007

I was delighted to hear that Nokia will be working on at least attempting to 
unify the codebases running on the 770 and N800 [1]. To help in this work I'd 
like to offer a few ideas on how you might proceed with the work.

In the short-term the main problem is obviously getting the OSS and 
Nokia-controlled parts of IT OS 2007 running on the 770. To make this as easy 
as possible I'd suggest that you:
- Publicly document all of the current differences between the two codebases
- Publicly document all of the differences between the devices to the extent
  that you can
- Open as much of your own code as you can so that others can contribute to it

Once the modifiable components (i.e. OSS and Nokia-controlled stuff) have been 
fixed to run on both the 770 and N800, the next step is to make sure that the 
commercial components run on the updated unified codebase. To do this, I'd 
suggest that you:
- Preferably work with your suppliers and try to make a single version of each
  commercial component run on both the 770 and N800. (excluding device
  drivers, obviously)
- If (and only if) that doesn't work:
  - Write wrapper code so that the single core system can handle two different
    versions of a commercial component.
  - Offer frequently updated bleeding-edge releases so that developers and
    enthusiasts can test the applications/components.

When/if the above things are done you should basically be able to release 
OS2007 for both devices.

Going forward from that here are some thoughts:

Try to maintain a single API for applications for all supported versions of IT 
OS by:
- Backporting all new parts of the API to older supported IT OS versions
- Deprecating old parts of the API with a grace time on one major IT OS
  version instead of the current grace time of 0.
- Completely decoupling the core system and the application API from any
  commercial components (e.g. by using wrapper code) and thus ensuring that
  you can control the way the API evolves.

To make the commercial components a lesser pain in the ass in the future:
- Wherever commercial components are needed, try to encapsulate them into
  drivers/plugins so that one version of the core system can run separate
  versions of the commercial components (and so that they can be replaced as
  easily as possible)
- Participate in or sponsor work on porting WebCore to Maemo and thus getting
  rid of Opera (which, IMHO is one of the biggest problems right now).
- Participate in or sponsor open source projects which are trying to implement
  similar functionalities as one of the other commercial components you
  currently use (e.g. handwriting recognition).
- Try to persuade your hardware suppliers to open source their drivers and/or
  to open as much documentation as possible, in order to facilitate the
  development of open source drivers.
- When/if that fails, support possible reverse-engineering projects by any
  legal means you have (e.g. by supplying testing hardware).

Now and in the future, to offset the possible costs from relicensing new and 
updated proprietary components to old devices you might want to consider an 
upgrade path along the following lines:
- Offer free upgrades for the warranty period of a device or a similar
  timeframe (e.g. 2 years in Finland).
- After the warranty has expired, charge a reasonable fee (say 20-40 €) for
  the latest major version of the IT OS.
- If possible, offer the second latest major version of the IT OS free (or for
  a really, really low price) to all users.
- Annually end of life the IT OS major version released two years earlier.

So, for example right now IT OS 2006 and 2007 are actively maintained and 
supported, whereas IT OS 2005 has been EOL'ed.
  Next year IT OS 2008 would be offered as a free upgrade to everyone whose 
warranty hasn't expired (and as a purcaseable upgrade to others). IT OS 2007 
on the other hand would be offered as a free (or really really cheap) upgrade 
to everyone and IT OS 2006 would be EOL'ed.

This approach would mean that:
- At any point in time you'd have to maintain and support just two major
  versions of the IT OS
- Older versions of the IT OS could be truly EOL'ed, since upgrading to a
  supported version would be free (or really cheap) for all users.
- No customer would feel left behind (or at least I would think so)


More information about the maemo-developers mailing list