In addition to talking about the Push with Ableton, we had a chance to talk about joining the Qt Project as a contributor.
Ableton started contributing to Qt last year, what was the thing that got you started?
Working closely with the Qt Project is part of the Ableton Open Source strategy. It is just a natural step! Our products are invested in the Qt technology and it is unlikely that we will switch GUI frameworks in the coming years. Sometimes we hit the limits of Qt and we file specific bugs whenever we can, so becoming more involved with larger initiatives will help us ensure that Qt addresses our needs in the future.
We have already been working on contributing patches we made to Qt during our development process, some of which will be released as part of Qt 5.6 and 5.7, depending on when they reached the Qt repositories. The contributions to date have been related to QML plugins and use of QAbstractItemModel from QML. We expect to be able to make more significant contributions soon.
What would be an easy way to start contributing to Qt?
Filing bug reports is an easy way to contribute to Qt. Responses to bugs don’t always result in fixes in Qt, but sometimes result in good ways to redesign, using QML in a more-idiomatic way to avoid the bug. Adding minimal representative test cases with bug reports helps with getting quality responses from Qt developers.
Code contributions to Qt are a little bit more complicated, but the process of using gerrit is well-documented. We already use Git at Ableton, so from a tooling point of view, we didn’t have much more to learn after signing the Contribution Agreement.
Attending the Qt World Summit and previously the Qt Developer Days was a useful way to get in contact with Qt engineers to review some of those contributions.
Any tips for other companies that are thinking of having a stronger presence in the Qt community?
Start, then iterate. Filing quality bug reports is an easy and cheap way to begin exploring the community and to start to identify the people working on various areas of Qt. Reading the development mailing list and some commits in the Git repos also creates a broader picture of how Qt is made.
From there it’s just a case of turning from an accessor into a mutator. Getting to grips with Git and the contribution process is a hurdle, but it comes with the reward of not having to carry fixes or feature extensions in external patches.
Beyond that, a company needs to examine the benefits, come up with a strategy and think about how that presence fits into the structure of the organization.
What do you see as the benefits to Ableton in being present in the Qt community?
Contributing helps us to make more coherent software by ensuring that Qt has the interfaces we require and also by ensuring that we use the interfaces correctly and stay up to date with development and new releases. It is important to us that Qt is not a read-only black box.
Have you been active on the forums and mailing lists? Do you use them as information sources?
The forums and mailing lists are often good places to find information and best practices relating to Qt, but our engineers are not currently active in them. Often we find it is easier to walk to a knowledgeable colleague to ask a question instead of posting to the forums.
We expect to become more active on the development mailing list to discuss design issues relating to features we contribute.
How do you see the community being able to work together with you?
We are hoping for feedback on the design and implementation of code we submit to Qt in order to learn more from the experts. Unfortunately, a lot of the code which goes into Ableton products is not Open Source so we can’t get direct feedback on all of it, but it would also be great to get some feedback on the libraries we have already published for the community on Github.
One of those libraries, Aqt-Stylesheets was presented at Qt Developer Days 2014 and awarded the ‘Most valuable lightning talk‘.
The Aqt-Cassowary library is generally useful for particularly dynamic layouts and we think it fits well into the QML design model.
How do you balance work on the product and work on Qt?
We’re still trying to figure that out.
Our priority is to create the best quality products we can. There are already some cross-sectional teams in Ableton which work on internal libraries, and an extension of that structure might work for our Qt contributions. To date our contributions have been individual stories in our planning as needs arise. Adding the right balance of structure to that is something we would like to hear other opinions about in the comments!
Again, thank you very much for the discussion, it has been a pleasure to learn how Ableton is present in the Qt community and about the Ableton products.
Thanks again for taking the time to feature us on the Qt blog. We look forward to review feedback from the Qt contributor community, engaging in design discussions about use of Qt/QML in products like Push and our open-source offerings!