Table of Content
Qt Project: Beyond Open Source
Qt Open Governance Whitepaper
The Qt Project is a big step for the Qt community, but it is not a big departure from the path we have been on since the very beginning. All Qt versions have been available under the open source GPL since the Qt 4.0 release in 2005, and some versions have been available under open source licenses since the 1990s.
The big step takes our code base from open source to open governance. Under open source, all the source code is available to all developers in the Qt ecosystem, but code development processes are built around the assumption that almost all code is developed by the paid Qt development team and select contract contributors. Under open governance, code development processes are changed to accept contributions from any member of the Qt ecosystem who has good ideas and proven coding skills. Whether good ideas come from the development team within Nokia or from community contributors, everyone works with the same tools and processes.
The Qt Project benefits businesses using or evaluating the framework by driving improved quality, enhanced security, long-term value, flexibility, and responsiveness.
The Qt Project is designed by the community to be fair, transparent, inclusive, and meritocratic. It impacts everything including Qt, Qt Tools, Qt Creator, Qt Mobility, and Qt WebKit. It even impacts the domain at which the Qt source is hosted, and includes the formation of a new foundation that owns the domain but not the development process.
Motivation matters: driving quality
An organization produces what the organization values. Not all organizations require the same things, nor do they possess the same skills. Some Qt users build their business on high-performance desktop work, others thrive on embedded system design, and still others work in the mobile space. Qt Project allows all these organizations to code the value they desire and push their work upstream in an efficient manner. This reduces wasted effort required to maintain multiple branches and ensures the highest quality possible in the shared code base.
More specifically, an organization tends to produce what is valued by members of the organization who hold status. The Qt Project governance model invests power in people deep in the code base; status and respect come from great contributions.
“The Qt Project is a welcome development in the evolution of Qt. This move should allow for participation in the project from a broad set of developers based on the quality of their code. This is certainly a welcome change.” — Jim Zemlin [linkedin.com], Executive Director, The Linux Foundation [linuxfoundation.org]
Selecting a framework like Qt involves more than finding the right tool for today’s challenges; your investment in learning a framework needs assurance of long-term value. A framework on the right trajectory provides a release cadence that solves coding problems you have yet to encounter. For the last several years Qt has delivered a significant release every nine or ten months.
The Qt Project provides the scale to continue this progress, and even accelerate it. As Qt and Nokia continue to invest in the platform, now many more contributors will be able to drive the framework forward. Qt is critical in such a broad variety of settings these days that it is no longer possible to build everything in house and maintain the quality and performance users have come to expect from the framework.
“Most people think that “Open Source” is just about the license. An open development process is so important because it drives the future.” — Peter Winston [linkedin.com], President and CEO, ICS [ics.com]
Segments of the Qt community may choose to take the Qt framework in directions of their own choosing. For example, community members are building the tools for Android app development through the Necessitas [sourceforge.net] project, including a port of the framework, a plugin for Qt Creator, and the Ministro installer application [play.google.com]. The Necessitas project is still under development by an active group that would welcome additional contributions.
Community members do not always need to bootstrap a port themselves, although some do regardless. For example, there are currently two paths available for Qt developers targeting iOS. Research conducted by Nokia developer Eike Ziller [labs.qt.nokia.com] provides an open source plug-in for UIKit, while a commercial release by independent developer Ian Dean adds support for OpenGL, Qt Mobility, and other features. Ian presented the alternatives [slideshare.net] at Qt Developer Days 2011.
The November 2011 adoption of the QNX operating system by Blackberry manufacturer Research in Motion is a perfect example of the power and flexibility of the Qt open source model. QNX is a real-time-operating system that is extremely popular with embedded systems developers.
Here are the major milestones on the road to the new Blackberry OS based on Qt on QNX:
- 2009: Qt introduces a QNX platform port [qt.nokia.com] in the Qt 4.6 release with the explicit guideline that the port would only be supported by third-party companies or members of the Qt community.
- 2010: Community contributors help polish and optimize the port to the point that the OS was strategically interesting to RIM.
- 2010: RIM buys the company who built QNX and initially used the technology to tie their smartphones to in-car infotainment peripherals.
- 2011: The last piece of the puzzle drops in place when Digia announces commercial support for QNX [digia.com] beginning with Qt 4.8.1 in 1Q12.
“With Qt on QNX our developers get an API so nice you don’t need the docs. QNX is running in more devices than any other OS we know of, and with commercial support we have everything we need to change our OS.” — George Staikos [linkedin.com], VP, Research in Motion [rim.com]
Direct community action speeds progress by eliminating layers of delay caused by resource bottlenecks. This will come to bear in quashing bugs and in building features. In both cases, if developers find something they need added or fixed, and can contribute or help contribute the feature or patch, it’s done. This is particularly interesting for businesses investing in Qt. The new open governance process allows important features, fixes and improvements to be submitted and maintained upstream, reducing development cost and improving code maintenance.
“Qt Project levels the playing field for all developers with the skill and will to contribute great code, and allows contributors to work in areas that matter most to them. This way of working will continue to accelerate the Qt framework in ways that matter: feature enhancement, platform support, performance optimization, and rapid bug resolution.” — Lars Knoll [linkedin.com], Chief Maintainer, Qt
In preparation of the new governance model, plenty of technical changes were needed to accommodate new workflows and to ensure open communication among developers across organizations:
- The code base has been restructured [labs.qt.nokia.com] (PDF) to make it more modular
- There is a new code review system that scales to the demands of full community participation
- New workflow processes level the playing field for all
- A new non-profit organization [qt-project.org] hosts the code base at a new domain (but has no say in the code development)
How to get started
Learn: If you are interested in participating and becoming part of the Qt Project community, the first place to check out is the project’s website [qt-project.org].
- Enroll: If you have already been working with Qt, you most likely have an account in Jira [bugreports.qt-project.org], our bug tracking tool. If you do not yet have an account, a simple registration [bugreports.qt-project.org] is all that is required.
- Contribute: Anyone with a Jira account can contribute. Our Gerrit server at codereview.qt-project.org is the central place to where patches get pushed, reviewed, and tested. Patches can be reviewed by anyone, and finally accepted or rejected by Approvers and Maintainers.
- Follow: The most important list is the general development mailing list firstname.lastname@example.org [lists.qt-project.org]. We recommend contributors monitor lists.qt-project.org [lists.qt-project.org] for more specialized lists as the Qt Project progresses.