Saturday, 30 October 2010

the Qt contribution ecosystem

After recently writing about the broken contribution process in Qt, I got a little bit inspired to see what the current 'lay of the land' of the Qt contribution ecosystem looks like. So, I did what any self-respecting hacker would do, and wrote a quick script over the course of a few hours to generate the statistics I wanted. Beware, gitstats takes a long while to run over repositories with a big history. If you want to skip the work of running it over Qt yourself, grab a copy of the CSVs I generated.

Before I go any further, I'd like to emphasise the following from gitstats' README:
The information gitstats generates is in two primary facets: which individuals
are doing the work, and which organisations do those individuals come from.

The raw output from gitstats isn't perfect (obviously) as some individuals
change email addresses, etc, but gitstats does make some effort to try keep
track of people.

Usual disclaimer about raw data applies, you should have insight into the real
situation behind the figures before trying to apply any sort of real
interpretation to it
.

There are a few ways in particular that gitstats' information is flawed. The biggest being that the 'organisation' an individual belongs to is generated from the first component of their email address.

The problems here:
  • Wth people contributing from email addresses like ritt.ks@gmail.com (who is, by the way, a very prolific external Qt contributor): gitstats lumps them into an organisation like 'gmail'.

    This isn't bad for the *majority* of contributors, but obviously for those from free mail domains, it's not really correct.
  • This also results, in some cases, in an extra 'organisation' being created, when someone who is already contributing to Qt switches to another mail address, as can be seen in the data with e.g. 'abecasis', created by João Abecasis, a Nokian, who has occasionally committed from joao@abecasis.name.

    This can't really be fixed in a satisfactory way automatically, as e.g. you may very well have people who move from one company to another, but keep contributing to Qt.

    The not so obvious problem with this is that contributions go to the organisation that user is in when they made that particular commit, so João's commits under abecasis.name go (incorrectly) to abecasis instead of to Nokia.

The Organisations

Notes when interpreting this graph:

  • I had to cap the LOC added by Nokia, because it was off the scale. Part of this is because of updates to /src/3rdparty/ (think things like Webkit updates) by @nokia.com addresses
  • For all intents and purposes, Trolltech and Nokia can be lumped together, I didn't do so because of the previous note
  • 'gmail', as noted above, is actually a group of lots of individual contributors. There's some more of these (like 'users', which is people with email addresses from users.sourceforge.net)
  • Some of the large contributions (gmail, archlinux, holodeck1, seznam, ostash) are bulked out because they include translation updates
Of interest to me when looking at this graph:
  • Nokia is the elephant in the room. This is not unexpected, given that they have some 130 folk contributing to Qt. They are undoubtedly the largest single contributing organisation by a very, very long way.
  • It looks like there are companies other than Nokia interested in contributing to Qt at a fairly large scale, for example, accenture, sosco, and digia. I'd presume that these are contractors. I'm informed that contractors generally work from the Nokia offices, which would explain why I hadn't seen much of them in Gitorious. (They still go through a code review process, as do other Nokia employees.)
  • There is a large impact thanks to individual contributors
  • There is a big KDE presence. This is not unexpected. :)
  • There are a number of smaller companies in the Qt ecosystem, such as Codethink, Collabora (my own employer), Blankpage basyskom, and medical-insight.
The Individuals

Notes when interpreting this graph:
  • I chose to cut out Nokia/Trolltech, because otherwise, it would have been pretty pointless. They contribute a lot, and there are a lot of them. Besides, for me at least, it's more interesting seeing the individual contributors.
  • There is at least two ex-Nokian/TT people here:
    • Anders Bakken, whom I have left in because he still occasionally contributes to Qt for his new employer (I think). But part of his number will of course come from his time at Nokia.
    • Benjamin Meyer is an ex-TT guy, who left a few years ago. Since he never committed from either a TT or Nokia address, there's not much point to removing him, I think.
Of interest to me when looking at this graph:
  • Contractors seem to be doing quite a bit (Shane Kearns, Mikka Heikkinen). Not surprising.
  • Ritt Konstantin is a hero.
  • There are a lot of people working on translations outside of Nokia (Ritt Konstantin, Laszlo Papp, Jure Repinc, Victor Ostashevsky), and just like we saw on the organisations graph, the numbers get a bit skewed as a result
  • The numbers drop off very quickly, especially if you were to disqualify translations from these figures. This is a bit disappointing, but not surprising, given the hurdles to contributing to Qt.

Wednesday, 27 October 2010

Qt: the process is broken

After reading Albert's thoughts about the state of openness in Qt, I felt like I had something to contribute, and contribute I did in the comments on his post, but I don't think it is enough.

While I encouraged him to "please do stick in there", we're not exactly just at the start of this process anymore; Qt's moves towards opening up have been well received, but in the words of Thiago, "now we have to do more".


At the heart of it, I think it all boils down to two things:
  • Lack of manpower
  • The process to integrate merge requests is clunky and slow
So... what do we do?

Lack of manpower
This is actually probably is a much bigger problem than just merge requests in that there just aren't enough skilled people working on Qt itself (with push access), and the amount of work they have to do on their own tasks means there simply isn't enough manpower left over to work on the merge request queue, especially given the hoops that the current process requires the committers to jump through, which amount to an awful lot of effort and manual checking.

Solution:
Get more people. Perhaps it's not even out of the question to dedicate a few people to working on community management at a technical rather than twitter-level.

While marketing Qt is great, and I'm far from knocking those efforts, you also need to have a healthy developer community around Qt itself, and right now, that doesn't exist. If you have developers dedicated to furthering that community, you will reap that investment further down the road.

I imagine that people in this sort of a role would act as the 'grease in the wheels' while Open Governance moves slowly but surely along, helping in reviewing merge requests (knocking back those with simple mistakes) and working together with others inside of Qt to integrate the finished ones, basically moving all of the burden of integration off of the product developers.

Think community managers on steroids. With push access and the knowledge to use it.

The process is clunky and slow
Work on the process. Open Governance is addressing this, but so far, there's been a lot of talk, and little (visible) action thus far.

It needs to become more of a priority. The quicker this is solved, hopefully, the more manpower Nokia will gradually have to shift onto people other than their own tasks, and let the wider community worry about what concerns them.


Conclusion
(also known as, "where I state the blindingly obvious")

Let's face it, it's great to have access to the source repository, it's great to be able to submit changes, it's great to have an open license.

It's not so great to have your work ignored after making requested changes, or worse still, ignored completely.

This needs solving.

So, Nokia, are you really invested in making Qt as good as it can be?

[usual thanks to my good friend, John Brooks, for proofreading and putting up with my horrible use of English]

Tuesday, 5 October 2010

facebrick: the phoenix rises

I'll keep this one short, since technically it isn't my baby any more.

Facebrick is back, much kudos to Ahmad Mushtaq for his work in locating (and fixing) the problem caused by some Facebook change or other, and also to Kamilla Bremeraunet, former GSOC student, for her work in packaging and distributing the fixed library - as well as offering to take up Facebrick maintenence, an offer I have (gratefully) accepted. :)

So, Facebrick is back in operation. Enjoy! It's great that the source is open so that someone interested can continue on with this - this is what OSS is all about.

travelbug

subtitle: "why can't I stay in one country for more than three months this year".

On the one hand, it's great to see people I haven't seen forever - or for a very long time, and new places... but on the other hand... I really don't like the travelling part of travelling. Ironic, given how much of it I'm doing this year!

I've been to Norway to spend some of summer with Kamilla's family.

I've gone to Australia to spend some time with my family - plus the first real time off I've had in a while (which was lovely, I went to the beach, even though it's technically winter there, and went swimming).

I returned, after all this, back to the UK for a day, before flying out to Helsinki for work. It's been good fun. I've got to meet some great fellow Collaborans (I'd have linked to Siraj's blog, but I can't seem to find one that looks recent.. Hi Siraj! :)), and a lot of other cool people.












Helsinki is quite a nice place. I'm enjoying my time here. But I am looking forward to going home. :)