Thursday, October 27, 2011

Introducing Inqlude, the Qt library archive

Today I would like to introduce you to Inqlude, the Qt library archive. The goal of this project is to provide a comprehensive listing of all existing libraries for developers of Qt applications. So if you are creating applications using the Qt toolkit, and are looking for libraries, components or modules to use, Inqlude is meant to be the place where you find all information and pointers to get started.

The Inqlude project started at the KDE sprint at Randa this summer, where we discussed the idea of a "CPAN for Qt". There is a thriving ecosystem of libraries around Qt, KDE obviously being a big part of it. But there is no easy way to get the complete picture of it, and simply get the libraries which fit your needs best, independent of if they are part of Qt itself, of KDE, or of any other of the numerous places, where people publish their code. Other languages and frameworks have systems for this, like Perl has with CPAN, or Ruby has with Rubygems. So these served as inspiration and I did a prototype on my way back from the sprint on a Swiss train.

During the Qt contributors' summit, the desktop summit, and recently this week at the Qt contributors' day at the Qt DevDays in Munich, we had more discussions about it, collected feedback on the prototype, and refined the concept. During the last SUSE hack week I sat down to bring the code and the web site up to an alpha state, where it could serve a useful starting point for the project, for application developers to find libraries, and for library authors to contribute data about their projects.

The main component now is the web site. It's listing the data about Qt based libraries. These are only pointers, there is no hosting of code or packages involved. Inqlude is not meant to duplicate any of the functionality of code hosters, or distribution packaging systems, but integrate well with what's already there.

The meta data is stored in a git repository. So it's easy to contribute, following the well-known procedures of submitting patches. More information can be found on the "how to contribute" page on

In addition to the web page, there is an inqlude command line tool. This can be used to get libraries and install them locally. Right now it's a prototype. It works with openSUSE 11.4 using the openSUSE build service as source. In the future we'll add more backends for other distributions and add more information about packages, so that you can easily install the libraries you need. Again this is not meant to duplicate any existing tools, so we'll make use of the native package management stacks and build tools which are already there.

The command line tool is inspired by the Ruby gem system, which makes it amazingly easy to distribute and get software. The inqlude command line tool prototype uses this mechanism itself. See the instructions how to get and use it on the page for more details. With C++ it's of course more difficult to distribute software, because there is a build step. But here comes the open build service to the rescue, which takes care of this step.

So what's next? This blog marks the official beginning of the alpha phase. The general structure of the web site is in place. So the next steps are to complete the collection of library data, and make the web site ready for end users. When this is done, we'll enter the beta phase. The goal of this phase will be to make the command line client ready for end users. Then we'll release Inqlude as 1.0, ready for production use.

If you want to help, you are more than welcome. Just go to the mailing list. There we'll coordinate development, collect data, discuss, and help, if you have questions. See you there.

1 comment: