Apart from being a tasty Bavarian bread-snack, Bretzn is the 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 to your users?
This is particularly a question for the many developers of KDE applications that are not part of KDE's six monthly Software Compilation releases. These developers must either provide binaries for a range of distributions themselves or hope that distribution volunteers will do the packaging for them.
However, there are already a number of services that can help to solve these problems. We have build services (such as the openSUSE Build Service) that allow the easy creation of binaries for many different Linux distributions (with other platforms in the work!), we have Open Collaboration Services (OCS) which allows easy, socially networked publishing of packages both to and from central software download sites such as openDesktop.org and KDE-Apps.org and we have powerful integrated development environments (IDEs) such as Qt Creator, KDevelop and Eclipse.
Until now these technologies and tools made up mostly isolated islands and it seemed an obvious choice to try bridging them. A project aiming to do just this began in August 2010 and was first publicly announced by Frank Karlitschek at the openSuse Conference in Nuremberg in late October: Project Bretzn would make it possible, with a few clicks, to publish software projects directly from the IDE - and it would all happen before the end of the year!
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 amending 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. The Qt Creator plugin is build around a simple library to make it easily portable to other IDE's like KDevelop - consider this an invite!
- A server library, designed to plug into the OCS reference server implementation as published by the Social Desktop project. 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 packages resulting of those build jobs on the distribution sites. The publishing system requires only of the remote sites that they implement the content module part of OCS, something that many already do.
Moreover, a KDE client to download and install applications is being developed (find info here). The screenshot shows a first prototype!
Most importantly, all this has the distinction of being open: not only is the source code for the software above freely available as you would expect, but 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 principle 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. Therefore, Bretzn was designed to not require you to follow this process in its entirety. It is rather conceived 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 organizations if you wish the software to be publicized. Through Bretzn, this information can be pushed to 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 published 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.
Who Is Working on Bretzn?
The project is a collaboration between h i v e 01, Open-SLX and Nokia, and specifically it has been the task of Sebastian Kügler, Dan Leinir Turthra Jensen and Frank Karlitschek to get the project working. Over the last four months, they have been working tirelessly to construct the bridges which make up the Bretzn project, both in software by writing the code, and socially by speaking with a lot of people about the goals of the project to find out just what is needed, as well as making those whose systems Bretzn bridges aware of what they have been doing.
And, It Is Available Right Now
Though the majority of the code has been developed in the open, the various bits of code have now been officially released:
- The new version of LibAttica required for the tools was released
- The Qt Creator plugin has been released
- The OCS library extension has been released and is available
We invite you, as developers of KDE software, to use the results of this project and bring your software to the world using Bretzn. Presently, the Bretzn plugin is only available for Qt Creator, but since all of this software is released under free licenses the team hopes to see Bretzn integrated into other IDEs, particularly KDevelop. Furthermore, help is welcomed in improving the core software as well as providing plugins to support other buildservices or work with more social networks like identi.ca and facebook.
You can find more information about Bretzn and download it at the Social Desktop website.