Wednesday, February 10, 2010

Mapping openness of Maemo 5.0 PR1.1 and Maemo 4.1.2 - we're moving in the right direction!

One of the tasks I've been doing in the last couple of months has been to try and refresh the openness data for Fremantle. This has actually been quite a challenge as I've had to retrieve a lot of different sources to make a proper description of what is actually open and what is not.

The openness reports

For Fremantle PR1.1, you can find the openness report here - this is for a PR1.1 image actually installed on a device.

As per request and for comparison, I've also generated one for Maemo 4.1.2 (Diablo)

It has been difficult finding categorisation for Diablo so a lot of it is in 'Other' as I used the package categorisation from Fremantle in this.

This is supposed to be raw data for further discussion and as such there'll be subsequent analysis on top of this, explaining some of the areas and why things are as they are. Please read through this blog post for further explanation of what the data represents and how it is represented.


This
openness report has the purpose of:

  • Giving exact information of what is open, what is not, if it's openly developed
  • Help prioritise what should be opened and in which order
  • Help giving arguments towards why things should be opened
  • Help new developers find out where components are developed
  • Help making Maemo more open
  • To aid open sourcing discussion where we go to the technical heart of a problem, not the ideological one and save all of us precious time that could be used to open source things.
  • Get information about what components may not be so interesting as to open source and what is kept closed source in those component areas and help to give an understanding of why it is so.

The purpose is not:
  • To be a fight over numbers and percentages of openness
  • To be a discussion over open sourcing policies (what Nokia chooses to open source and what not)

Classification of packages

So, to start describing what these openness reports contain. I have chosen to classify source packages into seven levels - this will also explain the headers of the table.

L1: Developed openly, no closed source dependancies

This means that the source package is developed either in garage.maemo.org, maemo.gitorious.org or some other place. This means that you can follow development and contribute patches to it, without having to wait for new releases

L2: Source published in SDK, no closed source dependancies

This means the source package is published in SDK releases. This means that you usually have to wait for a new SDK release to get updates to this package and there's no clear way to submit patches beyond bugtracker

L3: Developed openly, closed source dependancies

This means that the source package is developed either in garage.maemo.org, maemo.gitorious.org or some other place. This means that you can follow development and contribute patches to it, without having to wait for new releases

However, this is usually important for system integrators and porters of Maemo, this package depends on a closed source package to build or run. Which means it is difficult to take the package and use it outside Maemo.

L4: Source published in SDK, closed source dependancies

This means the source package is published in SDK releases. This means that you usually have to wait for a new SDK release to get updates to this package and there's no clear way to submit patches beyond bugtracker

However, this is usually important for system integrators and porters of Maemo, this package depends on a closed source package to build or run. Which means it is difficult to take the package and use it outside Maemo.

Total L1-L4:

This is the percentage that is open source in this particular component. It is red if it's below 80%

L5: Binary-only package published in SDK. Source may exist but may be non-free

This means the package is published in SDK, but may be non-free and hence not possible to use outside Maemo.

L6: Package published under EULA in nokia-binaries

This means the package is published as binary-only in nokia-binaries, which you can get under EULA at http://tablets-dev.nokia.com/eula

L7: Not published except on device and SSU repositories

This package is only published in SSU repositories and as such you cannot get to it without a device.

In each component area, for each level, there is a percentage and a number. This is percentage of components in this area that is in this level and how many source packages. If you click it, you will see the packages from that component area in that level.

If you click this, you will see information about the package, it's level, where it is openly developed if so, where you can retrieve it, etc.

Key numbers

Along with the openness report, there's a few key numbers, which are completely unweighed regarding lines of code, importance, etc.

Total L1+L3 compared to L1-L4:

This is how many % of the open source packages of Maemo that is actually developed openly on maemo.gitorious.org, garage, etc.

Total L1-L4:

This is how many % source packages of the image which is open source

Total L5-L7

This is how many % source packages of the image which is closed source

Total L1-L4 compared to L1-L6

This is how many % of the published source packages that are open source.

The future of openness reports

The idea is to publish these openness reports quite often, as to keep a understanding on the direction we're going in. I plan to do one every PR release for Fremantle and when Harmattan SDKs starts appearing, doing the same. I plan to shine up the CSS a bit as well as it's not the prettiest currently.

I will very soon start maintaining a open sourcing queue and the hope is to release as many L3-L4 packages as possible to become L1 and L2 packages. And L4 and L2 packages turning into L1 and L3 packages.


Please comment any changes or ideas for future improvements, or questions. If there's components that are openly developed that are not represented, let me know as well. I'm 'Stskeeps' on #maemo and feel free to come and discuss with me there.

3 comments:

  1. Thanks so much for this! But I am honestly a bit shocked to see the totals, perhaps I am reading things wrongly?

    Diablo L1-L4: 45% (210)
    Fremantle L1-L4: 43% (236)

    Maybe there are more little insignificant closed packages in Fremantle, while the significant stuff is more open?

    Is there some way to capture a picture of the overall openness of the whole system? Maybe we need a way to weight packages on size and importance?

    ReplyDelete
  2. Many thanks for this. one of the most valuable aspects of this effort is the links to the source.

    Finding the source in maemo always seems far too difficult, your work makes it much easier.

    ReplyDelete
  3. Regarding totals, the idea is to help understand why there might be more closed source stuff or what those added 2% contains. Take as example that previously in Diablo, 99.5% of the SDK was open source, but in Fremantle 75% is. Is this a regression? If you look at it closely, the 25% is mostly things you can get in nokia-binaries and that we suddenly have access to a full-fledged environment unlike the previous SDK along with development headers for the cellmo and many others services we can play with now and develop for (CAL area, etc).. Those abilities are hard to quantify. Looks bad on paper in numbers, but great if you look into it.

    ReplyDelete