my blog

GNOME

Entries feed

Thursday 21 October 2010

JDLL 2010

Last Friday, I headed to Lyon for the JDLL 2010. It's an event that feels always a bit special for me since the JDLL was the first event I attended a long while ago. Even though it's not the biggest event in France, for some reason, all the usual suspects from the french-speaking free software community is coming. So a good place to be to catch up with various people (Alexandre, Didier, FrédéricP, Michael from the GNOME-FR conspiracycommunity, as well as our friends from Mageia, and more).

Of course, I first had to prove I really wanted to go there: with the strikes, it took me around five hours to travel there, instead of a bit less than two. I didn't really mind, though. The real downside of the strikes for the event was that a bit less people attended the event than usual, but it worked out quite well given the circumstances.

I had submitted two talks for the event, and both were accepted: one introducing the Build Service, and one explaining what the GNOME community is up to with GNOME 3.0. The talks themselves went quite well, but I had some last minute fun with GNOME Shell, which was crashing on start (thanks Benjamin for the quick fix!).

The GNOME 3 talk was helped by some really recent GNOME 3-related changes in openSUSE just before the event: FrédéricC has been working on automatic packages of GNOME Shell from git (works great, and makes it easy to test Florian's branch), and I managed to quickly create packages for a GTK+ 3 version of the openSUSE theme (thanks to the work from Andrea on porting murrine to GTK+ 3). All this improves the GNOME Shell demos I usually do, while still enabling people to keep a stable GNOME around. Of course, these changes are already in Factory for openSUSE users, and FrédéricC might announce his plans with his GNOME Shell package from git soon :-) Exciting times in the openSUSE-GNOME land, if you ask me!

The JDLL was also an opportunity to show, in addition to GNOME Shell, some of the great mockups done by the design team to various people, and the reaction is nearly always positive. If you haven't tried yet, I encourage you to go to an event and talk about GNOME 3 to people, even if it's just in the hallway: you'll see people getting positive, and more importantly, really excited about the changes we're introducing. This definitely boosts motivation :-)

Wednesday 29 September 2010

GNOME 2.32 is out!

GNOME 2.32

GNOME 2.32 banner by Vinicius Depizzol

After some unexpected last-minute action, GNOME 2.32 is out! It's a smaller release than usual, as we started this cycle with 3.0 as a target and decided to change the plans during GUADEC. So some modules just have bug fixes, with their cool new features incubating for 3.0. Still, there are some neat changes in there: for instance, metacontacts in Empathy will certainly make people happy, and the SyncTeX support in Evince is just amazing! With the inclusion of Rygel and gnome-color-manager, we also move GNOME closer to the perfect desktop ;-)

Go read the release notes for more information about this release! It's a bit of a shame that we didn't get any real reaction to Paul's request for screenshots, and with more help, the release notes would also have mentions of the new modules. Oh well, this will hopefully help us get more people to work on the release notes next time.

It feels a bit weird, but I'm glad that this is the last major release of 2.x era. For real, this time ;-) We'll get a maintenance release in November, but it will only provide a few bug fixes, since most contributors are already completely focused on making 3.0 rock!

Thursday 23 September 2010

My love for jhbuild

It's apparently cool to talk about jhbuild again, so let me tell you the truth: I'm a heavy user of jhbuild. And as such, I probably got used to various issues with this tool and don't see them anymore. However, I do feel it's a bit weird that people often blame it for being complex or not working well while, most of the time, it does work well and the issues are not in jhbuild itself, but in the way people try to use it, or in some bad things happening in repositories... So let me talk a bit more about this amazing tool!

Why still use jhbuild?

When I first built GNOME from scratch, using a development version of a distribution was a bit of a nightmare, and building GNOME from source was really so much easier. That's why I started using jhbuild. However, nowadays, most distributions have a relatively stable development version, where GNOME is updated really fast to the latest version: if you're a GNOME addict, you can easily get your fix this way.

Still, I keep using jhbuild. In a different way, though: I used to run a jhbuilt desktop, while I now mostly run jhbuilt applications for testing. The reason for this is that it makes my life easier when I fix bugs in various modules: I already have the code, I can tweak things and rebuild quickly something to see the result. No need to install weird packages: I did it once, a long time ago, for my jhbuild environment, and I forgot about it. I can also read the GNOME code whenever I want, even when I'm offline (you know, on the train or plane).

Another reason I still use jhbuild is release management. For each release of GNOME, the release team publishes modulesets that can be used to build this specific version of GNOME, and that we use to make sure that everything builds fine, and then to test the desktop. This is the smoketesting step. It turns out to be quite important, as we often find that we need a new tarball to fix the build (see for example my 2.31.92 nightmare — we can often blame maintainers there). It is more worrying when we also find critical bugs while running the jhbuilt desktop this way, but it doesn't happen that much anymore (phew!).

Also, jhbuild makes it easy to build the next version of GNOME: while most distributions are stuck in the 2.x world, you can try building 3.0 now. Try because, as Andre found out, there are some issues at the moment. But you can also just build the latest GNOME Shell this way!

jhbuild buildone is great, but you need the dependencies!

Diego recommends to use jhbuild buildone. That's all fine, and I use it quite a lot too. However, it's important to mention that just running jhbuild buildone without having installed anything else before will obviously fail. And I'm 100% convinced that many people tried this in the past, and gave up on jhbuild because of this.

You need dependencies to build a module. There's no way around this. And you can't blame jhbuild if you just use jhbuild buildone and it fails, really :-) That being said, you don't necessarily need to build the dependencies yourself.

Skipping the build of system libraries, or of GNOME libraries

Probably the most common complaint about jhbuild is that it tries to build many many things, including low-level bits of the system. Yes, this is a bit annoying, as it takes time and some of those low-level bits can fail to build. But if you complete this once, you can live happy with those built dependencies for many months, or even years in some cases, so it's worth the effort.

It turns out there's a faster way: you can skip these bits and install packages from your distribution. Here is what I skip because I'm rebuilding from scratch every few months, and I don't feel I need to build these modules that my distribution provides (this is from my ~/.jhbuildrc):

skip = [ ]
# skip from bootstrap
skip.extend ([ 'python', 'guile' ])
# skip some big external dependencies that can be annoying and that are
# installed system-wide anyway
skip.extend ([ 'mozilla', 'firefox', 'dbus', 'hal', 'avahi',
               'NetworkManager', 'PolicyKit', 'PolicyKit-gnome',
               'libgdiplus', 'mono', 'monodoc', 'nss', 'nspr',
               'sqlite3', 'pulseaudio', 'pysqlite2', 'mono-addins',
               'WebKit', 'polkit', 'DeviceKit', 'DeviceKit-disks',
               'DeviceKit-power', 'libxml2', 'libxslt', 'libgpg-error',
               'libgcrypt', 'expat', 'libtasn1', 'gnutls',
               'libvolume_id', 'libdaemon', 'udisks', 'UPower', 'upower'
])
# skip some gnome stuff that I can't test
skip.extend ([ 'evolution-exchange', 'evolution-mapi' ])

As you can see, I just append modules to the list and I don't remove old stuff (hi DeviceKit!).

Some distributions even provide a package that installs most dependencies automatically: in openSUSE, this is the jhbuild-recommended-deps package. With this, using jhbuild becomes even more painless!

But wait, there's more. If it happens that you need a specific library for a module that didn't get installed, or that you did the jhbuild buildone trick to only build a specific module and miss a lot of dependencies, you'll get an error like this:

checking for WNCKLET... no
configure: error: Package requirements (gtk+-2.0 >= 2.19.7 libwnck-1.0 >= 2.30.5) were not met:

No package 'libwnck-1.0' found

Or if you have a pkg-config file for libwnck, but it's too old:

Requested 'libwnck-1.0 >= 2.30.5' but version of libwnck is 2.30.4

At least in openSUSE (and I guess it's true for most RPM-based distributions, not sure about Debian-based ones and others), you can easily install what's missing: sudo zypper in "pkgconfig(libwnck-1.0) >= 2.30.5". Sure, it sometimes happens that the failure is because of a check that is not pkg-config-based, so that won't always work. But with pkg-config slowly progressing towards world domination, this is less and less the case.

Sidenote: if you find a library that is still not using pkg-config, please file a bug and ask its maintainers to add a pkg-config file. Thanks!

GNOME is required to work (which implies... to build) from git

Last but not least: it occurs that people give up on jhbuild because something really just doesn't build from GNOME. A first possibility is that it's using some flags when building from git, that makes the build a bit stricter. A common pattern here is that *_DISABLE_DEPRECATED flags are set, and with all the deprecations work going on in libraries, it sometimes makes life harder. You can try passing --disable-maintainer-mode to configure to help with this. It turns out you can do this automatically in ~/.jhbuildrc:

autogenargs='--disable-maintainer-mode'

(Or just append --disable-maintainer-mode to what you already have.)

But it can also happen that it's just a real build failure, because the module doesn't build with the latest, say, gobject-introspection (remember the 2.31.92 nightmare). In this case, there is nothing jhbuild can do: that's a bug in the module. We're doing our best to avoid such situations, but they do occur. That's what Andre faced a few days ago when he tried to build the 3.0 moduleset. And this is where you can become an active contributor to the project: file a bug! And if you're able to, why not also create a patch? :-)

Interestingly, for a long time, we didn't have such build issues anymore: everyone was using jhbuild back then. But with the stability of development versions of distributions, this is less the case now. We're working on fixing this, and a big part of the solution is the build bots, but we need more of them and we also need people to monitor them to make sure they do not fail because of other weird issues.

jhbuild is well-maintained

Last but not least, I think it's worth mentioning that jhbuild is well-maintained: Frédéric is doing a great job there, and is extremely reactive. This means that even if you hit a real issue in jhbuild, it will likely get fixed fast :-)

I wanted to share my love for jhbuild; now you know about it :-) I really can't imagine working on GNOME without jhbuild: this tool makes my life easier. Daily.

Saturday 14 August 2010

More GUADEC tidbits

GUADEC Open Space

GUADEC Open Space by Sense Hofstede (Creative Commons by-sa)

See my previous post for the first GUADEC tidbits.

  • Of course, Fernando and Xan's talk was a great moment!
  • Apparently, I was not for sale (I didn't know, or well, I knew it). And the result is that someone I won't name (let's call this someone Kat) tried to buy me. Without success.
  • Sílvia and Gil won the GNOME Pants this year! Woo! It's a bit sad that they chose to wear it only during the Collabora party: they pretended they were not the right size...
  • I had quit an interesting chat with Luis during the Collabora party. I liked his keynote.
  • Gustavo and I are invincible at table football when in the same team. Mwahahaha!
  • Some people didn't know how to easily get GNOME Shell running from GDM. I hope that by now, most distributions do something like openSUSE, where you can select a GNOME 3 Preview session in GDM.
  • Ryan made some I support the release team stickers. Sweet. He also made some that used a cryptic vuntz 3.0 message...
  • Jos, the new openSUSE community manager, happens to live just a few kilometers away from the Hague. He was still at his previous work back then, but we were able to share a dinner before the Canonical party.
  • I got a very nice Openismus t-shirt (thanks Kat!). I was told there's a fox on it. I see a cat.
  • It was great to have more time with Dominique, one famous openSUSE hero.
  • Bastien and I tried to send a poster to a generous Friends of GNOME donor. During 45 minutes, we walked around, asked people, looked on maps, etc. to find a post office. And when we found one, it didn't have what we needed to send the poster. Oops!
  • Didier helped me find a real post office on Saturday. And there we were able to send the Friends of GNOME poster.
  • I was finally able to chat with Adam from Yorba. I've been wanting to meet the great people at Yorba for a long time!
  • Some people are talking about a French Conspiracy. I don't know why. Anyway, after Reinout's closing speech, Bastien and I went on with the closing ceremony together.
  • The Foundation released three press release this week. Many thanks to Zonker for his help for this!
  • The next GUADEC will be in Berlin, with Akademy! I'm already excited!

Friday 13 August 2010

My late GUADEC post

I came back from the Hague after GUADEC nearly two weeks ago, and I still haven't posted anything about it. Bad me. The short summary: it was a really great event! I don't know exactly why, but I'm thinking it's the GUADEC I enjoyed the most. Many thanks to all the organization team who did a fantastic job! Also a big thank you to the sponsors who made this event possible!

GUADEC Group Photo

GUADEC Group Photo by Nicolas Christener (Creative Commons by)
See the whole set or download the full sized pictures.

The first few days of the events were quite busy between a good board meeting on Sunday (woo, and the last one for me!), a Monday where Frédéric and I chatted with various teams about the current status of GNOME and an advisory board meeting with useful feedback on Tuesday. Busy but good busy. And after that, the event simply went well. I don't think I attended many presentations since I used most of my time to chat with people — that's what is most useful for me at events.

Some tidbits about the event (I have more coming in a later post):

  • The first thing I did when I got at the hotel: I slept for a few hours. Jetlag. When traveling from France to the Netherlands.
  • Apparently, Diego and Germán slept together, and took a shower together. I'm happy for them!
  • Quote from the very first evening: This is not javascript, this is real code. -- Diego, who works on a web browser.
  • Somehow, I couldn't stop saying we when talking about the board. I guess that's what happens after four years and a half.
  • Daniel (or David? ;-)) has a twin, Adrien, and it turns out they were sharing the same room.
  • We had a release team meeting during the event. On IRC. (only two release team people were in the Hague on Monday).
  • I was surprised to see the GNOME roadmap we've started working on in Jon's slides. But good surprise :-)
  • People loved the openSUSE Geekos we gave away! We need more of that!

- page 5 of 36 -

by Vincent