Glou WoC Week 3 – Handle my Stanza

This report is released weekly within the scope of the Glou Winter of Code.

The starter for last week was XmlElem obtaining a list of children and a link to its parent. That also means get_string of XmlElem now delivers the complete XML string inclusive the children’s content. After that it was all about XML namespaces. First XmlElem and XmlAttr have been a bit reshaped to properly support namespaces. XmlNsDecl was introduced; it represents namespace declarations in XML elements. By looking through those declarations one can find a so-called namespace scope which maps element and attribute prefixes to their actual namespaces. All XML stringify functions now use those namespace scopes to properly resolve prefixes for elements and attributes. The good thing here is that the whole namespace handling and prefix resolving is done transparently. So one more thing libxoup users won’t have to care about.

After that groundwork was done it was time to touch the XMPP / stanza handling code again. The XMPP handler tree had to yield for a simpler and more convinient approach. Now one globally can register a StanzaHandler, which then, on initialization, sets up triggers for every XML element (children of XMPP stanzas) it wants to handle. Those triggers will fire whenever such a specified element occures in the stream. In most cases the handling of a stanza will result in some event that’ll spit out some object (e.g. a MessageReceivedEvent which will deliver a Message object). In consequence StanzaHandlers are now also able to provide a serialize method which takes a Stanza object and then converts it into bits and bytes ready to be sent over the network.

Next to the above mentioned stuff a few minor things were also accomplished. Some more utility methods made it into the code and some bugs were fixed. Also, on top of the new XMPP / stanza handling, the implementation of XMPP resource binding has been started. All in all I would say we are looking back at a productive week :) .

This week the focus is on testing (mostly the code that was implemented during the last week), on polishing, fixing bugs, completing the examples and adding more documentation. Also the release of libxoup 0.1 is planned to happen this week. After that, if there is time left, the integration of libxoup into the existing parts of libglou will be prepared.

That’s it everyone. See you again, as always, next week on monday. Have a nice week.
- Sven

Glou WoC Week 2 – XMPP Streams

This report is released weekly within the scope of the Glou Winter of Code.

Another week passed that brought libxoup one step nearer to its first release. First of all the XoupXmppConnection obtained its backend, XoupConnection. The next step was to implement XoupXmppServer, which listens for incoming XoupXmppConnections. That means a XoupXmppConnection can now receive its data from the network, and hasn’t to be fed by hand anymore. Then there was time to concentrate on the main task of the week, the handling of XMPP streams (which basically means handling the XMPP <stream> element). After the XoupXmlElem was a bit enhanced with stringify functionality, XoupXmppStreamHandler was added which is responsible for stream handling according to the XMPP standard. As result establishing XMPP streams works now.

Besides the stream handling, the test system was updated. Every testcase is now compiled to an own executable, which makes testing easier as it is more stable against segfaults and other such nasty things. Furthermore a roadmap had been worked out that outlines the goals and the timeline for the first milestone of Glou.

For this week, the main goal is to implement stanza handling, i.e. parsing XMPP stanza elements (message, presence, iq) and emitting events when a stanza is received.  The second task is to enhance the XoupXmppStreamHandler with some better namespace and error handling. Those are pretty much the last blockers for the libxoup release.

That’s it for the report of week 2. Read you next week :) .

- Sven

Winter of Code – Introducing Project Glou

Today I’d like to introduce a project I have been working on for quite some time now (about half a year it seems): Glou [1], a project centered around free and open games. The vision of Glou is to create an open gaming network. First of all that means a place where people can meet to play and enjoy games. Glou aims to be capable of all things one expects from such a network: list servers and open matches, give the ability to join and / or host matches, see what your friends are playing, player scores and statistics, player matching, community features (friendslists, chatting, etc.), and much, much more. Furthermore, due to its open and free nature, it will enable (open source) game developers to build communities around their games more easily. With the big amount of good quality open source games out there Glou and the open gaming network could help to finally create a wide community around open and free games.

Glou understands itself as an umbrella project, and consists of…

  • A set of open standard protocols that describe the communication of the various components in the open gaming network.
  • An open API for games, so they can easily implement those protocols.
  • An open reference implementation of a Game Community Server.
  • And finally a community centered around free and open gaming.

The whole network is decentralized and built upon XMPP. Detailed information about the architecture of Glou is available on our architecture page on the Glou homepage.

A Short History

The Glou Project came to life in discussions on mailinglists and IRC channels of several open source projects and communities, like Freedesktop-Games, and GGZ. After a first draft of the open gaming network architecture had been worked out we contacted the most influential open source games out there, in the spirit that Glou should be a cooperation of the whole open source gaming community. Since then many developers of open source games joined the Glou mailinglist to watch the progress of the project and give valuable feedback. From this point on the team of Glou developers and supporters has been growing and drafting and coding went on steadily until today.

Currently we have reasonable drafts for the protocols. Libxoup, a leightweight XMPP library that’ll serve as base for libglou (the game API), is near its first release, while the other components are still in an early state of development.

Winter of Code

As one can imagine, the scope of this project is quite big, and we had to notice that we wouldn’t be able to bring it forth just in our spare time. So, after some thinking, I decided to completly concentrate on the project. Pulling some strings I managed to get about half a year of time, that I will now invest in working on Glou. Voila, the winter of code [2].

From now on I’ll post a weekly status report here every monday to keep interested people updated. And now, despite it is tuesday, let’s just jump right into it:

Week 1 – Review

As mentioned, the current focus of development is on libxoup. Since I didn’t work on libxoup for about two months, I used the first days of last week to get a feeling for the code again. There were also some patches which still waited to be applied. After that XoupEvent and XoupObject got a little cleanup and complete documentation. XoupIo was added (and fully documented) which is now responsible for IO activity and IO event handling. Finally XoupConnection and XoupServer (the nice socket wrappers) were completed.

This week the major steps towards the first release of libxoup will be taken, and if we are lucky we will see the release by the end of the week. Also a roadmap will be published describing the timeline for the first milestone of the Glou Project.

Concluding I’d just like to say that I’m looking forward to the time I’ll spend working on Glou. Who knows, maybe by the end of the winter we’ll see the first games supporting it?

Thank you for reading!
- Sven

PS: If you like the idea of Glou and are interested in our project, why don’t you subscribe to our mailinglist? Great! :)

[1] The name Glou stands for Game LOUnge
[2] Do you know the Google Summer of Code? ;)

Aktion: Mal 5


Knapp eine Woche vor der Bundestagswahl am 27. September soll diese kleine Aktion noch einmal die Motivation der Piraten stärken ein ambitioniertes Ziel zu erreichen…

Aktion: Mal 5

Bei der Europawahl 2009 konnte die Piratenpartei aus dem Stand knapp 1% der Stimmen erreichen. Das ist schon ein beachtliches Ergebnis für eine junge Partei. Aber nun wollen wir mehr: Unser Ziel für die Bundestagswahl sind 5%. Das wird zwar nicht einfach, aber bekanntlich mögen wir ja Herausforderungen…

Um von 1% auf 5% zu kommen müssen wir also nach Adam Riese 5 mal so viele Piraten mobilisieren wie bei der Europawahl. Du hast bei der Europawahl der Piratenpartei eine Stimme gegeben? Nutze jetzt die Chance aus deiner Stimme fünf zu machen!

Überzeuge Freunde, Bekannte, Verwandte, Kollegen, Kommilitonen, Interessierte und auch alle Anderen, die bei der Europawahl nicht Piraten gewählt haben, davon bei dieser Bundestagswahl der Piratenpartei ihre Stimme zu geben. Sobald du 5 Menschen überzeugt hast (natürlich inklusive dir),  teile es der Welt und den vielen anderen Piraten mit. Sende eine kurze Nachricht mit folgendem Inhalt via Twitter:


Natürlich kann (und hoffentlich wird) es passieren, dass du es im Laufe der Zeit schaffst noch mehr Leute von der Piratenpartei zu begeistern. Auch das sollte die Piraten-Community wissen. Twittere einfach #piratenmal6, #piratenmal7, usw. Wir sind schon gespannt, wer es schafft die meisten Neu-Piraten zu “sammeln” ;) .

Die Aktion soll zeigen, dass sich was tut, dass wir Menschen bewegen können und soll andere Piraten und Sympathisanten motivieren kurz vor der Wahl noch einmal mit voller Kraft Überzeugungsarbeit zu leisten. Natürlich soll die Aktion auch für dich selbst ein Anreiz sein nochmal Leute aus deinem Bekanntenkreis anzusprechen, aus dem Haus zu gehen, Werbung zu machen usw.

Zum Abschluss noch ein paar kleine Regeln:

  • Überschneidungen: Wenn ihr in einer Gruppe andere Leute von der Wahl der Piratenpartei überzeugt habt, müsst ihr die “Überzeugten” unter euch “aufteilen”. Überschneidungen darf es natürlich keine geben.
  • Man sollte sich schon relativ sicher sein, ob man jemanden dazu gebracht hat Piraten zu wählen. Jemanden zu informieren genügt da (leider) noch nicht. Deswegen gilt: eure Schäfchen sind nur die, von denen ihr es auch sicher wisst ;) .
  • Kettenregel: Du hast jemanden überzeugt, der wiederum ein paar Leute überzeugt? Ja, die gehen auf dein Konto!
  • Nicht-Europawahl-Wähler: Du hast bei der Europawahl nicht die Piraten gewählt, willst aber trotzdem bei der Aktion mitmachen? Okay, mach das ;) .

Gute Tipps zur Argumentation findet man im Piratenwiki.

Genug geredet, jetzt geht es los! Wenn du schon 5 Leute zu Piraten konvertiert hast, dann ist jetzt die Zeit gekommen es der Welt mitzuteilen: -> Twitter .

Und wenn nicht, dann leg dich in den letzten Tagen vor der Wahl noch einmal richtig ins Zeug! Viel Erfolg und

Klarmachen zum Ändern!

Etwas anspruchsvoller…

Natürlich ist es eine Milchmädchenrechnung, dass wir 5 mal so viele Piraten brauchen, um die 5% Hürde zu nehmen. Also schauen wir uns die Lage mal etwas genauer an:

Bei der Europawahl 2009 haben 26.923.614 Menschen gewählt (von 62.222.873 Wahlberechtigten). Bei der Bundestagswahl 2005 waren es 48.044.134 Wähler (von 61.870.711 Wahlberechtigten). Die Piratenpartei hatte bei der Europawahl 0,9% oder, um ein wenig genauer zu sein, 229.464 Stimmen. Wenn wir nun annehmen, dass bei der Bundestagswahl 2009 so viele Wähler antreten wie bei der Wahl 2005, dann errechnet sich für die 5% Hürde eine Grenze von 2,4 Millionen Stimmen. Im Vergleich zum Ergebnis der Europawahl sind das also nicht 5, sondern 10.46 mal so viele Stimmen. Großzügig gerundet sagen wir also 11.

Das macht die Aktion Mal 5 natürlich zu einer etwas anspruchsvolleren Aktion Mal 11. Wir sind gespannt: Schaffst du es 11 Leute für die Piratenpartei zu begeistern?

Apropos: Die gemachten Rechnungen haben keinen Anspruch auf Vollständigkeit. Selbstverständlich gibt es viele Wähler, die sich selbst informieren und nicht “geworben” werden und wohl leider auch Ex-Piraten die bei der Bundestagswahl nicht mehr an Bord sind. Die gesamte Aktion ist nur symbolisch zu sehen und, wie oben beschrieben, lediglich dazu gedacht zu motivieren.

Außerdem: Sei fair wenn du versuchst Leute für uns zu gewinnen. Werde nicht aufdringlich und gib ihnen Zeit über deine Argumente nachzudenken. Ansonsten könnte dein Versuch zu überzeugen einen gegenteiligen Effekt haben. Sei auch nicht enttäuscht wenn es nicht klappt. Meinungen sind vielfältig und nicht jeder wird deine / unsere teilen.


Noya [live]

Since about three months I’m already running a second blog: Noya [live]. It is a live-blog where I post pictures that are taken with my mobile-camera. This stream of pictures maybe gives a closer and more intimate view of the things I experience from day to day.

PS: the latest pictures are also linked in the sidebar on this blog.

Back Online

Getting this blog online again took longer than expected (more than a month, *sigh*). But as always: better late than never! With moving to a new server a few more things changed:
First I got myself a new domain, namely Consequently the blog has a new address: Please update your bookmarks and/or rss-feed-readers.
Furthermore the permalink-structure (the URLs pointing to individuell posts) changed from “blog/index.php/y/m/d/postname” to the more readable “blog/y/m/d/postname”. Again, please update any bookmarks and/or links you have to posts of this blog.
Also the blog is now no longer called “aboutnoya”, but (more neutral, less egocentric ;) ) “”.
Other changes? WordPress was upgraded to version 2.7. I also think about a new design, what you can see here now is only temporary.

Comming up next: Some (hopefully) more interesting posts :) .

When a Blog Gets a New Home

Yeah, you guessed right: the aboutnoya blog will move to a new server. Straight out of the world of Gates and Windows to a friendlier place powered by a VPS running Debian.

PS: the blog might be unavailable from time to time for the next few days until the move is complete. If that happens, just don’t worry and check back later :) .

libsoylent v0.5.0 “let’s talk about…”

Version 0.5.0 brings online-functionality to libsoylent. Want to launch a chat with someone? One function call. Want to see who’s online? One function call. Want to see someone’s online-status? You get it.

This release is also the last one for Google Summer of Code 2008. It’s the result of about four months of work. Phew.

The plan for the next release is that it will be a pure documentation and bug-fixing release. Also in that version: libsoylent will stop taking control of strings passed to it.


  • implemented Telepathy / Mission-Control / Empathy support
  • implemented various functions / methods for IM-information (get online-people, get presence etc.)
  • added communication functions (e.g. launching a chat with someone)
  • added an example for online-functionality
  • enhanced documentation
  • fixed some bugs


libsoylent is available for download at:


Feature requests, questions and related discussion go to the Soylent mailinglist. You can join at:

If you found a bug please report it at:


More information on libsoylent is available at:

libsoylent v0.4.0 “small step, giant leap”

Let me present you the newest version of libsoylent: 0.4.0. Three weeks of hard work went into this release, and in fact so much was added and changed that we decided to skip a version-number. Sorry 0.3.0.

So, what’s in it? More or less a complete people-management-library. Our goal was to create a simple yet-powerful API that “just works”. Hopefully we managed that. If you have no clear picture of what libsoylent is or just want to know more about it, look at the examples we’ve put up on the libsoylent-page.

What comes next? Because the library is that new and fresh, much testing will be needed. If you want to help, just play around with libsoylent and report bugs that you may encounter to our mailinglist. Thanks! Besides, next to the need of more documentation and polishing, here is a list of features that will follow in the next releases:

  • live-attributes (e.g. online-status)
  • communication (launch applications for chat / mail etc.)
  • address-book searching (atm you can only get all people)
  • people association / merging

Please leave a comment on my blog if you have thoughts, ideas, criticism, feature-requests or suggestions for changing something. Just let us hear your opinion.

Anyway, if you’re working on something that needs people-functionality, why not give libsoylent a try?


  • creating and modifying attributes works
  • adding / removing attributes to / from people works
  • attribute-mapping (for C runtime-types) implemented
  • attribute-system (definition, cleanup and to-string functionality) implemented
  • changes to people can be commited
  • loading people from the addressbook implemented
  • signals for SlBook, SlPerson and SlAttribute implemented
  • integrated gtk-doc
  • added a bunch of documentation
  • added more tests
  • added example-code (three examples)
  • revised architecture
  • a lot of internal-code improvements
  • fixed a bunch of bugs
  • added debugging functions
  • a lot of polishing was done (code-cleanup, convinience functions and macros etc.)


libsoylent is available for download at:


Bugs, feature requests, questions and related discussion go to the Soylent mailinglist. You can join at:


More information on libsoylent is available at:

WordPress Bug #7306

I recently upgraded to WordPress v2.6. After a quick check, everything seemed to work fine. However a few minutes ago a reader of this blog told me that he encountered some problems: The overview would work, but everything else like reading certain posts, commenting or using the RSS feed produces a “404 – not found” error. I quickly found out that the blog was experiencing bug #7306. The suggested workaround, filling the category and tag fields under wp-admin -> Settings -> Permalink, worked instantly and now everything should be up and running again. Let’s hope WordPress v2.6.1 will be released soon to fix the problem without the need for workarounds.