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 KDE-Apps.org, 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.
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 https://projects.kde.org/projects/kdesupport/attica/repository/
- Build and install as usual using CMake, attica only depends on Qt
- Download the source tree here: http://gitorious.org/+obs-creator/qt-creator/buildserviceplugin
- 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.