Session Management Clients

Session Management Clients

Grepping across all the modules in the desktop suite can sometimes reveal interesting information. I have a few posts planned about various things I have found this way. This time I have taken a look at the use of session management clients. The two options currently available are GnomeClient (from libgnome) and EggSMClient (code copied into all the modules using it).

GnomeClient:

  • evolution
  • gnome-media
  • gnome-panel
  • gok
  • vino
  • yelp

EggSMClient:

  • brasero
  • epiphany
  • evince
  • file-roller
  • gedit
  • gnome-games
  • gnome-session
  • gnome-terminal
  • gnome-utils
  • nautilus
  • seahorse
  • totem

An effort was made to get EggSMClient into GTK but unfortunately it looks like it is stranded in http://bugzilla.gnome.org/show_bug.cgi?id=79285. Hopefully we will get at real solution in GTK but until then it seems like the majority is considering EggSMClient as the lesser evil.

Life

I am currently finishing my masters thesis and I have had to cut back on my GNOME hacking because of this. My last exam is scheduled to be on the 19th June and after that I should have some more free time on my hands again. I have a lot of GNOMEy plans and I can’t wait to get the time to hack on them again. More on this when I actually have the time to do it. I will also spend a lot of this free time job hunting which I rather much look forward to. Job interviews are probably going to be nervewrecking but I am still also very excited about it.

Today it is one week ago that I went to Gelschenkirchen with some friends to see AC/DC at Veltins Arena. The concert was awesome and also incredibly loud. They still rock very much and I absolutely loved it. If you have the chance to see them on their tour I recommend going.

A good day

Today two very nice things happened for me in ubuntu jaunty land.

Firstly gnome-games 2.25.5 was packaged as the first in the 2.25 series. I’m happy to see our work for the past months finally reaching the jaunty users. Much has changed “under the hood” in almost all games and some testing would be nice. So if you are on jaunty and have few minutes to spare please consider trying one of the games. If you find a bug please file it in bugzilla. If all works well I would love to hear about it too in a comment here.

The second thing was that I noticed the nouveau driver appeared in the repository. I was curious about the state of the driver and decided to try it out. From what I have read I was not expecting much but I must say I was in for a very pleasant surprise. So far everything has worked wonderfully and the performance is good enough that I don’t feel the need for the binary nvidia driver at all. This is on a 6600GT card running at 1600×1200 with metacity. I have no idea how well it works with compiz or anything 3D but for my use it is perfect. Later I even installed it on my old machine at uni that has a ti4200 card. Works well there too.

Today is a good day πŸ™‚

Libgnome usage in gnome-games III

Finally – it’s done. I just did a commit to remove the very last bits of libgnome dependence in gnome-games.

Ldd now shows the following results:

On my ancient laptop I feel an improvement in startup time but I don’t have any numbers to back that up – yet. I should probably do that some day. But it will not be tonight because it’s 3:45 am and I’ve got a ton of papers to plow through tomorrow. Thank God for coffee πŸ™‚

Libgnome usage in gnome-games II

Libgnome usage in gnome-games

I said I’d do a status report on this so without further ado:

Calls to libgnome from gnome-games
Libgnome calls from gnome-games before and now

We are not there yet but we are definitely making progress.

Much credit should be given to Christian Persch. Not only did he commit changes to make aisleriot libgnome-free moments after my last blog entry but he has also been very helpful answering a ton of questions from me. Thanks Christian!

FSCONS

I did not know this conference existed until I read about it on p.g.o. It is within a reasonable distance from where I live so I think I might go there saturday and sunday. I don’t know anyone else going so I will be there on my own. If you are there then do come talk (or have a beer if that’s going to be happening in the evening). I should be easy to recognize by a scar by my right eye.

Hackergotchi

I did a rather pathetic attempt to make a hackergotchi. My gimp skills are pretty basic and I could not get the drop shadow thing work. If anyone wants to help me fix that I’ll be grateful. The picture I used is not very good but it’s the best I got currently. I just got back from vacation in Doha, Qatar but this is a picture from the first day and I’m still rather pale. It’s also taken from above and combined with my receding hairline it creates the fun illusion that my forehead is almost as tall as the rest of my face. In reality that is not quite the case πŸ™‚

It’s not the right size, I know. I thought that if anyone wanted to add drop shadow it might be easier while it’s still big. Hopefully Jeff will bear with me and resize it for me.

Libgnome usage in gnome-games

Inspired by Alexander Larssons post on reduing the number of libraries linked in nautilus I ran ldd on gnome-games:

blackjack: 82
gnect: 84
gnomine: 80
gtali: 80
same-gnome: 80
gnibbles: 84
gnotravex: 80
iagno: 84
sol: 84
glines: 80
gnobots2: 80
gnometris: 82
gnotski: 80
mahjongg: 80

Let’s see if we can improve that. Focusing a bit on libgnome I grep’ed trough the sources to see what we use. Using "grep -oh 'gnome_[a-z_]*' *.c" this is what I found. (output cleaned up to remove duplicates etc.) I’m not sure what to do about all of them but some like help and triggers should be fairly easy to get rid off. Perhaps the app and appbar parts should be replaced by using GtkUIManager or GtkBuilder.

For session management we could follow nautilus and drop the *_client_* stuff and use EggSMClient but I’d rather wait and hope for a solution in bug #79285. (imo we could just kill the thing for the games entirely. Saving game state over a session for a 5 minute game does not make sense to me and the current implementation doesn’t even really do that. It only restores the same puzzle/solitaire/whatnot you were playing, not the progress you had made in it. To me it just looks like a lot of complexity with no real value to the user. Or maybe I just don’t get the point…)

I’ll post updates as I make progress. Any comments/advice/suggestions are appreciated!

Aisleriot:
– gnome_client_set_restart_command
– gnome_help_display_on_screen
– gnome_program_init
– gnome_master_client

Blackjack:
– gnome_help_display_desktop_on_screen
– gnome_program_init

Glines:
– gnome_help_display
– gnome_client_get_id
– gnome_client_get_previous_id
– gnome_program_init
– gnome_master_client

Gnect:
– gnome_program_locate_file
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_program_init

Gnibbles:
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_appbar_new
– gnome_app_set_statusbar
– gnome_program_init
– gnome_program_locate_file

Gnobots2:
– gnome_program_locate_file
– gnome_help_display
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client
– gnome_app_new
– gnome_app_set_contents
– gnome_triggers_do

Gnometris:
– gnome_user_dir_get
– gnome_program_locate_file
– gnome_app_new
– gnome_app_set_contents
– gnome_vfs_open
– gnome_vfs_get_file_info_from_handle
– gnome_vfs_read
– gnome_vfs_create
– gnome_vfs_write
– gnome_vfs_close
– gnome_help_display
– gnome_program_init

Gnomine:
– gnome_program_locate_file
– gnome_help_display
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client
– gnome_app_new
– gnome_app_set_contents
– gnome_accelerators_sync

Gnotravex:
– gnome_program_init
– gnome_master_client
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_help_display

Gnotski:
– gnome_program_init
– gnome_master_client
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_help_display

Gtali:
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_program_init

Iagno:
– gnome_program_locate_file
– gnome_app_new
– gnome_app_create_menus
– gnome_app_set_contents
– gnome_appbar_new
– gnome_app_set_statusbar
– gnome_app_install_menu_hints
– gnome_appbar_set_status
– gnome_appbar_pop
– gnome_appbar_push
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client

Mahjongg:
– gnome_help_display
– gnome_program_init

Same-gnome:
– gnome_help_display
– gnome_program_init

libgames-support:
– gnome_accelerators_sync

Ubuntu update policy suckage

Like Murray I’m getting increasingly annoyed with ubuntu’s update policy. The whole idea of not shipping fixes for current breakage out of fear that this may cause new breakage is just lame IMO. You could at least look at what’s been fixed in the stable releases and do a risk analysis instead of just saying nay to everything.

Gnome-games
Ubuntu is shipping version 2.20.1 of gnome-games in gutsy. Lots of bugs has been fixed since that version and among these some frequent (seemingly ubuntu-specific) crashers. The update policy of ubuntu means that fixes for these does not reach the users. I guess the frequent crashers might fall under the category “severe regression” and I could file a SRU report and convince ubuntu to include that patch though.

For hardy ubuntu is shipping version 2.20.0.1. That’s right, a version older than what you get in gutsy. This is because gnome-games now depend on GGZ and before they can ship a 2.21.x version, GGZ must first be included in main. And for this to happen a MIR report must be filed.

So, the “stable” version is crashing and the unstable is not getting any testing. And unless something happens soon they will either be shipping an old version for hardy or a so-far-untested version – that they will of course _not_ provide fixes for later… Something is clearly broken in this process.

“just file the damn reports and be done with it already” I hear you say. Well, I prodded some people on IRC and things are in motion as far as I know but this is not the real problem. The problem is that ubuntu-outsiders have to file all sorts of elaborate reports to get some common sense actions to happen in this crazy bureaucracy. If you really must have this system please make sure you have the manpower to check your build queues and the bug-reports and take action yourself. Don’t rely on outsiders to come and tell you that something is wrong.

If this no-bugfix-updates policy is to be continued I think we should stop being dishonest to our users and extend the template bugzilla comments like the “dupe+fixed”:

“[…] You may want to check for a software upgrade.”

and add

“Unless you are running ubuntu. Ubuntu deliberately holds back bugfixes out of fear that the fix may introduce new bugs. If you want to see this bug fixed in ubuntu please go fill out an SRU report at bla bla bla”

The role of gnome-games (and broken promisses) :)

As Jordi blogs there is a thread on the gnome-games mailing-list where we would like some feedback from users, distributions and game developers. It started with a wish to get gbrainy included in gnome-games but sparked the need to discuss the general role of gnome-games. I promised to blog a about it yesterday but I went out cold after getting back from my exam and slept the rest of the day away. Beers after the exam may have had an impact here… πŸ™‚

Gnome-games status
Gnome-games currently consists of 17 games and an internal library that is used for common code like high-score, boards, etc. The games are currently coded in C, C++, Scheme and Python. Most games use the library but not all do as e.g. there is no python bindings yet.

Jason and me are the official maintainers of the module but in practice some games have other “real” maintainers. Christian Persch and Vincent Povirk rule aisleriot. Robert Ancell and Thomas M. Hinkle of glchess and gnome-sudoku fame both still maintain and develop their games within gnome-games after the inclusion. For these games I am not much more than a release droid.

The games in gnome-games are automatically included in many distributions as the default game pack. This has attracted many game developers as they hope to get their game into gnome-games in order to get distributed automatically.

Code maintainers or game inclusion judges
This leads to the question of the role as gnome-games maintainers. Is our role to maintain code or is it to judge what games gets to be included? I can maintain code but I am not sure I am the most qualified to be judging the quality of games. What do the distributions want? What about the users?

The case of gbrainy
Jordi wrote a really nice puzzle/memory trainer game called gbrainy. To reach more users he asked to get it included in gnome-games. I really like the game but there are issues to discuss:
– dependencies (mono)
– increasing gnome-games binary/code size
– yet another puzzle game

Who are our users?
Looking at the current games in gnome-games most are puzzle games. This seems obvious as I expect that programmers prefer to play those kinds of games. The question is if our users share this love for brainy-games or if they would prefer more action games like Nibbles and Gnometris. Perhaps we should think about getting a more diverse set of games. More action games, perhaps a game targeted for children, etc.

Flash and the games support library
Now that we have swfdec should we start considering using flash for games in gnome-games? Should/can we add some sort of support for flash based games in the games support library? I am completely clueless about flash so I don’t know what will be possible. There are many great flash based games out there and many good game developers that might be interested in doing some for gnome-games. I do have some fear about how such games will integrate into the GNOME desktop though.

Before we can start to make decisions about all this we need more information from you.

Questions
Distributions:
– Do you want gnome-games to be some sort of meta package including the games we see fit?
– Would you rather customize and mix your game pack and include new games like gbrainy your self?
– Does the binary size of gnome-games matter? Can we expand and include more games?
– Is 17 games too much choice in the menu. (I have to start scrolling the list soon if we add more)
– Would you consider using –enable-games=[only-games-we-like] and be okay with more games added in gnome-games?
– Would you ship flash based games?

Users:
– What kind of games would you like (Are we focusing too much on puzzles?)
– Do you want more games as default? More multiplayer/network support in the games? More bling?
– Is there a need for a child game in the default pack?
– Is it okay with a “static” games list or should there be change from time to time?

Developers, Developers, Developers:
– Should we make the games support library a real library? Is there a demand for it at all? – Opinions about flash based games?
– What can we do to help new games get exposure?

General:
– Does it make sense to have one module with many submodules/submaintainers?
– Do we want to depend on mono for gnome-games?
– Do we want every gnome based game under the sun in one module?
– Would it be responsible to be maintainer of a module that contains code in languages I don’t know (C# and flash)

If you have any input please comment in the thread or here in the comments. Thanks!

Hello planet / Fosdem

Jeff added me to planet back in early december (thanks!) but I have not really had the time to blog again until now.

Intro
I’m co-maintaining gnome-games with Jason Clinton. I took over from Andreas RΓΈsdal when he stepped down as maintainer half a year ago. (thankfully Andreas is still doing cool stuff within gnome-games) I was a lot more active with making patches before becoming maintainer. Now I spend much more of my time asking stupid questions about stuff I feel I ought to know as a maintainer πŸ™‚ I’m still feeling rather noobish and have much more to learn but I’m getting more comfortable. Do expect lots of more questions in the future though.

I contributed my first patch 1 year and 10 months ago and GNOME has been one hell of a ride since. There has been a lot of highs: first committed patch, first mention in release notes, first mention on planet, receiving an ubuntu cd in the mail and knowing that code I wrote is on that cd, getting cvs/svn commit rights, becoming GNOME foundation member, obtaining maintainership, and now being added to planet. Yay! It has all happened rather quickly and I never imagined that I would end up as maintainer. But here we are. Unfortunately this also means that I don’t know much about the history of gnome-games and I still have the feeling that I’m messing around in other peoples code. I doubt I’ll ever really feel “ownership” of the code in the way I would if I had written it myself. I constantly feel the urge to consult and ask permission of the former maintainers for big changes in the games. I’m trying to shake this off me and just go with what I think is the best decision, but it’s harder than it sounds. I just don’t have the ego to do so I think. I’m more of a consensus type of guy. Maybe I’ll get better at this with time…

I plan to blog mostly about what is happening in gnome-games and I have a lot of blog posts in my head already. I’ll try to keep it down to one or two a day though. Planet seems like a really good way to reach users, distributors and developers at the same time so I’ll (mis)use this blog a bit to kick start discussions that require feedback from lots of different people.

Boring facts and stuff:
27 years old.
From Esbjerg, Denmark.
Starting on 8th semester of software engineering in Feb.
Bribeable in: Beer, ice cream

Fosdem
I plan to go to fosdem. I have Never been to an OSS conference before so I’m quite excited. It’s not that far but going there will be rather expensive for me as a student anyway. Any advice on a cheap place to stay there is appreciated. If sharing a room with someone is cheaper I’m up for that as well.

Moving cruft from svn.gnome.org to svn-archive.gnome.org

I just fired of this email to devel-announce-list and gnome-infrastructure:

A while back Andre Klapper and myself started an effort to clean up
the svn repository by moving inactive modules to the archive. The goal
at that time was both to ease the transition from cvs to svn and to
get a cruft free svn server.

We started out by identifying the modules with no checkins in 1.5
years. For those modules we started sending out emails to whoever
seemed like the person responsible for that module. This would be
decided by first looking at the MAINTAINERS file, AUTHORS file and
last option was to look at the last person to do a checkin. 23
responded that their module could be moved, a few asked that their
module stay, but most of the time the email bounced or was not
responded to.

Olav recently set the svn-archive.gnome.org and started moving the
modules that did not request to stay to that. Moving modules back and
forth from the archive is no problem so if any of the modules listed
here should have stayed please mail svnmaster at gnome.org and they will
be moved back. Please also check that the MAINTAINERS file has the
correct email listed.

*snip* (long list of modules)

Thinking back all it took was a little motivation to help out and an easy task to get started at. All it required was a copy/paste from svn.gnome.org/viewvc to get the list of modules; some “svn log –limit 1 http://svn.gnome.org/svn/MODULE-NAME“-ing to get the dates; a wiki page to track the progress as we were collaborating; oh, and a heck of a lot of emails πŸ™‚

I think there are two points here:

  • Getting started at contributing to GNOME is really easy. You can walk right in as a complete stranger and start helping out. And you don’t need to be a coder.
  • Asking for help works. If you have a task anyone could do, just ask. Make it easy for wannabe contributers to see where they can help out.