kuarepoti-dju - the josef multilingual blogosphere


Text-based presentations: Peek at Pyntor

Categories: — josef @ 19:17

Alex asked for text-based presentation software. One decision to take is whether to use text mode only for the creation (e.g. LaTeX presentation classes such as Beamer or Prosper) or for the presentation itself. There’s TPP, the Text Presentation Program, written in Ruby which works fine.

A good choice in between is Pyntor, which is AFAICT the only fully modular presentation program on this planet. And of course it supports TPP slides, but also gives you the full power of Python for any graphical effects. A number of modules, e.g. for displaying SVG, are already included.

Disclaimer: I’m slightly biased towards Pyntor because I wrote it :) It’s not actively maintained at the moment but I’ll glady accept wishlist items.



Categories: — josef @ 23:37

My slides for the FOSDEM Lightning talks were just sent in, nothing can go wrong, except that I’m the last speaker on Sunday and could be trapped into drinking Belgian beer while missing my flight back to Berlin. The devroom slides are also mostly finished.

Now I just need to find the magic KDE boothbox, for it needs to be sent to CLT («Innovation thanks to Freedom»).

Finally, on to creating more slides for my lectures. «The internet as a device» will raise enough questions to close the link to the FOSDEM research room, and will hopefully appeal more to my students than other people’s approaches.


Weekend hacking report

Categories: — josef @ 21:04

After buying a new jacket and several other real-life errands on Saturday, I’ve spent most of the weekend hacking like I haven’t been able for a long time anymore. Not joining IRC or reading too many news proved very valuable for the desired level of productivity. Reaching #11 on CIA today, commit 9700 went into GGZ SVN. The next snapshot (0.99.2) is scheduled to happen live at FOSDEM, and one week before we’ll finally wrap up the changes on the stable branch to release
Most of the recent work in trunk went into the libraries for game developers using C, Python and Ruby. They’re all in a good shape now, and C++ will follow soon. Two side products were created: First, a Python module pyancillary to transmit sockets over other sockets, still not supported by Python out of the box. And second, a new tool ggz-faketable to launch GGZ-enabled game servers and clients from a single tool, allowing central debugging and behaviour analysis of the components without interference of networking issues and without the complexity that running ggzd and client-side game launchers usually involve. And then there was even enough time on Sunday to refresh my pitifully small knowledge of Türkçe, although in light of the trip to Belgium concentrating on Français and Vlaams would be more useful…


Semantically enriched confusion

Categories: — josef @ 20:18

KDE, with its 500 employees, gained 10.9 million dollars in revenue in 2007. However, the future looks tough with Linux (from Seattle) starting to enter the market as a competitor.

Sounds weird, huh? Such content will likely increase on the web if people who think they get semantic relationships (while in reality they don’t) want to create some fortune with little effort. The example in question comes from Zoominfo. However, this is by no means the only site relying on automatic data extraction to build up relationship graphs.
On Pipl, a people search site, the kdelibs relations show some guy named Kio Kio as being our most important contributor. This ‘name’ sounds surreal enough to warrant a combination of those sites with nonsense paper generators to see if the acceptance rate at dubious conferences could be increased.


Upcoming events - help representing KDE to the locals

Categories: — josef @ 20:36

Missed the KDE 4 release event? No problem, help us preparing some cool stuff for the following events:

FOSDEM, Bruxelles, Belgium, February 23-24.

10th CLT, Chemnitz, Saxony, March 1-2.
(Es werden noch Helfer gesucht, bitte via kde-events oder bei mir melden.)

KDE @ fisl 9.0, Porto Alegre, Brasil, April 17-19.
(Voy a viajar en las regiones de Montevideo y Buenos Aires después el evento. Un encuentro con proponentes del software libre sería deseado.)

Everyone else… help sorting out the current events.kde.org/spread.kde.org lull.


En busca del tesoro andaluz

Categories: — josef @ 09:02

Those who remember aKademy 2005 in Málaga might want to pay another (virtual) visit to the area. The game Nimuh is probably aimed at the younger generation although I really enjoy playing it. Nevertheless I only made it to the level of Sevilla, having conquered Huelva and then deciding that the remaining free time of today must be invested into preparing slides for my upcoming lectures.
While its free CC licence will cause some debate, as it prevents commercial distributors from shipping it, I think it is both nice and important to see free high-quality games with a certain locality aspect, since it puts the community in advantage to major publishers regarding scalability and authenticity. The development of Nimuh is supported by the regional government of Andalucía, and I wish others will follow suit.


Roadmap for multiplayer in KDE 4.1

Categories: — josef @ 21:01

This is an update to the previous roadmap for KDE 4.0. What we have achieved already is game client support, including player statistics, per-room rankings, chat and all the low-level networking transports for quantised and raw packets.

In KDE 4.1, we’re going to provide game server developer with kggzdmod, which mirrors the API of kggzmod to keep the learning curve at an acceptable level. With kggzmod, it will be very easy to manage players, spectators, bots of varying levels, abandoned seats, player and team scoring, savegames and (soon enough) game continuations.

In addition, kggzcore will replace the venerable ggzcore++ library for writing core clients. The old core client (game client launcher) KGGZ, which was first written when KDE 2.0 was close to beta release, will be replaced, too. The name KGGZ already serves nicely as a generic term for all GGZ components in kdegames, hence a new name is sought for the core client. I just checked in the first sources. As opposed to ggzcore++, no more artifacts of the underlying C library will be visible. However, it will still be present, so kdegames will get a new optional dependency. If people volunteer, then we can substitute this part as well, which is mostly state keeping and XML parsing and tons of other minor tasks.

KSquares recently received the initial commit for multiplayer support, although some bits are still lacking.

The GGZ snapshot 0.99.1 will be released soon. For the next snapshot after it, GGZ support shall be complete for all 4 programming languages: C, C++, Python and Ruby.

We’re also still looking for any hero who wants to host a server for us which is currently sitting around idle, searching for a power plug and a network cable. Please contact me if your rack is not full already and you want to become a big name for the free desktop gaming community.


Linux on Lifebook

Categories: — josef @ 21:55

Due to some interest, my random blog posts about the issues of running free software on a FSC Lifebook E series notebook (the model E8410 specifically) were translated, updated and consolidated on a new URL:
Linux on Lifebook.

It’s probably amazingly stubborn for me to waste my time with hardware issues. But if it saves other people many hours of configuration work and sends some signals to FSC that we’re still waiting for some specs, then it was worth the effort. With the release of Linux 2.6.24 within the next hours, two of the issues will already be solved, but many more remain :(

I also helped configuring a friend’s old notebook today, and surprisingly the first configuration report site we found was written by Lennart. The world is small.


Eye-candy and mobility: how to beat e17 and blackbox

Categories: — josef @ 13:38

I’m running e17 occasionally (complete with the entrance login manager) and there’s nothing bad about it from a visual point of view, in fact it is quite attractive and makes many non-Linux users take a look at the screen. I also run blackbox sometimes in hacking mode to eliminate any source of distraction. Blackbox cannot participate in GUI comparisons (it doesn’t really have any), however it is more suitable for the mobile area. Why? If you run dstat(1), you’ll see that after some time (when all caches have been flushed), there’s no disk activity anymore, the disk can spin down and the computer becomes idle. With enlightenment, something constantly wants to write on disk. The culprit is indeed the ‘enlightenment’ binary, although I haven’t yet had the time and urge to look why this is the case. Using strace(1) one can at least see that write() and mmap() are called constantly, and each second open() is called on both the theme directory (wtf?) and the ACPI governor settings.

Now here’s how to beat both e17 and blackbox: Create a visually appealing desktop which doesn’t ever touch the disk unless I tell it to do so. Do not wake up the CPU unneedlessly. Save my battery. Test this out with the current KDE 4 release and all of its applications. Check your QTimers and whatever elese might trigger such events. The KDE 3 default desktop is good at it, although not perfect, so there are still some areas for improvement.


Trying to stay focused

Categories: — josef @ 15:23

My stack of tasks grew higher than what I could still manage. A reduction of work was required in some areas so that enough energy would stay available for others. Thankfully, Jeremy has agreed to be the new maintainer for KNewStuff2. There is a lot of potential in collaborative data sharing, but only if the work towards this goal is also shared.

Likewise, I unsubscribed from 36 mailing lists (while keeping about 30) to not be distracted too much. About a third of them are KDE lists, including kde-c-d and most others except for games, services and research. The remainder includes many university-related lists, partially old cruft, and other projects in general, such as Brazilian softwarelivre.org lists and some freedesktop.org-related ones. Highly interesting, but nevertheless too much for my daily schedule were especially the following ones which I originally joined only for small bits but then stayed for longer since I found them inspiring:

  • Mozilla dev-tech-xforms (where I just wanted to present auto-generated XForms from XML Schema)
  • GNU libc-alpha (where I just wanted to report on a bug in gai)
  • GNOME’s desktop-devel-list (where I just joined to discuss making GGZ a dependency for gnome-games)
  • Python’s i18n-sig (where I just wanted to find out about the undocumented python -X option for full Unicode)
  • OpenSUSE’s opensuse-buildservice (where I just wanted to get a package built some time ago)

On the upside, you can now expect a lower latency from me on the other lists :-)


Online gaming: Looking for ingredients and cooks

Categories: — josef @ 01:20

It’s time again to look back at what has been achieved already in terms of integrating online gaming into the desktop and where to go from now.

KDE 4.0 will be ready soon. It only ships with 2 GGZ-enabled games instead of the 3 that were planned, however patches exist for at least one more so my gut feeling would be that there’ll be about 4 or 5 of them in KDE 4.1. The oddly named KGGZ page has been updated to reflect this development.
GNOME 2.22 will already have 4 games, one more than in 2.20. GGZ was recently made a required dependency for the upcoming release. This shall ensure that no gnome-games without online gaming support appear in the wild due to incomplete distro packages. Yay!

Some days ago, the rather old idea to couple GGZ-based online gaming with Jabber came up once again. This time I somehow felt a need to evaluate the idea with more attention.
The foremost question of putting ggzd on top of a Jabber server or the other way around has been solved quickly. It makes indeed more sense to rely on the existing installation base and developer pace of the Jabber community and add GGZ functionality as a plugin to the extent possible.
While light-weight Kopete and Pidgin integration already exist for GGZ, it only works for two-player games and is badly maintained. The only real advantage of the light-weight approach is that it can be adapted quickly to any IM client. Now, the planned heavy-weight approach, which will likely result in another XEP, requires many modifications to the IM clients. It sounds like a good idea to offload all that to, say, the Kopete guys, but then this backfires fast as someone will have to do the servers-side integration work. Anyway, that’s the route taking us to the next level.

Among the Jabber servers, only jabberd2, jabberd(14) and ejabberd seem to be wide-spread and under active development. Having played around with jabberd14 a bit, it seems like a good base ingredient, especially its injection system for communication with external applications. But more ingredients are needed. For example, jabberd14 doesn’t offer group chat (XEP 045) - and of course GGZ rooms need to be mapped to chat rooms, so the mu-conference extension comes to mind.
Furthermore, user roles and privileges must be mapped to JIDs. I haven’t yet found a good solution, and many of the XEPs that look promising have severe shortcomings. The most obvious one being XEP 196 (user gaming), which is way too limited for generic game types.
More issue such as jabberd14’s inability to handle anonymous logins exist and in many such cases the clients are equally at fault. A mail about the findings has been sent to ggz-dev recently and will likely get updated soon after further experimentation. People knowledgeable in Jabber hacking and/or specs are invited to contribute to the upcoming online gaming XEP and its proof-of-concept implementation. If none of the mentioned ingredients scares you, you’ll likely be a good cook!


The desperate need for a Freedom Grid system

Categories: — josef @ 16:35

There are many concurrent ongoing dangers in the world of Free Software. Among them, you will finde software patents, hidden restrictions in obnoxious licences and trademark lawsuits which seem to be absolutely unavoidable unless one has deep pockets filled with money for defence. Recently, expensive interoperability clauses have been added to the mix. Formerly, protection against such issues was achieved by adding condemnations to existing licences. With the GPLv3, such protection comes built-in. (This change is still argued about, but it’s certainly a good idea to not having to draft up the clauses on your own. The GNU project is known to be political in many ways, and in most cases that’s a good thing.)

However, there is more to it, and probably I haven’t been explicit enough in the past. In order to provide a posting for future reference, I want to elaborate on the danger of service lock-in.

In the old days, vendor lock-in was on the radar of free software developers. Many systems based on Linux and BSD are used to host internet applications, so many that in fact the server side was considered safe and forces gathered to conquer the desktop. The real push towards a free desktop began 10 years ago - with KDE and GNOME being founded, bringing many powerful applications to the average users. But that’s still 10 years ago - and times have changed.

Today, many user use a free desktop to check their GMail, then tune in to some Shoutcast beats, and finally think of doing their daily backup by uploading some files to Amazon S3. At the end of the day, they did use some free client applications - but likewise they did leave precious data at proprietary service providers. When freedom and privacy are equally challenged, people should shout loudly and stop using those services. But instead, they spend their time developing more interfaces for them.

Alternatives do exist. The necessary software to build scalable internet applications is being created by many projects. But that’s not enough. The community should come together and also provide services based on the software - a single individual cannot run a data centre, but combined, it is well possible to provide a huge grid, run in a non-commercial fashion, with thousands of terabytes of storage capacity, and a processing power which is already familiar to those who read about or participated in dnet-style applications. It would be a Freedom grid, running entirely free software so that it could (modulo its power) be replicated anywhere.

Now, whom do you trust more - some geeks running such software or some big corporations with a smiling web 2.0 face? The trust issue could certainly be solved, and in the end, both freedom and privacy could be preserved.

There are currently several initiatives to join if you agree with what has been proposed, or if you at least understand the background issues. First of all, the KDE project runs a service development list. Second, the German research programme Theseus is calling for participants from outside the project consortium, which naturally calls for some FLOSS participation to make such results available to the general public instead of just to a small set of privileged companies. Third, make other people aware of this issue, and don’t use non-free services by yourself.

Note: I know I don’t serve as a good example here by linking to sites such as freshmeat which do not provide access to their source code, let alone their database (the XML-RPC interface only covers a fraction of the overall site functionality). I hope that something can be done about that in the future. The FSF/UNESCO directory is not a full replacement as
the maintenance of its contents is more cathedral-style as it ought to be.


Semantically enriched language learning

Categories: — josef @ 17:32

Here am I, sitting in my room trying to learn Turkish, as my policy is to always learn the language of a country that is to be conquered by me. Depending on the time I have available before the travel, this turns out to be a good strategy sometimes (I write mails in Portuñol on a regular basis) and is rather unsuccessful at other times (my Dutch turned out to be insufficient for even basic communication recently). The material I have for this new task now is a somewhat suitable travel language guide that I bought for a bit less than four euros a while back, and several websites. Thanks to lykien.com for their GFDL’d course btw.

However, I’m not happy with the resources available. While a guided course is nice, I often need to know (especially when translating texts) what stem word a certain word is derived from. Even more so for the agglutinating languages like Turkish. Even the more expensive language guides are often no help in this regard. I start to think that geeks simply learn languages differently. The tools should not get in their way of learning with different speeds or into different directions.

The image above shows some very basic semantic relations between some Turkish words and their German translations. This image is incomplete; with the five words alone, dozens of derivatives and related words as well as phrases could be linked. Furthermore, the exact rules used for forming such words could be linked as well. Is it the small vowel harmony that is being used here? What is the stem word and the tempus? Is it an irregular case? (Fortunately, this latter question would be rare with Turkish texts.)

My wish is to see such learning support tools implemented for the desktop. Vocabulary trainers already exist in KDE-Edu for example, but they’re very basic. With the advent of semantic format support in kdelibs, it should be feasible to create even advanced tools such as phrase decompositions and explanations based on a set of words and some rules attached to them.
Users could easily add all of the content, maybe even using the Semantic MediaWiki software which wouldn’t even require them to adopt to new methods of authoring.

Now, back to conventional-style learning :/


Triple Play comes to your desktop

Categories: — josef @ 22:57

Apparently, Andrea’s talks on Ruby game development are well-received. She’s going to present more cool talks at Ruby East at the end of the month and at RubyConf at the beginning of November.

Given that the talks are going to feature multiplayer tech development, I feel obligated to gear up a bit and provide full Ruby bindings for GGZ client and server development.
While the RubyToe server has already been featured in the previous talk, I came up with a proof-of-concept client for it using just Qt4 in addition to the new bindings. As outlined in an article on auto-generated network protocols, the amount of coding necessary can be reduced drastically when all of this comes together.
According to our QtRuby mæstro Richard Dale, there was a small skew in the Qt4 bindings which has since been fixed in SVN. The implication is that only QtGui is used right now while for the networking part the standard Ruby socket extension comes into play. A big issue with this class is that once it is set up on a file descriptor, the ioctl(…, FIONREAD, …) to check the number of incoming bytes doesn’t work anymore. Thankfully, it was possible to work around this in a rather elegant way.

The ggz-ruby playground contains all the sources, including the low-level (wrapped) GGZMod and the slightly higher-level (and pure ruby) RGGZMod classes.
To learn about the next steps and see some cool screenshots, attend the conferences listed above. Granted, there are still some weeks down the road… what about joining the effort to make it a pleasant wait? :)


Viva Brasil! ODF para todos!

Categories: — josef @ 09:01

As a member of FFII I’m proud to announce that Brasil has defeated Germany 1x0 in the fight against a useless, proprietary, redundant and underspecified office format. Some detail can be found on noooxml.org, more in-depth reports (in Portuguese) at softwarelivre.org.

As a German I’m disgusted how the German Institute for Standardisation handled the fast-tracking on their side. As a matter of fact, I’ve submitted my proposal for Open DIN A4X, a similarly underspecified paper format which deviates slightly from DIN A4 and requires some knowledge of legacy paper handling. Up until now, DIN was unable to provide me with a price tag I’d have to pay to push it through, they didn’t even reply to me. I urge all Germans to come up with other innovative paper formats and submit them to DIN while they have their “summer of 2007 special offer” for fast-tracking such world class ideas.


Ruby Hoedown event

Categories: — josef @ 07:04

If you live in or near North Carolina, or if you are rubyist enough to afford a flight to that area, don’t miss the Ruby Hoedown event at the coming weekend which takes place at the RedHat HQ in Raleigh.
Among other great talks about programming in Ruby, Andrea O.K. Wright is going to present slides about game development in Ruby, which includes a section on GGZ technology for online gaming.
Yup - that’s the same technology which is being used in the dominant free desktops and several other games. If you want to know why Ruby powers GGZ, sign up.


Joining desktop and web forces

Categories: — josef @ 14:14

Usually I refrain from bragging about technologies which are still under heavy development. However, since our barefoot friends seem to have a somewhat different position on the integration of online services into the desktop than I have, I’d like to invite fellow developers to see what our common position looks like.

A brand-new mailing list named kde-services-devel has just now been made available for those who feel that just having a desktop with a few widgets and icons is not enough.

As examples of integration technologies under development, you’ll find the IPC-WS bridge in the webtech folder in playground-libs. Now D-Bus and SOAP are not exactly the best representatives of IPC and RPC protocols, respectively, but they provide good tooling and developer support, so they were selected to serve as an example for this approach.

The OpenDesktopID project in the same folder is an attempt to leverage OpenID for the desktop. This means that any application which can access KIO’s cookie jar will be able to be part of the authentication scheme which gets more and more use among web applications. Again, using OpenID for the implementation is a rather pragmatic choice, as there are other contenders.

A lot more web technologies and services were already developed in the past and are in use every day. Their further development and integration can and should as well be discussed at this list.


Hack status

Categories: — josef @ 13:54

Being someone who often only finds time for hacking when being offline somewhere, I’ve needed a simple tool to report to myself which projects I’ve been working on the day (or night) before, so I can finish the work and eventually commit. The script now came to life under the name hackstatus.

hackstatus script example

That and other scripts are maintained in a private repository (which humourously isn’t included in the list above, as only public repos are), and I’ve now put them together and uploaded them in case anyone likes them. Just click on the image. The big set of modified files above introduces internationalised strings for carrying translations for multiple languages at once around in a server application. The data structure is called ggz_intlstring and in KNewStuff2 there’s a similar one, a class named KTranslatable. I’ve often had the need for having several translations in one string, and I wonder why there are no standard classes and structures for this, and, on a related note, no standard procedure of handling this in XML (where xml:lang exists but isn’t fully used as it could be, e.g. for multi-language text). One certainly doesn’t want to reparse configuration files just because a language is changing.


The RESTful way to online gaming

Categories: — josef @ 16:39

GGZ is to games what the free desktops are to applications: an environment they run in, providing a certain set of services you can rely on, and a few default games/apps shipped by default, even though the real value is in being used by 3rd party authors.

With the GGZ player communities growing, one needs better tools to ensure that everything runs smooth. There are a lot of social issues, like sometimes nasty players joining, that simply cannot be avoided by any technical tools - rather, the community itself should be empowered to solve the issues among themselves. A lot of web sites became highly popular among developers not because of the content of their web pages, but because their infrastructure can be leveraged by developers who write 3rd party tools. The GGZ Community infrastructure is now being made available via a REST-style Web Service interface as well. The design of each resource is carefully considered to match both the internal data management and the expectations of developers from the outside. It will also help separating our community web portal from the database, if we decide to use it for this application.

To give an example, player objects can be added by anyone (POST). The public data of the players can be retrieved by anyone (GET). However, when trying to modify the object (PUT or DELETE), HTTP authentication kicks in and requires the current username and password of the player object.
Add team management, statistics and all that, and one can easily integrate game reports into webpages.

What is really unfortunate about the whole issue is that the players themselves will not understand anything of what I wrote above, and think I’m wasting my time instead of adding more flashy games. But we’re not just here for all the buzz, we’re here to provide a free environment for game development, and there’s no single gaming platform on this planet as open and accessible as ours. It’s a pity that some game developers still haven’t heard the bell ringing :-)


KNewStuff2 coming closer

Categories: — josef @ 12:02

Thanks to doxygen, the class structure below presents nicely how workflows will work in KNewStuff2. The red classes represent
the dialogs for upload and download, which are known already. The yellow classes represent the class hierarchy of the new engine,
which will transparently handle DXS if available from the provider. Right now, only the KDE-Edu repository is available via DXS
in an experimental fashion. A lot more should be during the next weeks, when we port the applications. Nevertheless, KNewStuff2
will of course work with older repositories. This is what one calls Application Wire Interface compatibility :)
Finally, the green classes represent entities which are supposed to be used by applications, mostly in a read-only fashion. Headers for
the other classes will be installed, but should not be used unless new workflows, dialogs and so on need to be implemented. The idea
of a GHNS-enabled KIO slave was raised many times, this might be such a project.

KNewStuff will (have to) be moved to kdelibs today. Things will break, help porting if you want, mostly by telling how your application
picks up the data.

Update: I forgot to mention that LWN carries a story about KNewStuff2 development.


KNewStuff2: small steps ahead

Categories: — josef @ 15:33

KNewStuff2 is probably the slowest in a series of new libraries for KDE 4. All the glamour already went to other libs, which are summarised on the KDE 4 Architecture page at techbase. I didn’t deem it appropriate to invent a new name for the rewrite, hence appending the 2 is all it takes to make a difference. Under the hood, however, most of the code is rewritten and a lot of new features are being added gradually.

As I’m a bit short of time, there are no strict deadlines other than it will have to be ready for the α release. Everything has been ported to KDE 4 and CMake already, a process which happened in parallel with the old codebase, now known as knewstuff1-kde4 (living in trunk) as opposed to knewstuff2-kde4 (living in the branch until some Monday).

There’s also some news about Hotstuff, a server-side data processing framework for GHNS. In a recent discussion with Annma, the need to manage remotely administered SVN repositories came up - such as for authors who maintain their data in KDE’s SVN to avoid dependencies on the availability of dedicated servers and still want it to show up in the dialog easily.
Those who look into Hotstuff WebSVN from time to time will be glad to know that with just a few lines of changed code (in rev #341) this functionality is now supported by Hotstuff. It already had a versioning backend for traditional uploads (e.g. through HTTP(S)) which does now handle this second way of dealing with versions. In order to put up a cool demo, I’d need the AnonSVN locations of the directories. What will need to be done is to store meta information properly alongside the files, in case this is not already done. Certain fields such as author, date and version might even be retrieved directly from SVN. One could even write a pre-commit hook which checks for syntactic validity, but the SVN-Python hooks are a PITA to work with. The real Python way would be to abstract from the SVN API and to deliver the list of changed or added files and directories as simple lists of objects. Anyone up to fixing this?


More on multiplayer in KDE 4

Categories: — josef @ 15:44

A week ago I mentioned some of the multiplayer plans. I deliberately left out any mention to ggzcomm, the code generator for abstract game protocol descriptions, mostly because the parts of it which are relevant to KDE games were not really implemented yet. This has changed!

The aim of ggzcomm is to declare that the networking code is not the business of the network game developer anymore. Crafting networking code by hand is nice and all, but it often leads to errors which go undetected, often resulting in security flaws which have to be fixed again and again.
Furthermore, especially in the world of GGZ a lot of games come with several frontends. Changing the protocol requires code changes to any of them.

Enter ggzcomm. It was born about four years ago as I could not find any similar tool (and I still haven’t found any for FLOSS development specifically while there are a lot of higher-level MDA thingies around).

Currently, opcode-based messaging can be generated for C+, C++, Python and Ruby, using a variety of networking libraries. Those will be run-time dependencies whereas ggzcomm itself (which is a couple-thousands-line-of-code ruby script) is not of course.
For Python and Ruby as target languages we could of course implement some cool runtime adaptation stuff once the development is stabilising a bit.

XML-based messaging can be switched on as an option at least for C++ and Python. This is a very new feature which is useful for debugging. Of course, for production use one switches back to opcode-based messaging. XML is nice, but huh, what about the performance penalty and TCP/IP traffic overhead? Interoperability is still ensured by having a source in XML, without falling into the SOAP/XML messaging trap.

Right now ggzcomm handles sequences, loops and conditions. A must-have features are safety code injections. For example, if a loop is iterating over all players in a Chinese Checkers/Halma game, the number of loops can be constrained to be no lesser than two and no more than six.

It might not be the solution to all games, and granted, auto-generated code always looks kind of ugly since taste differs. But my wish is that where it is possible to use auto-generated networking code, we should use it.


Multiplayer in KDE 4

Categories: — josef @ 17:41

For a couple of months now the KDE Games Breeding Area has been surprisingly active again. One of the initial reasons certainly was the need to get something done for KDE 4, but then it all comes together and one idea follows the other pretty quickly. Several topics are being worked on in parallel and both regular meetings and casual talk happens on IRC (irc.freenode.net #kdegames).

While I better don’t contribute “fancy” self-drawn icons, there is something really missing from all of kdegames and this is a community-oriented gaming framework - one where you can simply chat up your friends to join you in slashing and ripping apart evil monsters (translation for kids: to roll a dice or two).
Now it happens that there was the kggzmod library dormant in GGZ SVN and I took the chance of finishing its implementation, which is for KDE 3. That being done, it not only was equipped with full API docs but also a KDE 4 port.

The example game (KConnectX) has also been ported to KDE 4. What still needs porting is the GUI framework around kggzmod, which includes a seats dialog for player management and statistics, maybe also a common chat dialog and for the future a connection dialog for individual games, for people who want to launch them from KDE’s menu instead of from GGZ core clients.

The long-term roadmap is to overhaul the ggzcore++ library as well so both the KDE core client (kggz) can be made more attractive and the games can run in the embedded ggzcore mode which allows them to have a connection dialog on their own in the first place. But this is rather targeted at KDE 4.1 I’d say, as I think I’ve got some other obligations.

More on that over the weekend…


On the road… (USA)

Categories: — josef @ 03:05

Some days ago I was invited to the FSG OpenPrinting Summit which was co-hosted with the IEEE-ISTO PWG meeting. My affiliation was mainly with my university and the topic of GUI generation from formal models. However, the KDE print dialog could serve as a target for eventual implementations. Those will take some while though - I’m not aware of any free auto-layout algorithms at the moment which would be suitable for this task.
The OpenUsability folks shared a room with me.
The PWG meeting was a bit more abstract but learning about all the specs, most of them being related to some XML-based modelling, was certainly something I appreciate.

This week is mostly spent in Mountain View, California. Being hosted at the Googleplex (note: link doesn’t really work in konqueror) is nice. It is just a few meters away from San Francisco Bay and there is a certain humour in the naming of the streets over here.

Meanwhile, the Kubuntu break-out room is running at full steam. I dared to do some PyQt4 porting of the language-selector application… let’s see how this will turn out. It’s not easy to be productive here, there are too many interesting sessions going on. In particular, some up-to-date information on free java, security updates and of couse the obligatory the local haute-cuisine.
Some packaging work is also due this week, to prepare easy-to-use installations of online gaming portals. There is close to none infrastructure available for such tasks (similar to GForge or other complex web applications), and I’m certainly awaiting some improvements here.

Beside the hack factor, what one gets out of those travels is experiencing other cultures, nice landscapes and… coins!
Coins collectors are the ones who constantly grab the change money in stores and refuse to give back any of it to the cashiers, and then, back at home, spend hours to order their collections. Whenever I’m not hacking, I’m one of them. It’s still an expensive hobby though.


Like a new life

Categories: — josef @ 19:18

Not being a student anymore, I enjoy the continuous work in the field of research I’ve already been involved with for several months, while still maintaining a big chunk of free time to care about my projects.

First of all, attending aKademy 2006 broke my iBook, a long-time companion of mine and practically the only machine I had. (Interestingly, aKademy 2005 broke its power supply already - a curse?)
Apart from that, it was an overall nice conference. I had two BoFs, one about games and one about web services. In addition, I attended the one about edutainment since it usually shares a high number of issues with game development, and spreading software libre/livre into education is a very important process in my view.

Dublin was followed by London with a small personal GGZ developer meeting. The 3 attendants celebrated the largest project meeting ever :)

London was followed by Dresden which hosted the national Week of Computer Science. We warmed up with a nightly geek culture presentation event and then proceeded to the yearly climax in local free software advocacy, the Linux-Info-Tag event with maybe 500-600 visitors. Thanks to frinring for the detailed reports.

We had an excellent week in collaboration with the Wikipedians who held their 2nd Wikipedia-Tag in our city. What really amazed me is that they managed to bring Wikipedia to the people on the street by providing it free of connection cost at public internet terminals together with our local public transport holding.

The already fully-packed event week was finished with the matrix-like opening ceremony for our new faculty of computer science. My office there provides a great view over the skyline of our city, which led me to name my new computer vista. This is why I go by this nick on IRC now and everyone who associates this with a certain kind of vapourware is pretty much uninformed about which desktop I really use.

I’m now looking forward to some interesting research work, particularly the visit of the FSG OpenPrinting Summit where I hope to contribute some of my work on dynamic user interfaces.


Video: Web services on your desktop

Categories: — josef @ 14:10

Kung, the dynamic web service invocation tool which resides in KDE PIM, recently gained usefulness due to the support of WSGUI concepts, and therefore the ability to generate user-friendly GUIs. The main work was done on an editor for the creation of XML files for these hints, and the editor was named Kejsare, of course.
Using xvidcap, I managed to create a desktop video of the editor in use. It is meant to be played at 7 FPS, due to my computer being too slow for real-time recording.

The source is also available of course, but it’s a rugged tarball not really meant for consumption by compilation-addicted users.

More topics in this research area between web services and GUI generation will be discussed at an appropriate aKademy BoF on September 27th.


KDE 4 ad-hack meeting

Categories: — josef @ 10:42

Frinring invited tokoe and me for a spontaneous hacking day. We spent a whole day in his kitchen and tried to move forward with a few outstanding issues in KDE 4 development.

Frinring’s day started with a whole lot of CMake troubles. He then used the time to introduce us to some plans for the future of the Contacts applet. Note that the one on appsy is a bit outdated, check out the new sources from playground.

Some usage of the Akonadi service was then discussed with tokoe. This was really about a lot of PIM stuff I have no clue about but there’s an interesting graphics which was sent to kde-pim, explaining how QFileWatcher will make your desktop a bit more dynamic, and consolidating the various UI implementations for user-friendly selection lists.

My part was working on the WSGUI editor mostly. It will be released in one month, and relies on some web service and widget factory stuff from the Kode framework which is living inside KDE PIM (but is otherwise usable independently from it).
In particular, the dynamic web service invocation tool Kung will get a second rendering engine, based on Qt Designer’s UI files with custom widgets. The current work is being done in the schema-refactor branch. The XSD API in particular needs some improvements, this is what mlarouche is working on mostly.

The obligatory photo, missing myself:

And now back to lurking mode, until my thesis and the associated software will be done.


LinuxTag 2006: Free entrance - Konq story!

Categories: — josef @ 10:08

People who want to visit LinuxTag in May this year and think: uh, the expenses will add up again, can optimise their budget and get a free eTicket in advance directly from the KDE booth team. We’re going to shell out 20 of them to Planet KDE readers (but feel free to spread this!) on a FCFS basis.

In order to get one, write a one-page story about a day in life of Konqi (or Katie), like from when he gets up to what he/she does all day. The stories will be collected and be published as a PDF during LinuxTag.
My email address is waiting for story submissions, and all we need is a valid return mail address for the ticket.

If you want to stay longer or help on the booth actively, we’d be even more glad to hear from you - in this case, please do not apply for eTickets, we’ll have regular exhibitor passes. But you’re still free to write Konq stories in this case.

Update: No, story language does not matter, write in whatever language you’re fluent in. We’re a localised project after all.


Innovation vs. whining

Categories: — josef @ 14:53

While I appreciate the efforts of the apachelogger to bring more gaming texts onto the front pages of the planet, it might be worth pointing out the positive game development in our world.

Many people don’t know for instance that there is a GPL’d Qt-based 3D game designer which will soon be ported to Qt4. Now 3DOM hasn’t been maintained for years, but Blender for sure is a suitable modeller to get started with QCake.

Also, KDE has very good online gaming integration. While the free software world probably won’t win over players from proprietary games, there’s no reason to at least take back infrastructure control from them.

If anybody wants to improve the state of Gaming on Linux in the long run, bug the distributors to not treat game projects, and especially game productivity tools like QCake, like 2nd class packages.


La vuelta

Categories: — josef @ 14:12

Yo voy a pasar la semana siguiente en Málaga, Andalucía de nuevo, encontrandome con la gente de KDE Hispano y dando una ponencia a la Conferencia Internacional de Software Libre sobre la colaboración del proyecto KDE con otros proyectos en aspectos del desarrollamiento como usabilidad, cualidad y más.

Eso es solo para retrenar mi Español :)


December wrap-up

Categories: — josef @ 11:32

There was a lot of snow during the weekend, and a lot of time for me to work on overdue projects again. So, what did I do during the last days?

A trip with PyKDE resulted in a usable application (not of interest unless you’re much into statistics), and a soon-to-be-usable application, which is a frontend for a generic board game framework.

Also, not only is the Dot now hosted by OSU-OSL, but to relieve KStuff.org from the burden that it has on the current small v-server, there is now new.kstuff.org in the OSU-OSL virtual machine park, although it doesn’t have any content yet. This will change over the next days to weeks, as what will be installed there will also be developed further in parallel.


Málaga summary

Categories: — josef @ 16:45

As everyone posts summaries about the last one or two weeks, here comes mine also, and the fact that internet will be switched off in 30 minutes makes me confident I won’t spend too much time on it.
It’s really a nice city, not overly tourist-filled as I feared before, instead full of Spanish and Andalusian culture, some of which (say, language) I managed to absorb. Already on the second day I walked through the whole city, always looking for the shadow side of the street. I didn’t get a sunburn but on my way back I slightly lost the orientation and arrived not far from the residence, but north of it. If it hadn’t get dark already, I could have gone for a walk in the mountains also.
Quite the opposite was being on the beach for two times, with a third time still on the schedule for today.

For the record, there was some hacking involved too, but as one easily get distracted on such events, the more important aspect is about the meetings and personal talks. We had a (small) KNewStuff BOF with the outcome of cleaning up some XML right now and implementing the most urgent dialog features for KDE 3.5. More long-term goals for KDE 4 were discussed on the Edu BOF and are now on my TODO list, as are other wishlist items brought to me personally, via mail, bug entries or blog/planet posts.
Some mockups can be seen here. One important change will be a more wikipedia-esque Kollaborative Desktop Environment, with having a smaller administrative interface (basically only for approving other work), and giving users directly the possibility to translate entries or give other kind of feedback.

I also gave 3 talks, one just presenting a Qt-centric work already done, and two more about present and future development. Each of them turned up some QA session directly afterwards or by approaching me after the talk, so the preparation was not done in vain :)
Having said this, everyone should look forward to the next event already, but one should not forget to thanks this year’s organisers for their work put into the event. It was very comfortable all the time, and as one can only imagine when looking on the photos, there were lots of funny moments.


Counting down: Back to flight

Categories: — josef @ 14:20

Last week I finished with my exams for this semester and finally have the time for hacking again. If CIA wouldn’t be broken these days one could probably even see it. Along with this newly found activity came a system upgrade - X.org was long overdue a couple of other packages as well.

As expected, I’m working on aKademy preparation - there are only 8 days left until my trip will start and a couple of talks will have to be prepared. Each talk should introduce some new stuff, so not only am I preparing the slides, but also working on the software which will be talked about. Just today I more or less finished the slides about KDE games, but a few diagrams are still missing, and that will be the challenging part for me. As you might know, even a few non-KDE game developers plan to join us at aKademy so we can discuss some future plans at large there.
Those who are interested might also have a look at the wiki.debian.net games page. Many distributors still have to do their homework when it comes to games, unfortunately, and I plan to work a bit on this task also.

The kstuff.org slides are next on my list. Therefore, I plan to spend the whole evening working on a shiny example setup and collecting some of the ideas that have been floating around recently. Tell me if there’s anything special you really want to see included ;)
In the meantime, KDE from SVN keeps compiling and it really feels good to have access to a fast computer again, so the turnaround times are kept very low. Good to see the availability of compilation machines in Málaga as well for that matter.

When this is done, getting hold of my Spanish book again will be the single most important task left to do.

P.S. Lurid title, but I haven’t been in a plane for many months now and I just love it.


Desktop Exchange Service: Progress

Categories: — josef @ 12:30

Today early in the morning I implemented OpenSearch support to the Hotstuff backend. Hotstuff is a bunch of Perl scripts which takes care of everything happending on the server. Now there’s hotstuff-search.pl for OpenSearch, hotstuff-scan.pl to verify and integrate uploaded content, hotstuff-downloads.pl to count the number of downloads and hotstuff-http.pl to enable HTTP uploads. The hotstuff-scan script has recently been extended to be able to operate on feeds directly, so that existing repositories can easily be imported for tests.

GHNS OpenSearch

Now to the client side. The current KNewStuff dialog is showing its age, and while there’s some Senior’s Health Care programme taking place in branches/work/knewstuff-features for KDE 3.5, we clearly need a better dialog for KDE 4. The HTML-based one currently used in KPDF is very nice already, however HTML isn’t really the best interface when it comes to usability, so which parts should be displayed as HTML and which shouldn’t has yet to be determined.

Now when not using a traditional HTTP/FTP provider, but instead the Desktop Exchange Service, a lot of advantages will improve the GHNS integration. First of all, it’s no longer necessary to download all items (or the latest 50 or so), but instead a narrowly-defined selection can be retrieved, based on categories and search terms. Second, user authentication happens transparently thanks to kio_http, so that the anonymous-only access will be supplemented by an authorised access. Third, based on the second advantage, direct interaction such as comments or ratings will be possible. The screenshot below is just a mockup, however the command line interface works quite well already.

GHNS Popup

In parallel to the software above, a new web interface is currently being built, using a template system so it can be reused - in KDE website style for the KDE edu page, for instance. The codename for this engine i Cocodrilo and as the name suggests, it should be more or less ready for aKademy.


Back from LinuxTag

Categories: — josef @ 20:45

As danimo has posted a lot already, I’ll restrict my entry to just saying we arrived back home as well. A news roundup will follow soon. Today I won’t be able to complete it but tomorrow seems like a good day for this task. I’d already like to thank all those involved. If there are any materials (photos, texts) for a summary story, please forward those to me.

To catch up with the recent SVN changes will be the most challenging task now :)


Artists are great

Categories: — josef @ 09:41

It has only been some days that kde-artists.org is running, but the suggestion to include a forum section where application authors can request artwork has proven successful already.
Instead of creating the 25th icon theme or Yet Another Wallpaper, artists have the chance to help especially 3rd party projects with unique artwork, which is nearly guaranteed to be used by the project, instead of just being “one of many” as is the case with let’s say generic icon sets. While the main KDE desktop looks great already, many apps still suffer from insufficient artwork.

So today I watched and voilà got a logo for GHNS and an icon for a game project. Cute, isn’t it?

There are, unfortunately, still some flaws with the site. One of them (the display of full names instead of nicknames) I already reported, the other one is that it requires JavaScript, which is bad, since Konqueror from KDE 3.3 at least won’t cope with it.

On a side note, anyone knows how to use TaskJuggler in order to effectively plan the KDE booth for LinuxTag? I’ve tried to incorporate all the wishes, different arrival and departure times, different knowledge of KDE areas and so forth by hand, but it seems that automating this would for once be a chance to save time, and also promote TaskJuggler and its KDE frontend as time management software. However I admit I didn’t really try hard yet and probably won’t need it anymore this year.

Update 22:38: the artist-developer interaction was thought of by many other people as well, often for a longer time already, as is the case with the forum, which has existed for many months


KDE at LinuxTag

Categories: — josef @ 23:18

We’re still looking for booth staffers for this year’s LinuxTag event in Karlsruhe, Germany. Today the conference programme was published and it seems that there are 8 KDE-related talks to be presented. I listed them at the wiki page.

In other news, some might have read about the GNOME Art downloader already, which shows great similarities with a KNewStuff download dialog, except it doesn’t handle any post-installation functionality yet. Nevertheless it’ll be a good idea to come up with a shared spec on freedesktop.org, although I’ve now been waiting for some time already to get the appropriate mailing list.
In the meantime, people can check out some more docs. This page should link to the first draft of the spec soon.


Top KMail Enhancement of 2005

Categories: — josef @ 09:14

As a seasoned KMail hacker, I get lots of requests from our KDE customers about the ability to streamline the delivery of mail in order to increase the efficiency and strengthen the corporate culture. After consulting with my friends from the Exchange Group, I decided to go ahead with a revolutionary concept which will put us in front of the competition.
You might be aware that 90% of your inbox consists of nice direct-marketing material, thoroughly compiled collections of unmatched offers! So why care about the other 10% - concentrate on the good messages and manage your assets with Get Hot New Spam!!!

Get Hot New Spam!


Multiple search providers

Categories: — josef @ 21:31

Somebody wanted to be offered a selection of search providers in the konqueror search plugin.
This is a bit nasty since the KURIFilter is normally configured only once, so we need two patches. With configuration change notification, this won’t be needed anymore.

The patches are here and here.

KDE multisearch


Advertising on planetkde

Categories: — josef @ 22:44

It was found out by after thorough research that I don’t advertise my development bits enough. So here we go. Ad time! After catching up a bit in KNewStuff development, it was time to also brush up the server side of GHNS, which is commonly known as Hotstuff. For those who do not want to download the scripts and data files, there’s now a convenient repository browser which showcases all KDE applications already using KNewStuff.
In case you still don’t know what I’m talking about, check out the KDE 3.4 desktop wallpaper configuration or Quanta+ toolbar downloads.
Of course, there’s documentation for it as well.

Enough ads for today.


It’s not lazyness

Categories: — josef @ 02:20

I’ve been really unproductive with regards to KDE in the last weeks. But it’s not that I don’t want to hack - the current situation is simply that this month is practically dedicated to university work.
One pressing item is updating the KNewStuff tutorial to reflect the latest additions to the library, namely KNewStuffSecure.
With them it’s possible to download data or scripts in a secure fashion, by executing:

KNewStuffSecure *nssec = new KNewStuffSecure("quanta/toolbar", this);

Yay for getting this in in time for KDE 3.4, and thanks to amantia :)

Powered by WordPress