Last week in Qt development (week 18, 2012)
This post is part of an ongoing series about developments and discussions in Qt.
Some parts of this report are still under discussion, and don’t necessarily reflect the final state of Qt 5. The target audience is people involved in Qt development itself, but without the time to follow everything that happens, and others with a strong interest in Qt, Qt 5, and the community.
This week we cover the restoration of source compatibility in QRegExp, visual metrics for contributions to Qt, timeline for a Beta release, and feature development in the printing system.
QRegExp constness change reverted.
Last week I noted that several methods on the QRegExp class were made const, and that would have an impact on user code.
After discussion, it was decided to revert that change to QRegExp, so it is no longer a porting burden. The reason for reverting the change is that it doesn’t provide enough benefit for the cost it incurs.
Qt contributor metrics
New weekly generated statistics are showing the extent of contributions to Qt development by organizations and individuals. The plots show how many different organizations are contributing to Qt through code, and show a growth in the number of contributing organizations. Also very relevant is the number of individuals who are contributing to Qt. The ‘individuals’ group is the second largest contributor, next to Nokia. This is one of the signs of health in Free software projects which are open to contribution (such as the linux kernel, too), as it indicates the tendency for people to ‘scratch their own itch and contribute upstream’.
The plot of employer contributions over the last 16 weeks clearly shows a significant contribution from KDAB to Qt, second only to Nokia. The plot limited to the qtbase repository shows the same result, as does contribution since the beginning of the Qt project.
Ongoing efforts in documentation modularization
The documentation of Qt 5 continues to be modularised. The completion of the task is one of the major goals of the Qt 5 beta release. A useful JIRA dashboard has been set up to track the progress. Joining the documentation cleanup effort is a good starting point for new contributors to Qt 5.
Timelines for Qt 5.0 beta and beyond
The schedule of the Qt 5.0 release is slipping slightly from targetting the start of the summer to now the end of the summer. The remaining goals towards creating the beta reflect the fact that far fewer changes to APIs are being made now, though the list may be incomplete (we may yet see more changes to the plugin system).
CI with reverse dependencies
One of the pain points in contributing to Qt has been accidentally breaking the build of a module or the tests of a module with a patch. Each patch contributed to Qt goes through a review process followed by a test and integration process where the code is built and tested with the patch. However, up until now, the building and testing has only been done on one repository at a time, which meant that a patch which integrates properly with the qtbase module can cause failures in dependent modules such as QtDeclarative.
To tackle that problem a new system was introduced to build some of the dependencies as well when integrating. It is hoped that this will reduce the amount of breaks introduced despite the continuous integration, and encourage developers to test with the dependent modules before staging their patches.
Ongoing efforts on the printing system
John Layt introduced himself soon after the launch of the Qt project as the QPrinter maintainer. One of the goals has been to bring platform support for printing up to an adequate level of quality.
Bug triaging work by John in the printing system showed some release blocking bugs for the Mac platform which already had fixes underway.
Some interest seemed to grow last week in the issue of cross compiling of Qt 5. Patches appeared for cross compiling for windows from a debian system, and separately for targeting Android.
Many more patches have been submitted too for the Android port of Qt 5. It seems to present some challenges such as not being fully POSIX compiliant, stl non-conformities, lack of standard shared memory interfaces etc, but the porting is continuing at pace.