Systemd in GNOME, PackageKit and what GNOME as an OS really means

Is the sky is falling? Is GNOME going Linux only?

recent proposal be PulseAudio and systemd lead developer Lennart Poettering to add systemd raised concerns that GNOME might drop support for non-Linux platforms.

Rest assure this is not the aim. Lennart in follow ups to his proposal explains that systemd could be separated into a core set of interfaces which could take replacement backends that support e.g. FreeBSD so long as it implements the interfaces systemd cares about or as it was their init system. What Lennart doesn’t want is a lot of additional code in systemd as it is today to support these platforms as one of the main advantages is the simplicity and elegance obtained by relying on the functionality presented by Linux.

Why should we care about what systemd cares about?

Because systemd gives us a powerful set of tools to improve the user experience along the improvements promised and shown in performance and standardization (read Lennarts excellent series explaining systemd on his blog). With systemd we can replace some core functionality such as ConsoleKit which would allow for a smoother multi user experience.

Solving simple problems such as setting the pretty host name that gives your machine identity. Systemd strives to allow this now by standardizing on such things as where this data is stored and it what format. Fundamental assumptions about the system that will benefit the user experience.

Systemd goes beyond that, it’s interfaces provides us a set of information and functionality which we can use to make GNOME more user friendly. E.g. systemd lets us provide a smooth experience via it’s control group tracking of all processes. This allows balancing of CPU (and likely also IO) resources between applications making a system slow down more graceful and the overall experience smoother. This tracking also allows GNOME precise knowledge of these processes. data which might be used for improvements in how gnome-shell displays information to the user.

Shouldn’t we wait depending on systemd till other platforms are supported somehow?

In honesty, resources are scarce and the truth is that the vast majority of developers and users of GNOME are on Linux. We have a reference implementation now on that most used platform and replying on it’s interfaces would allow us to provide a superior user experience both short term and long term. Depending on ystemd only means depending on its interfaces and competing kernels can init systems could very well provide these interfaces as well. That effort is though on their shoulders but with apparent willingness to cooperate.

How this is analog to PackageKit longterm

Many people misunderstand PackageKit, mostly I suspect because they have had poor experiences with the default PackageKit user experience. PackageKit is not about these tools, PackageKit is about defining a common interface to talk to the package manager. This allows e.g. integration so that the system is requested to install support for missing formats if it is available. Common examples of these situations would be missing compression formats like .rar, missing codec support such as .mp3.

It is not about .deb vs. rpm, nor yum vs. apt-get!

PackageKit like systemd exist precisely to avoid those fights. The existing tools and package repos are excellent, what we care about is not replacing them but working with them in a consistent fashion. In PackageKit every package manager implements a backend which supports a common interface. In the same way that depending on systemd allows the assumption of a common set interfaces which can be used to enhance the user experience. There should be nothing technically baring an analog solution for systemd as what PackageKit has for separated backends.

But the PackageKit user interfaces are still ugly David!

That is true and it is widely agreed that the Ubuntu Software Center is a superb experience. It currently works not using apt-get directly but using an incompatible PackageKit fork aptdeamon. Porting this to PackageKit is being undertaken by Alex Eftimie under Google’s Summer of Code 2011 so fear not you shall have the same experience as always, and it will be available on any GNOME platform. Naturally depending on completeness of PackageKit backend and existence, though most major distributions are covered to some degree.

Ubuntu’s other tools such as the update experience are also aptdeamon tools and could be ported. My personal feeling would be that the better investment of resources would not be specifying GNOME3 stories for upgrades and updates in additions to the stories already told by PackageKit.

PackageKit and systemd are slow!

And I postulate to all that slow is a bug. In the case of systemd one of benefits should be performance an Lennart is already matching an Ubuntu Upstart powered 10 second boot. As I understand with patches to a standard Fedora 15 install and no LVM as I understand. PackageKit might have hard problems to solve to match what aptdeamon gives Ubuntu in terms of performance and certain features but Richard Hughes has shamed concerns before with actual hacking. I would trust him to solve this problem long term and reap the benefits of being allowed the assumptions PackageKit gives GNOME now.

GNOME as an OS is (partly) about interfaces, not defining a Linux only desktop that runs only on Thursdays if the window is open

Interfaces like PackageKit and systemd allow GNOME to solve problems and provide real improvements to the experience. The sad side effect of leveraging what the vast majority of GNOME users already have in Linux is short term that GNOME will be Linux only. Long term it is up to the competition to provide the same interfaces. This is no different than depending on Tracker or GTK+, these needed tools which provide the interfaces we need might not run on a given platform. Given resource constraints it must sadly fall upon these platforms to contribute in providing those required interfaces.

An adventure in Open Source contribution

I’m now officially a contributor to Banshee.

While I have done a lot of advocacy work and packaging, this is my first ever proper code contribution to Open Source. Coding as such never really excited me and as a result it has been some 5 or 6 years since I last sat down to understand and work on significant code. Even then I never really got deep into programming as specification and design always was more fun to me than implementation.

It all started when a friend buzzed me a presentation by Anders Hejlsberg titled The Future of C#. While I haven’t done much with .NET I have always been impressed by it as technology and I was eager to learn of what new tools would come in the future. Naturally the talk was also attractive to me because one of the features Anders demos (Compiler as a Service) as a coming post 4.0 release feature is in Mono today, something I always like to think about when people say that Mono forever will be “chasing the dragon”. Regardless, the talk got me excited about coding and was extremely entertaining to boot. So I wanted to try something, anything, and since I like Banshee but also see it crashing and being slow a lot as a daily stress tester and bug filer I decided to subject it to experimentation.

In comes the magic of .NET, Mono, and Ubuntu. In Ubuntu I found all the tools I needed, namely MonoDevelop, mono-tools and finally Gendarme. Gendarme is a really cool project that can inspect assemblies and executables according to a set of rules for such things as security, performance and even bad practices. So I decided to run Gendarme on then content of /usr/lib/banshee-1 expecting to see a few hits and probably a lot of false positives. However Gendarme returned more than 8800 issues even on medium settings, so I limited my focus to just the performance rules set.

Gendarmes issue reports have excellent documentation with examples of bad and good code as well as careful explanations, making it easy to pick a simple problem such as the one addressed with my patch. In this case we now determine these variables at compile time rather than at link time which is faster. It is safe to do and doesn’t break external assemblies as the fields are not shown outside. All of which was explained by Gendarme and confirmed on the Banshee IRC channel. Gendarme even explained how to fix the issue, it could not be easier. Bertrand Lorentz was kind enough to sign off the patch and commit it within minutes. As an example the Gendarme article on the issue type my fix addresses can be found here.

Regardless, that was yesterday. Today my Banshee is once again back to being a git build by hand which with the excellent Banshee daily repo hasn’t been required since I stopped contributing to Fedora. The reason is simple, I needed to compile test some more changes as I was reading the Banshee source code and learning. With friendly hints from the existing developer base also growing some basic understanding of what is going on.

Contribution is easy, zero to sixty even, with Mono and Banshee.

Paying for software and supporting Open Source

I am getting a little tired of the accusation getting levelled at me when debating with the anti-Mono crowd that I don’t support Freedom and that I am destroying Linux. I even once got accused of taking a paycheck from Microsoft and/or Novell, but to be clear neither company has ever paid me a dime for any work, in fact no technology company has ever given me a salery. I have taken gifts in return for work, e.g. Novell kindly gave me a copy of OpenSuSE 11.1 and a t-shirt for some bug reporting.

While this types of claims are entirely baseless slanter I think now is the time to come out and say that I love freedom. I love freedom so much that not only have I used Linux for more than a decade as my sole OS but I actively donate to projects and people that benefit our ecosystem.

I am a dues paying member of the EFF, I am a dues paying Friend of GNOME. I preordered the Yo! Frankie game to support open game development even though I never actually got around to playing it but it seemed like a very important missing piece in Open Source to cover high quality open gaming and show that it cam be done with full transparency.

When Richard Hughes asked for money to buy a color calibration thingy, even though I likely have no need for the work he will be doing using it I donated. Richard has donated much of his considerable talent, time and effort to projects such as gnome-power-manager and PackageKit, work for which I am grateful every day and he deserves my gratitude in the ways I can show it and my thanks for improving Linux.

Likewise I am a customer wth Fluendo, not because I feel I have to get around software patents since they are not currently legal in Denmark. However I feel as a software tester that I should test not just the solutions that are kindly available to me but those I advocate less fortunate people to examine. That being said I have actually found the Fluendo codec pack to solve issues present in the open solutions and having a working DVD player is great. I don’t especially enjoy the proprietary nature of these products but I know that much of the money I pay Fluendo will be put directly back into GStreamer development and advocacy for Open Formats.

On the open content side I make sure to buy documentaries and movies such as Sita Sings the Blues, Good Copy Bad Copy and the Piracy Documentary. I also have just signed up for a membership with Magnatune to support their fine service (about which I have have ranted previously).

Most important to me personally though is the time I put into bug reporting and following Linux every day.

All of this can of course be documented, but really it shouldn’t have to be. The accusation that I am destroying Linux is lowbrow attack which is beneath any reasonable argument. Consider this what should be a completely unneeded rebuttal to such claims.

So I ask you, what have you done for Open Source lately. Do you merely rant and leech or do you support with actions, words and wallet when you can?

Call of Nouveau testing reply

Christopher James Halse Rogers asked. I thought I would answer in video format (Blip.tv – Flash warning).

A full resolution Ogg Theora file is also available thanks to the awesome blip.tv here.

Also glad to see OMG UBuntu! not only picked up my first video demoing a few of Banshee 1.5.5′a features but also my discovery in the Banshee Community Extensions that UBuntu Mono maintainer and part time superhero Jo Shields is working on an Ubuntu One Music Store Extension for Banshee and in an additional lavishing of much deserved attention to the Banshee project they reported on the merging of the exciting Grid View branch.

A little more time with Ubuntu

In the quest for the perfect Linux for me, I decided to give Ubuntu a longer bit of time on my setup. This lead up largely to the weeks till the release of 9.04 meaning it is the latest Ubuntu has to offer.

Ubuntu has a very solidly frozen release which kinda bothers me since I either have to apply an unsupported PPA external repo to get the version of software upstream supports. This is the case for things like Banshee e.g.. In addition Ubuntu does not seem very willing to adopt software early which means that 9.04 ships with the older 0.9.14 version of Pulseaudio, which is a shame since 0.9.15 definitely is an improvement and finally lets me set up 5.1 (though still only analog). Again I can enable a PPA but that leads to a support nightmare (and breaks the awesomeness that is Apport) which I am not really prepared to bestove on anyone having worked with supporting users myself I know that I always like them to be in the most vanilla state I can get them to lessen my burden. This is a larger problem though of what to do with regards to the balance between a static release with updates and a rolling release. I do not believe this to be an easy problem ti solve but making people rely on PPAs to get important updates to X drivers and leaf applications like Banshee is not a good way to solve it from a QA point of view. What is, seems a huge problem space which would be interesting to explore.

There are also some really annoying moments, mostly when dealing with the package manager. I really miss an up to date PackageKit 0.4.x and interacting with apt-get or dpkg from the commandline just doesn’t feel as natural as using yum or rpm. The output of yum e.g. is very clean and easy to follow as is the out of rpm. In contrast dpkg has multiple lines of jibberish which one has to dig into to find simple information like version numbers for filing a bug report. I really think the time is approaching rapidly to have dpkg put down and radically redesigned, things like debhelper are especially poor designs for the target audience Ubuntu has. If you default to a situation where asking questions during the installation of updates you have failed. My metric for this is normally how quickly my mother would call upon me screaming “IT’S SAYING SOMETHING AGAIN!!! HELP”. Aside that dpkg is extremely frail for some reason, it falls over and gets it database corrupted quite quickly and unlike with rpm the recovery has not be easily discoverable (rm -rf /var/lib/rpm/__db.00* && rpmdb –rebuilddb normally takes care of it). It lacks some nice modern functionality like rollbacks and delta downloads, sadly it does’t look like it will gain them anytime soon either. I am concerned that I have yet to see a clear sign of commitment to PackageKit from Ubuntu, they don’t have the latest version and despite being marked as “in process for Jaunty” we still do not have it by default in any capacity.

I hate the fact that I can’t delete everything relating to gimp and openoffice without also losing my danish translations for everything else. Yes I know OpenOffice has features like a presentor that GNOME office does not have but AbiWord does just fine for me, it’s pretty, quick and very stable. I should be able to remove all those useless help files from OpenOffice as well. Minor nitpick I know but it seems that Ubuntu isn’t very flexible when it comes to changing these applications.

The Mono stack works beautifully, documentation is generated for everything and the coverage is near spotless (all I lack is Monsoon). You are given a full MonoDevelop stack. It’s truly a thing to behold how well kept it is and how much work has gone into making it the best Mono stack around. Additionally the excellent debian/ubuntu Mono team has done some impressive work cutting down the size of applications by removing Mono 1.x functionality meaning that now Banshee and all it’s dependencies take up less space on the CD than rhythmbox. I find this especially interesting as one of the, fallacious, accusations I got when proposing Banshee as the default media player in Fedora was that I disregarded the space contraints and I suggested just this solution to meet the requirement along with splitting out debug information. I am happy to see that it paid off for them and I hope that the patches will be broken out and pushed upstream where possible, also so other distros might benefit that they become available in something other than dpkgs default horrid one mega pseudo patch per package format. Truly masterful, and I get moonlight in the repos as well which rocks my rationale mind.

The desktop itself has some nice tweaks, I like the idea of using the fast user switching applet to do presence and to handle the logout/halt/suspend/hibernate scenerios. I just wish they did that work upstream so that everyone would benefit from looking at the design and applying. It is though a very nice idea and it works really well with Empathy. I do lack the option to set some predefined custom states such as “Having dinner” and such. There is the risk of growing this list very long if one was to do this though.

I hate Launchpad marginally less now, I still think that it is confusing and dead hard to use but somehow work gets done. It needs to be orders of magnitude easier to use before I beats bugzilla though. In the same sense I really miss an easy overview on a per package basis of all the bugs, like bugz.fedoraproject.org/<packagename>. It makes it much easier to do what I love, namely breaking software and triaging bugs, in an effective manner.

Suspend just works… most of the time, I have gotten the system into a state where the network driver never regained life and other little wringles but overall it is the first time I have seen suspend work consistently on this laptop. I hope the same is the case for other people so that one day we might rely universally on this technology to suspend machines when they are idle. If wake up could be made really quick perhaps a system as envisioned by OLPC that would suspend the machine while reading a website might be a viable future for us all.

I am still not sold on the per home directory encryption and it does worry me that I have yet to see any evaluation of this technology by a 3rd party security expert for flaws. It is appealing to have security that does not require every user of a machine to know the master password to boot it yet still have the advantage of knowing that while you are not logged in your data remains safe. It also does not encumber boot nor imparts the performance overhead to system binaries that full disk encryption would do, which is another appealing idea. I would like to have a more informed opinion on the design before I judging one way or the other. It worries me that I have not been able to find a wiki page listing the known weaknesses in this approach, it is not enabled by default but it would still be nice to be able to look up more information. Personally since my laptop is used only by me, I used the alternative CD to install and used dm-crypt, then added this on top, mostly “because I could”, surprisingly the performance overhead of doing this was very low. I think what worries me is that it seems like such a finely pick solution that does the best from a user point of view that it really has to have problems from a security point of view – experience tells most people that when sounds to good to be true, it very likely is.

A problem that seems to plague all Linux desktop right now on this laptop is that it takes very little to make it lock up for seconds or minutes. Audio stutters when the slightest load comes along. It didn’t used to do this but looking at the cpu scaling the slightest load seems to cause a problem where it instantly lowest the cpu speed to the lowest setting. I am currently unaware of what is going on and I don’t have another machine to confirm that it isn’t just this machine going tits up. Ubuntu sadly is affected as well, I won’t deduct them any points but it does make Linux as a desktop very painful on the whole.

Jaunty is an excellent desktop I would not hesitate to recommend it to people, out of the box you get a lot of very nice functionality and a very polished look and feel. It does somehow feel like it is the end of the line for the current Ubuntu desktop and that their experiments with new UI elements will have to lead to some major changes. Hopefully they will be able to pipe this into the GNOME 3 process in a standardized manner so to avoid basically forking the desktop.

Consistent experiences

Today I spotted an interesting little usability tidbit in the Ubuntuforums. A user who had recently switched to Linux was confused that double clicking the trash applet opened 2 nautilus windows. Now clearly he mentally connected the underlying technology but failed to notice the context. An applet require a mere click, however in file browsing context double clicks are required.

This made me think, where outside of nautilus do we in GNOME default to requiring double clicks. The applets, notification icons, the menu (and menu items), the window list – all single click. All I can think of that defaults to requiring double clicks is nautilus. So clearly the correct question is not should the trash applet require double clicking but rather why is nautilus inconsistent with the rest of GNOME.

In that vein of thinking I swiftly changed the default to single clicking.

Funny how I never noticed this before, a new user user asked about it. I wonder how many other small little details like this are hiding in our platform.

Triaging Banshee

Our current Banshee maintainer is sadly a bit busy, so I decided to spend a bit of time trawling the mailing list for patches to some of the problems our current package has. Spot kindly built everything for me (sorry after the signing incident I just haven’t gotten around to reactivating my account, it seems convoluted to me and I do most of my work in bugzilla anyways). So now your F10 Banshee should not crash when switching tracks (gstreamer buglet), transferring artwork to an iPod on 64bit also works now and more models are recognized. Additionally more mime types are now correctly handled in taglib-sharp amongst them songs bought via iTunes. As part of the upgrade session 1.4.0.1 was also pushed (1.4.1 was released yesterday but that I suspect is a post F10 release update – it does bring sexy handling of devices like the first Android phone and preliminary Bittorrent download capabilities).

All in all Banshee once again lives up to it’s promise of being the best media player available on Linux. I would love to see it replace Rhythmbox in F11 as the default player, this more than any other application change we have done would be smooth since Banshee automatically imports your existing Rhythmbox database. Risk free and we get some nice features such as proper portable player syncing, Upstream is also on a predictable schedule and is very responsive in cases of bugs.

I’m anti-Brasero

Well, not so much anti Brasero as pro doing things right really. Having a separate burining application is a horrible idea that stems back to the days when computers came without cd burners. It became an add on item for which support was needed, as use cases grew so did the horrible apps – now looking at Nero one of the apparent favourites it has grown from a simple little app that did the wrong job to being a several hundred meg app that does the wrong thing.

Having a separate application for burning is like.. imagining a world where if you want to save your work to a floppy (youngsters, replace the word floppy with USB stick),  you would be required to launch a completely separate application only then may you be allowed to do your work. This naturally being the way it would work instead of just selecting the destination in every application.

Burning is no different, it should be integrated where it is needed. In my media player, in my file manager, in my photo manager. Was it not for patents, I would want to highlight a movie, then select convert to DVD in my file manager or my media player, or I could in the context of my photo manager have my photos backed up to a media or turned into one of these slideshow DVDs.

How about some nice widgets and a library application designers can use to integrate burning. Make it easy and see where people put it to good use. I really honestly and truly see no reason to continue down the path of having this workflow, Free Software is or could be the shining example of improving computing for all. Just look at what we have done so far, look at Sugar, the work being done exploring for GNOME 3. Wizbit, PackageKit.. so many paths of excellence.

And yet, Brasero was proposed for GNOME inclusion, to what so far has been nothing but favorable opinions.. clearly my logic must be flawed.

The oddness we call the GNOME menu structure

Something that has annoyed me quite a bit lately is that a desktop as usable as GNOME still has some glaring problems with it’s defaults. Take the menu bar as the example, it has three entries “Programs”, “Places” and “System”. Which while a fairly vague and bluntly put bankrupt attempt at application centric workflow, it does work.. a little.

First grievance, what’s up with the Internet entry. I know once upon a time “Internet” was considered a seperate entity but today nearly none of my apps fully function without internet access. Making it a meaningless point of distinction when it comes to workflow. My “Internet” catagory currently contains “amsn, empathy, xchat-gnome, firefox, deluge and monsoon” meaning they can be seperated into Communcation tools (amsn, empathy and xchat-gnome), download tools (deluge and monsoon) and webbrowser.

Communication is being built into the entire desktop as we speak so hopefully these will go away, likewise downloads should be invoked when I click a torrent file I shouldn’t really need to go click an item. If there are remaining download, maybe the torrent handler – and why again is this a seperate download application…download should really just be download, let the lower layers worry about where my junk comes from – I’d love to see a similar approach to gvfs file copying, no matter which protocol I use a get a nice detached progress bar and the system will alert me when I am done.

The web browser is a special case, it is a gateway to a world of experiences, not an application in itself. Maybe the correct approach is to give it a completely separate entry, a bit like about GNOME in the system menu. It doesn’t naturally fit into any category 100% and yet is a core tool which means we need to keep it handy.

That brings us to the programs->System tools entry, which is plainly a sick idea. I already have a whole menu item for System administration, why aren’t these merged? Probably some old hat distinction between apps that run as root and apps that run as a user but yet manages your system.. the patent absurdity of this given that policykit now exists leaves little doubt that the whole thing is an exercise in obscurity which should not be inflicted on our users.

One could go on and on about the illogical placement of applications but it just goes to illustrate that while the program centric workflow has brought us so this far, it is a bankrupt idea. I don’t use OpenOffice Writer, I write documents. My system should be structured around letting me do my work not handing me a list of applications whose lines of distinction are getting blurrier every day. Clearly a new approach is needed and alternatives are being explored currently for GNOME 3.0.

That is not to say going task centric is always the right answer, an application like the web browser still poses a problem for this approach as it is a bottleneck narrowing down several types of work into one entry. Things like prism and google chromes similar “application entry” address this neither of these seem to be approached with much joy nor have they seen much system integration. One simple example of this is my workflow for mail. I use Gmail for everything but even using prism to make Gmail a “seperate application” it still does not register a way to make the default for clicking mailto: links opening a new composer window via prism+gmail. This is a great source of annoyance as one now has to copy and paste addresses, or go back to using evolution.. both in all honesty hellish and horrible experiences.

It happened while you were sleeping

Today, inspired by a bit of free time while the washing machine does it’s thing I poked at rawhide. Specifically I was interested in why.. once again.. my iPod had stopped working in Banshee. The component responsible for this is Podsleuth, a neat little C# ditty which does all the magic for us.

First roadblock, the new rpm version is stricter with the fuzz so rebasing one patch was required. Then Podseluth needed to be adapted to the new sg3_utils, a simple little patch later and we now compile (many thanks to Dan Horak for pointing out my typo).

Now it still doesn’t actually run but the original 2 issues being fixed it now exposes another bug wherein it seems we cannot find HAL on dbus. This I am still trying to figure out but not at all bad for idle poking while I wait for the laundry to finish.