With the changing of development model and licensing, one would think that there was a lot of potential to nurture and grow a Qt hacker community, but at least in my mind, this hasn't taken off quite like I'd hoped it would, although things have been steadily improving, through things like the #qt-labs channel on freenode.
After some recent chatter with a few people on #qt-chat, I started reflecting on just how things are, how they could be, and what could be done to help get them there, and so I'd like to reflect on how to best encourage new development on Qt: the best approach, I think, is to lead by example.
- Join #qt-labs on freenode and talk about what you're doing! We're all interested.
- Start reviewing merge requests! Don't just leave this to the Nokians - the more eyes, the better.
- Submit your own merge requests, if you've got an idea. It doesn't matter if you're not sure about some things, getting the code in the open is the first step - it can always be improved later.
- Look into JIRA for things you can do.
- Find (and fix) things in the Qt API that annoy you.
Yes, you. For all those of you out there who haven't become involved yet: now is as good a time as any.
Don't be scared off by the complexity of Qt. It's a cool library, a cool set of people, and awesome fun to hack on. You may not be perfect, but nobody is, and you can learn. You beginners of today are the hackers of tomorrow.
If you don't know what you could be doing, feel free to ask me, or one of the many other friendly folk on #qt-labs - I'm sure someone can find something to keep you busy. :)
Why, I hear some of you ask, is this important? Well, it's fairly straightforward.
Qt as an application development platform is growing and growing and growing - not just inside the mobile world - and this shows no signs of slowing. This is great news.
Not all Qt application developers will work on Qt itself - but it is something that we should work to encourage as much as is possible in order to match the above growth. The more skilled platform hackers we have, the more application developers we can support. Think of it as a pyramid: you can't have a stable structure without a solid base.
How, then, do we nurture and grow our platform hackers? How do we encourage growth of the community around the code? There isn't a simple, single, answer to this, but I think there is plenty we can do, and the above is a very good step.
However, some of us with a corporate affiliation are already contributing to Qt, and there are a few things that would help encourage more community growth.
Firstly, it would be much better if the community had merit to provide review of what goes into Qt itself, both merge requests and from internal work too. Currently, we can provide review, but it isn't a replacement for internal review.
Not only is this creating a bottleneck, but (somewhat obviously) it doesn't encourage others to take part and become the hackers of tomorrow.
Secondly, everyone should be going through the same processes. A code review in #qt-labs is still a code review, but when some people are made to jump through the hoops of filing a merge request, this leads to a two tier system.
A much better way of doing this, IMHO, is to stick with the idea of having a few reviewers who know specific subsystems, and can accept patches for their 'area' (be it networking, QML, or whatever) - and all patches, no matter their origin, go through merge requests.
Lastly, the remaining private infrastructure should be opened up as much as possible. No private pastebins, no private test server, publish the results of the integration runs and test suites on platforms. (note: I believe that work is underway on this, I'm just including it for the sake of completeness.)
There are other points here which are useful for an open future, but I've deliberately kept the list short - walk, before you can run. :)
Finally, I'd like to thank Nokia for purchasing Trolltech, and starting the road to opening Qt development. You've started something very cool and awesome here, and I'm excited to play my role in this. I hope that some of the ideas and points I raise here can prove useful to moving forward to a bigger, better, more awesome future.
[I'd also like to thank the following people for their time and feedback on this post:
- John Brooks
- Thiago Macieira from Qt
- Bradley Hughes from Qt
- RevdKathy from Maemo]