The KDE - Gnome Challenge: xmonad

A couple of weeks ago, i wrote about a personal challenge to work on making a better desktop for myself, and use my computer more effectively. I meant to pick up the blog and start posting a regular series on taking advantage of your desktop for others to follow. So as unusual, here is the second installment to the series.

I want to begin with a tool that has really served me well for a very long time. I started using xmonad in the end of 2007. Since then, it has helped me be far more productive, because i spend alot less time getting swamped with windows that need to be managed. If you want to know exactly what problems i was facing that lead me to believing tiling WMs to be the one true way (for myself), i recommend you read my blog post from then. Since then xmonad has come along way, and through all that, i've been using more or less the same configuration with both Gnome and KDE.

The way i see it, xmonad is going to be the corner stone of any desktop i put together. There are two primary reasons why i have this perspective, and in this series, you will see many comments on how to integrate Foo (TM), Bar (TM), and Baz (TM) into xmonad for a complete workflow. After using xmonad for a few months, i stopped seeing my desktop as a collection of apart applications, and began to see the system as a complete system. By putting two programs next to each other, colouring the backgrounds the same, and using no border between the two, they would blend into each other, akin to panels in many IDEs. Suddenly, a file manager window and a simple music player could have the same functionality as the all in one integrated amarok. Instead of relying on kparts or whatever KDE uses these days, the OS already provided the components to integrate them together. When you consider that the end user doesn't understand 'programs' intuitively either, i decided that the most user friendly approach is to teach the user functionality rather than programs.

Window managers are also incredibly context sensitive. Of all programs running on your machine, your window manager has the best view on exactly what you're doing and where you're doing it. With a little bit more information, like a context, it can be very flexible to accommodate what you are really trying to do, and make your life much easier. More concretely, it can provide per desktop/workspace key bindings, the ability to organize your windows around tasks and so on. In this case, xmonad also takes nearly all priorities over keybindings in your X server, which in plain english means all your global hotkeys are very implement in xmonad. It's even got a few extensions that make it easy to make up new keybindings, and even use vi and/or emacs like bindings on your desktop.

xmonad can take up a number of blog posts itself, but it's not the only way to solve a number of problems i'm looking to solve. If you're looking to follow this series, the easiest thing to do is to try out xmonad and get used to it. Otherwise, you'll be on your own integrating it with your window manager of choice. That said, the next few blog posts will have very little to do with xmonad.

The KDE - Gnome Challenge

The past couple of years i've been experimenting with my desktop alot. When i started using Fedora, i stuck with Gnome until i found XMonad. Then i did alot of the initial work of getting it to integrate into Gnome. After watching my desktop break on updates and alot of the tools i was using at the time completely junk out on me, like hamster-applet, not to mention being plagued by evolution, i decided enough was enough, and i switched to KDE. Watching every component in the desktop get rewritten every six months with less features each time was making it hard to just get XMonad up and running.

After getting things up and going, and seeing how KDE 4.2 was stable enough to get some work done, i thought i could commit myself to using it. For a while, it seemed to work, but i realized i wasn't using half the features coming in. The incremental improvements were nice, and i saw the beginnings of a very interesting foundation that had alot of potential. But then since the past few months, lots of little issues started creeping up. Every time i would suspend my laptop, resuming it would take longer and longer before i got control of the keyboard back. Sometimes the only button that would be reactivated was the handy power button. Going into standby would take longer and longer. Leaving an X session running for more than a couple of days would get really slowly. The kicker panel that used to show up instantly started to take seconds and then minutes even to show up. It would also break the focus in weird ways. All the akonadi bits would start to get in the way. The panel would graphically glitch all the time making itself less than useless. I wanted my desktop back.

If i were a KDE or Gnome developer, i would have been thrilled to have the chance to be able to dogfood and fix alot of these bugs. My current role is a system administrator, though, and all of these things just get in the way of solving problems fast so i don't miss my deadlines. I don't mean this criticism as something bad about any of the decisions of the developers or the Fedora package maintainers, but simply, this is why it didn't work out for me.

Instead, i decided to set a different sort of challenge for myself. After watching the challenge between Ryan Rix and Mel Chua to use each other's favourite desktops, i challenge people to start with their own minimal desktop. This does not mean starting with XFCE or LXDE and calling it quits, though those are both two fine projects unto themselves. I mean, start from scratch with just your own .xinitrc file. Then put in everything you need. Figure it all out for yourself. Do this for a month and see if your survive. It's sort of like that intial Linux challenge. Can you use that for a month as a sole OS.

Over the next while, i think i'm going to post updates on some of the different components i'm using to build up my desktop. I've been using tools following the suckless principles as starters and exploring all the different options.

Starting my RHCA

Next week i'll be starting on getting my RHCA certification. I've said it many times, and i'll say it again, i really see good high quality certifications replacing the diploma as a metric of skills in the 21st century. I highly recommend that everyone look at picking up a few, and i'll shamelessly plug Red Hat for providing one of the most rigorous programs out there.

I will be taking the RH436, the Red Hat Enterprise Clustering and Storage Management, course and accompanying exam. It might not have been the most number one choice, but it's an issue we're working with at the Genomics Center, that i felt it would be the most practical choice. I want to thank my employer for sponsoring the course.

I'm going to be taking it easy this weekend, and next week i'll most likely not be online at all. If you can't reach me, you'll know why.

LOADays: the follow up

This weekend i was in Antwerpen for the Linux Open Administration Days. Or Handwerpen as Bert Desmet puts it so fondly. I was there to present puppetmanaged.org and some practical discussions on how to migrate to it's sometimes not so user friendly structure. For the rest, i went in with an open mind.

When Jeroen van Meeuwen and I arrived at the hotel, we ran into a small group of what were obviously sysadmins. It seemed there was also some kind of wedding or party going on because there were alot of people coming in with all sorts of musical instruments, dressed in a very middle eastern style, with robes and multicolor gowns and bustling all over the place. In contrast, four guys sitting in a circle with laptops out is not hard to spot.

We went downtown for some dinner, at a restaurant where a polylingual waiter served us in practically every language we wanted. After going around the table in three languages, English, French and Dutch, he finally looks at me and says, "oh good, at least we have one Belgian". So i said where i was from and that i'm living in the Netherlands, and that set off a 'oh, you poor thing.' Over dinner, we had a really great conversation about what we see as the future of configuration management and all sorts of other fun sysadmin-y topics.

My presentation went ok, though it was my first iteration of the slides and presentation. I think because of the unique way i positioned the presentation, i put too much information in and made the classic mistake of not having the perspective to see it. I'm hoping the next time i do this, i can do puppetmanaged.org better justice.

After my presentation, i spent the better part of an hour talking to Dan Bode from the newly minted PuppetLabs about some of the issues we are both trying to solve. The conversation went over how puppetmanaged.org deviates from the official recommendations from PuppetLabs and the differences is approach to our solutions. My big takeaway from the conversation is that it's very easy to make these things complex really fast. It's going to be an interesting challenge to keep these tools simple, which is what made them so attractive in the first place.

After the first day, the LOAD team treated us all to beer and pizza, first outside by the pavilion at the school where the event was held, and afterwards, we moved to a nearby pub for even more beer. Given my previous experiences in Belgium, namely Fosdem, i took it easy and left around 12, so i wouldn't regret it the next morning.

The second day was a little bit more relaxed. I started with two round table discussions, the first on "Open Core" vs. "Open Source" projects and companies. The second was on the general topic of configuration management. It was really good to be able to discuss the future of Configuration Management in general without it turning into a flamewar on who's tool was better.

After the lunch break i sat in on two more sessions, one on how to do configuration management entirely with RPMs, and the second was on the LSC project, the LDAP Synchronization Connector, which i'm pretty sure we will be using in the future internally.

I want to thank the LOAD team for putting together the event. It really went smoothly, there were no issues getting around and getting things done. It was a great pleasure to have the chance to meet many people from all over Europe and even a few from the US who are looking to solve almost all the same problems i am. I can see alot of potential for this event in the future.

Doing FOSS in your $dayjob

Wednesday night, i gave a small lightening talk at OGD Utrecht about working with FOSS in the enterprise realm. This is a topic i've discussed with a number of people informally and i think i'm going to make into a proper talk in the future. It covers how to get the maximum benefit out of Free and Open Source Software and how to work with communities at the enterprise level.

It is structured around three phases that are meant to segue into a roundtable conversation. It begins with the use of FOSS inside your organisation, moves on to internal development and branches, and finishes with active development and hosting of projects. It's geared towards how FOSS is a good business decision and how to take said business decision and make the most out of it without compromising your values or the community.

Finally, it's the usual policy of mine that when you see this presentation, you should go out and present it yourself. I've licensed the slides as CC-by-sa, so feel free to go wild with them. They are structured around the bullet points you can talk about, but each line is meant to be a topic of discussion that can fill five or fifty minutes at a go. You can get the slides here http://ynemoy.fedorapeople.org/presentations/foss_in_enteprise/Open.Source.for.$dayjob.odp

Some Blogging Noise and Summer Coding

I realize i've been mostly silent about some of the things going on regarding the summer of code style projects. Perhaps i should make a bit of noise, so get out your ear plugs, because i've got two pot lids and i'm not afraid to use them.

Most know at this point that Fedora was not approved by Google for the GSoC this summer. Rather than moping about it, i've seen a couple of trends, both quite interesting.. To start, from the moment Fedora was rejected, Karsten Wade and the rest of the crew got together and started putting together the Fedora Summer of Code project. For a project that had so little time to get its stuff together, it's working out pretty well so far.

Second, we've shared a really good relationship with kernel.org in the past, and last November, i met John 'warthog9' Hawley and we talked about a couple of ideas that would serve the linux communities better. A couple weeks ago, JH sent me an email asking about one of the projects, a statistics project for distribution mirrors. This will enable distros and mirrorers to better plan for resources. If a student proposal is accepted for this project, i will be comentoring under the kernel.org name. There is also another project, chasm, from our own Ben Boeckel on the list.

All in all, it's going to be an interesting summer.