Mittwoch, 29. Dezember 2010

Beta of the Qt Creator Buildservice Plugin released (Project Bretzn)

What is Project Bretzn?

Apart from being a tasty Bavarian bread-snack, Bretzn is a code-name for a collection of technology aimed at solving a problem which has existed in software development for a very long time: How do you get your applications build for all available platforms and get it to your users?

In the open source community, we already have many individual bits of this dream in place. We the great cross platform toolkit Qt, we have the powerful openSuse Build Service which allows for the easy creation of binaries for a great number of Linux distributions, we have the Open
Collaboration Services (OCS) which allows for the easy and socially adept distribution of packages both to and from central software download sites such as, and we have a great many powerful integrated development enviromnents such as Qt Creator, KDevelop and Eclipse.

In the spring of 2010 these many powerful and successful technologies and tools made up mostly isolated islands, and it seemed the obvious choice to begin the process of bridging them. Finally, in August the same year, the project was begun and and announced during the openSUSE conference in October. Project Bretzn would make it possible, with a few clicks, to publish software projects directly from the IDE. The development of this project is sponsored by Nokia

Connecting the Dots

Project Bretzn, then, is not a single piece of software, but rather an attempt to fill in the holes which exist in what is already there. As it stands, the project has produced two core pieces of software:

A thin client in the shape of a Qt Creator plugin, accessed through the Tools menu in the IDE
. The plugin lets you perform all the actions required to get data sent to the various build services and publishing sites, by contacting the server part, which then distributes the information to the appropriate places. The implementation of this also prompted ammending the Attica library with new features. As some will already know, Attica is the full featured implementation of a OCS client library built by KDE which is now officially included in the MeeGo platform as well.

A server library, designed to plug into the OCS reference server implementation. This is the part of the system which draws the lines between the dots: It contacts any number of build services that you request your software to be built on and when you request it, it publishes the results of those build jobs on the distribution sites.

The system further has the important distinction of being open:Not only is the source code for the two pieces of software above is freely available as you would expect, but also that the web API created as the communications layer between those two components is free and open, and indeed a part of the Open Collaboration Services specification as of version 1.6.

Publishing Renewed

The best software is that which gets out of your way to let you do your work, and Bretzn was designed with this in mind. What this means is that when you are ready to publish your software, you call up the tool and enter the required information only once: If the same information is required for multiple publishing sites, it is only entered once. The source archive is created for you when you select which folder contains your source code, and you only need to select the targets you wish to build for to get binaries for your application.

Even with the build services, building the binary packages does take a while. So, Bretzn was designed to not require you to follow this all the time, but rather as a system in which you create the build jobs, and then simply close the plugin and let the build service work, while you continue working yourself.

When publishing the software, you will normally have to give notice to many people and organisations if you wish for that knowledge to be spread. Through Bretzn, this information can be pushed to these people as the publishing happens. Information can be shared through the social networking features of the Open Collaboration Services on the sites the application is publiched to. For example, users may be subscribed to updates about a single application, or to activities performed by a friend, which are for example the publishing of applications.

What do we have today?
Today we released the beta version of the Plugin for Testing. We plan to release the final version together with the server code, documentation and more information about other parts of Bretzn next week.

  • You need the latest, currently unreleased, version of attica.
  • Pull libattica from
  • Build and install as usual using CMake, attica only depends on Qt

Qt Creator:
  • Download the source tree here:
  • Add "buildservice" as remote branch and pull it in, you now have src/plugins/buildservice/
  • Build the whole shebang using qmake and make
  • Start qtcreator, find the buildservice entry in the Tools menu
  • Read the explanation on the first page of the build service plugin

Both only require Qt, in a recent version (4.7 will do, 4.6 is likely fine as
well). A runtime dependency for the plugin is the "zip" utility.

Have fun


Sho hat gesagt…

So where's the KDevelop version? :)

Frank Karlitschek hat gesagt…

It should be super easy to integrate with KDevelop. I hope the KDevelop guys could help with that. :-)

leinir hat gesagt…

@Sho: The Qt Creator plugin is designed specifically with porting in mind :) Sebas built it so that the actual Qt Creator integration is all of a single h/cpp file pair, and everything else can be taken verbatim and used in other IDEs, such as, yup, KDevelop :)

leinir hat gesagt…

If you don't want to check out all of Qt Creator from the branch to compile the plugin, the code is also available here: - this is likely very interesting to those who want to use it to integrate it into other IDEs ;)

scattino hat gesagt…

You also mention Eclipse for the OCS integration: is there already any project about it?

leinir hat gesagt…

@scattino: What it says is that the Qt Creator plugin is built in such a way that it will be easy to build integration for Eclipse, not that we as the original authors have built something like that, or even that we are going to. But, grab the tarball i linked above, if you're interested in building that integration :) It should be fairly simple to integrate it into Eclipse - it just won't be one of us doing it :)

shavedwookie hat gesagt…

Sounds awesome, but...

videos or it didn't happen. ;P

leinir hat gesagt…

@shavedwookie: Totally, video is coming ;) i'm just waiting for the word go :)

Abhishek hat gesagt…

Hey sounds great, but when I am trying to git clone this it give following erro "fatal: not found: did you run git update-server-info on the server?" please update ..

Alexander R. hat gesagt…

Is this project still in development? Would be great if more people know about this plugin, I only found it by random.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.