Qt is going modular

Recently a project called "Qt Modularization" was initiated. This is a project that aims to modularize Qt at every level. As you may know already, Qt is currently modularized on the DLL level; each module has its own DLL. However, the project as a whole is still monolithic; all the code is being hosted in a single repository, and you cannot build a leaf module without building the modules on which it depends at the same time. This project aims to change that, so that the modules are hosted in different repositories, with a separate maintainer for each, and the modules may have different release schedules.

This project was motivated by many factors: One is that we want to be able to release some modules  more frequently than others. This is particularly important for modules where development is very rapid, such as QtWebKit and QtDeclarative. Another reason is that having a single repository for all Qt code simply does not scale, neither from a technical nor administrative viewpoint. Having completely separate modules will allow teams and contributors to work independently on separate modules, and it also allows testers and developers to focus on building and testing one module, which can be based on stable base modules.

The actual way Qt will be divided is presented in the diagrams below. First you can see the current state of Qt and then what we are planning. We don't have a solid release date yet, but the project is fairly high priority for us. Note that the Qt kernel module could be divided further at a later point, but we chose to keep those modules together for now, since they have quite heavy dependencies on each other.

Please note that this is just the current plan, and is subject to change.



Needless to say, this will have quite a substantial impact on how development of Qt happens. Gitorious will start hosting several repositories, and this will have an impact on everyone who has a clone of Qt. However, once the initial confusion is over, we hope that this change will make it easier to use Qt, work on Qt, and contribute to Qt.

For those who are not interested in looking at specific modules, but want the whole Qt package, we are looking at possibilities for adding a master repository which contains all the others. Currently we are considering git submodule and Android's repo, but we are open to other suggestions as well. We will also continue to offer releases containing all current Qt modules.

Blog Topics: