The challenges of Desktop Linux

So Miguael de Icaza posted a blog with his opinion about why Desktop Linux has not become a huge success. The core of his argument seems to be that the lack of ABI stability was the main reason we didn’t get a significant market share in the desktop market. Personally I think this argument doesn’t hold water at all and the comparison with MacOS X a bit random.

So I think there are a lot of contributing factors to our struggle in the desktop market like:

  • We are trying to compete with a near monopoly (Windows)
  • Companies tend to depend on a myriad of applications to run their business, and just a couple of them not running under Linux
    would be enough to derail a transition to Linux desktops
  • We were competing not only with other operating systems, but with a Office productivity application monopoly
  • We are trying to compete by supporting an unlimited range of hardware options
  • We divided our efforts into multiple competing APIs (GNOME vs KDE)
  • There was never a clear method of distributing software on Linux outside the distro specific package system.
  • Many of our underlaying systems were a bit immature
  • Software patents on multimedia codecs made it hard to create a good out of the box experience for multimedia
  • Competing with free applications is never a tempting proposition for 3rd party vendors
  • We never reached a critical mass where porting to desktop Linux tended to make sense
  • An impression was created that Linux users would not pay for any software
  • The different update cycles of the distributions made it hard to know when a new API would be available ‘everywhere’
  • Success in other areas drained resources away from the desktop

The Apple Myth
So how did Apple succeed? Well first of all the question needs to be asked if they have succeeded? When Steve Jobs came back to Apple I think their global market share for personal computers was down to just below 5% if my memory serves me correct. According to Wikipedia (not the best proof of anything, but lets assume they are in the ballpark) their marketshare is now about 7.5%. So in other words on the back of being the media darling and record breaking products such as the iPod, iPhone and iPad, they have managed to increase their market share with 2.5% in the PC market. I think that speaks volumes about the challenges posted by the first two items in my list above. Another thing that is both an advantage for Apple and a disadvantage at the same time is that they got their own hardware. In the advantage collumn that means that their developers had a very limited set of hardware configurations to support and they could ensure MacOS X ran well on that configuration. We on the other hand have been struggling with trying to support basically any random configuration out there, which means ensuring a problem free experience for everyone is next to impossible. Of course I think only supporting your own hardware also does sometimes makes things harder for Apple, because if a company was considering switching to MacOS X they would have to throw away all their existing hardware, which I am sure makes a lot of companies think twice if contemplating switching.

Apple were also able to build on their old market share when launching MacOS X, which means they have had a profitable ecosystem all the way. So for instance porting games has provided enough income to support companies in keep doing so. While for Linux it has often been a proposition of trying to build a market when considering porting to Linux.

Conclusions
So I could go intro great detail for each of my bullet points, but I think they are quite self explanatory. But my general point is that I when I ask myself if I think our market share would be significantly higher if our ABI stability had been even better, the answer is no. Not that I am saying I think it has had no impact at all, I am sure examples exist of ABI breakage or distro fragmentation having caused 3rd party software developers to shy away, but I don’t really believe Linux would have had for instance a 10% marketshare today if only our ABI stability had been better over the last 10 years. But maybe it would have added another 0.2% or something in that range.

But as I said in an earlier blog post, I am not negative about the future of Linux and open source on the desktop. I just think it is a lot slower slog to get there than we hoped for, and I do honestly feel that we have a much more compelling product to offer today than we did 10 years ago in comparison with Windows and MS Office. But the challenges in my bullet point list remain and overcoming them has been and will continue to be something we have to chip away at, one step at a time. And in the meantime linux and open source software is still doing extremely well in a lot of other end user facing market segments where the competition was not so strongly entrenched, like mobile phones, tablets, TVs, set top boxes, in-flight entertainment systems, in-vehicle entertainment systems, home applicances and so on.

Back from GStreamer Conference 2012

Came back last evening from the GStreamer Conference and I am now back in Cambridge for the weekend. The GStreamer Conference was a lot of fun this year and it was great seeing everyone again. I think the mixture of talks we had this year was really good and I think everyone attending enjoyed themselves. For those who missed the conference this year then Phoronix and Lwn.net posted articles from the Conference. The talks where also recorded and will soon be available at the Ubicast GStreamer Conference website. We did try to get livestreaming going this year, but due to technical problems it didn’t work out, but maybe next year.

A big thank you again to our Gold Sponsor Collabora and our Silver Sponsors Entropy Wave, Fluendo, Igalia and Google. Thanks also goes to LWN.net, Phoronix and Ubicast for making sure the talks and sessions at the GStreamer Conference can reach a wide an audience as possible. And last but not least a big thanks to all our conference speakers who took the time and effort to prepare presentations for this years GStreamer Conference.

For me personally the GStreamer Conference this year also marks the end of my life in Cambridge, UK. Starting from next week I will have completed my period of comuting to Brno, and will instead be living in Brno, Czech Republic on a permanent basis. Which reminds me, we are looking to hire more members to our Brno desktop engineering team, so I will be posting a blog soon outlining what kind of experience we are looking for.

Further hacking on Transmageddon

Heading off to Munich in an hour, but I been spending the morning trying to get git master transmageddon into shape. I think I am getting there as things works a lot better for me now. I even added a small feature, namely output to the notification area as seen in the screenshot below. Still very basic, but I hope to improve on it over the next few weeks. Also wondering if putting the Transmageddon nuclear mushroom in the notification area is a good way to keep users calm, or if they see the icon and start wondering if their system is suffering from a meltdown :)

Screenshot of Transmageddon with GNOME Shell notification

Screenshot of Transmageddon with GNOME Shell notification

Transmageddon and GStreamer 1.0

Spent today working on Transmageddon, trying to get it ready for the GStreamer 1.0 release. It is frustrating going as I only get a little time here and there to work on it, and thus my memory of the code is not as good as it needs to be in order to do this efficiently. But I did in the end manage to file a couple of GStreamer 1.0 bug reports and restore the preset functionality to almost where it was before the GTK3/GStreamer 1.0 port.
When starting the port I disabled and removed a lot of code that in retrospect I still needed as I made some wrong assumptions about how encodebin would work. Going over the code now I also realize I have done some things in a quite stupid manner, or maybe the approaches made sense in the original codebase and just now over a series of iterations have become cludgy, anyway tried cleaning it up a bit, but didn’t have the time to really go over the code and make sure it looks nicer.

Of big issues remaining is that the missing codec functionality is still not 100% restored and working nicely, so a little more work needed there. But if you have all codecs already installed then things are shaping up quite nicely. So I think I am getting very close to having a GTK3 and GStreamer 1.0 version of Transmageddon at feature parity with the GTK2 and GStreamer 0.10 version.

Also thanks to Kalev Lember, Transmageddon is now in Fedora (the latest 0.10 based release) and he also made me co-maintainer of the package which I a very happy about. Hopefully this means that when Fedora switches to GStreamer 1.0 I can get the new Transmageddon up and running there quite quickly.

Also Gendre Sébastien plans on working on Transmageddon going forward and have already made some really cool mockups for a revamped UI. A lot of new features are planned, like the number one request I keep getting, support for setting up batches of transcoding jobs instead of having to do them one by one like now. My plan is to release a first version with the current UI and featureset for GTK3 and GStreamer 1.0, and then work with Gendre to implement his ideas. This new UI will also be more GNOME 3 styled, so hopefully it will provide users with something that feels more at home in the GNOME Shell and on Unity.

The Future of GNOME

Having just returned from GUADEC and now having the desktop as my job focus I been thinking about where we are going and what to do next. Benjamin managed to get quite a bit of press for his abysmally negative post, but I think his mis-stated the situation quite badly. As Dave Mason said during the history of GNOME talk, we have more or less always feel threatned and felt at times that we had an insurmountable task competing against systems with a lot more developers available than we do. There are some dark clouds in the skies, no doubt about that, but when hasn’t there been in the 15 years of GNOMEs existence? For instance the current tug of war between the GNOME shell and Unity? We have been there before, with Ximian and Eazel pushing competing visions for the GNOME desktop back in the day. Major corporate backers leaving (Nokia) or being in trouble(Novell)? Eazel and Ximian again. GNOME being perceived as being Red Hat only? That was the exact story that was being pushed before Sun and Ximian came on the scene. GNOME 3 turning away users? Hey, I can tell you that the amount of flames we got for GNOME 2 easily beats the GNOME 3 flames.

But for each of those events in the past we ended up bouncing back stronger afterwards, and I suspect we will come back with a vengance this time too. The thing is a lot of things are actually going very well. First of all the are a lot more shared projects with a healthy amount of resources behind them these days. WebKit is a great example of a project of crucial importance to GNOME, but which we share with a lot of other projects and companies. Take LibreOffice for example, yes LibreOffice do not contribute a lot of git commits to the GNOME git respository statistics, but thanks to LibreOffice we have the best and most full featured Office suite ever available to our users. And thanks to Firefox and Chrome we have browsers available with world known brands. And thanks to GStreamer, which is on freedesktop, we have a world class multimedia framework available. Instead of having our own sound server like we did with ESD, we now share a top notch sound server with all linux systems in the form of Pulse Audio.

Back during the GNOME 2 development cycle the GNOME project took an active decision that we would try to reach out to more of these external projects and try to work with them to integrate them into the GNOME experience. And we have succeeded at that, which of course have the side effect that instead of having all that development happen inside GNOME, we have bigger more active GNOME friendly projects doing these things outside GNOME.

We also made a conscious decision to focus on draining the swamp, which meant that instead of trying to work around issues and come up with funky configuration options on the user interface level to deal with missing features and bugs in the underlaying system, we instead have tried working with and contributing to fixing things in the underlaying levels. This of course moves attention away from ‘GNOME’, because people then commit their new fixes to those underlaying systems instead of implementing 100 000 lines of workaround code to ‘GNOME’, I mean I still consider Lennart Poettering a GNOME hacker even though his current work isn’t on anything in the GNOME git repository. But that does not mean that GNOME does not benefit greatly from these improvements.

So as we have succeeded in all these goals, GNOME should be a leaner setup than it used to be, as we don’t have to do all the heavy lifting inside the GNOME project anymore and that is a good thing.

As for projects such as Unity, well personally I don’t mind them at all. I mean I always saw XFCE as being a strenght and benefit to GNOME as it brought more users and developers to the shared library stack, and there is nothing different with Unity. And yes, there are some unfortunate duplications which seems redundant even in the context of differentiation, like the GNOME Online Accounts and Ubuntu Online accounts split, but hopefully we can work together to resolve such things over time.

And as for taking the desktop to the next level I think the main challenge for GNOME is not inside the GNOME 3 desktop, but instead it is a question of if the open source community can come together around pushing things like the Linux OpenGL support forward and make sure we have a strong foundation for supporting games and improving visual effects in the desktop. I for one really hope that Valve’s decision to support Linux with Steam, and the success of the Humble Bundle games on Linux, will help rally support behind the efforts to get Mesa to support newer iterations of OpenGL and get the open source Nvidia and AMD drivers in shape. Microsoft has long ago abanndoned PC gaming in favour of the Xbox, lets see if we can make Linux fill the gap.

In general I am very optimistic about the future, the strenght of the open source ecosystem is not that we have more developers to assign to a given project at a given time than Windows or Mac, but no matter what they do we keep moving forward on all fronts, so while Apple and Microsoft focus on beating each other in the tablet and phone space, maybe the time is ripe for us to strenghten our positions in the server and desktop markets? I mean tablets and phones might be all the rage atm, and maybe they are bigger markets than the traditional server and desktop market, but the server and desktop markets are still huge and ripe with opportunity if we play our cards right. And if we can deprive Microsoft of things like their Office cash cow, then that levels the playing field all the more when we later take them on again in other areas.

GStreamer Conference 2012 Schedule online!

I am very happy to announce that the schedule for this years GStreamer Conference is available. The schedule includes talks about GStreamer 1.0, the new GStreamer SDK, GStreamer security and quality and hardware enablement with GStreamer. But we also have a great range of talks on related topics like Wayland, ALSA, V4L and the Opus Codec, so there should be something for everyone.

This year the GStreamer Conference is being hosted in the US for the first time, so we hope a lot of you will make your way down to San Diego at the end of August to attend. If you are only attending one conference about Linux Multimedia this year, then this should be it :)

A big thanks goes to the sponsors of this years GStreamer Conference which includes our Gold Sponsor Collabora and our Silver sponsors Entropy wave, Fluendo, Igalia and Google.

Also a special thanks to this years press and media partners. lwn.net, Phoronix.com and UbiCast

GUADEC 2001 : Down memory lane

Came accross a photo album today from GUADEC 2001 in Copenhagen. It was the first GUADEC I attended (the second ever) and it was quite fun to see the photos again. Not to many photos of me in this gallery, closest I found was a group shot of myself and others listening to a gnome-print talk, where I can be spotted wearing a blue shirt, but partly covered by my friend Owen-Frasier Green.

An interesting photo though is this one, showing what was actually the first time the GStreamer team got together in person. In this photo you can see the blue shirted back of Wim Taymans, a head scraching Erik Walthinsen and a red cap wearing Zaheer Merali in addition to Wim’s girlfriend at the time, Michelle and the creator of aRTS, Stefan Westerfeld.

GStreamer team at GUADEC in Copenhagen

That said I think the best GStreamer photo from GUADEC in Copenhagen is still this one:

GStreamer team

Zaheer Merali, Wim Taymans, Owen Frasier-Green, Christian Schaller, Richard Boulton, Erik Walthinsen and Bastien Nocera

Anyway, I hope to see as many of you as possible at this years GUADEC in A Coruna, Spain. And who knows, maybe there will be some fun photos taken to look at 11 years from now :). I am especially looking forward to talks from my fellow Red Hatters here at the Brno office, I think we do a lot of cool stuff here in Brno and it will be good to let the world know about it.

Arrived in Brno

Felt it was time I updated my blog with a new entry as it has been quite some time since my last entry. A LOT has happened since my last blog post, none the least that my beautiful wife and I are now the proud parents of little Amelie.

Photo of Qurat-ul-Ain and Amelia in front of city of Bath

My two girls

We had quite a sprint before the little one was born, fixing up the house we had bought in Cambridge, preparing to get it ready to be rented out after we have completed the move to Brno.

And that is the last major thing, that I have now started my job in Brno at Red Hat. Been great so far, even if the weather has been somewhat on the hot side. Been meeting and talking with a lot of great people here and I am really looking forward to working closely with my new collegues at Red Hat making sure that RHEL, Fedora and Linux continues to evolve and grow stronger.

I have also been planning and preparing the GStreamer Conference 2012, which will take place in San Diego, USA this year. We have some great presentations lined up and I hope to have the full program up by the end of this week. So I hope to see as many of you as possible there this year too!

Starting a new chapter

Having signed and sent of my contract I think the time has come to let the every one know that I am starting to work for what I think is a very cool company in just two Months, Red Hat. I have been a Red Hat and later Fedora user ever since I first tried Linux back in the late 90ties (by installing either 4.1 or 4.2 of Red Hat Linux), so it does feel like a bit of a homecoming for me. And in my opinion Red Hat is still what they where back then, the biggest driving force behind pushing linux and open source forward. And this is what I hope to be a part of by joining Red Hat, to play my part in continuing to push new innovations into the operating system and through that make it an even better choice for more and more users and organisations out there.

It is still with a bit of melancholy that I leave Collabora behind as I am very proud of the team we built there over the last five years. The amount of features and maturity we managed to put into GStreamer over those years and all the new usecases we managed to cover is quite amazing. But with Rob and Philippe at the helm I am sure the company will continue to prosper even without me.
I will of course continue to be a part of the GStreamer community and will be working with both Collabora and the GStreamer community for instance on organizing this years GStreamer Conference (hope to have the GStreamer Conference 2012 page up in a few days). So while I am now moving onto a new challenge I do not plan on leaving all the great people and friends I made behind, in fact since my new role at Red Hat will be as part of the Desktop team I will continue to haunt a lot of the same conferences and gatherings in the years to come :).

Also as part of this new job I will be moving to Brno in the Czech Republic, joining the 400 strong Red Hat team there. For me, the best thing about living in Brno, in addition to being a very nice city, is that it will allow me to put even more pressure on Jimmac to create a new icon for Transmageddon, as he will be living only a few hours away by car :)

Plotting the future of Transmageddon

After a long period of very slow development of Transmageddon where most work has been in debugging issues with GStreamer 0.11 and porting existing features to GTK3 and GStreamer 0.11, I decided it was time to start thinking about where to go forward again. That said, there are still some issues with the new GTK3 and GStreamer 0.11 version, but I needed a break from just tedious porting/re-implementation work and instead start looking at some new ideas and features.

There are two major items I am thinking of. The first is what to do with the usecase of people just wanting to create a manual transcode. The goal of Transmageddon is to make transcoding simple, but the problem is that I am trying to simplify something that is inherently quite complex. The current user interface doesn’t really let you set a lot of things and I know that sometimes that will create files that doesn’t conform to the needs of the user, for instance a lot of settings are just kept from the original output file, like number of audio channels or bitrate used and so on. And many others just rely on the default values of the GStreamer elements used. I don’t want to try to support tweaking all of them through the user interface as there is no way of doing so without making the user interface either cluttered or filled with what will be for most people just gibberish. It is the problem I feel for instance Handbrake is suffering from, that yes it does let you set everything you could ever need, so it can create files that will be useable in some cases where the default user interface of Transmageddon falls short, but it also becomes a hard to navigate jungle for people. My answer to the need for that level of settings is and will continue to be the device profiles option, which I also have some plans for. That said there are a couple of features I do think would be useful to enable from the non-preset interface, like being able to resize the video, choose if you want deinterlacing or not and to allow you to choose stereo output for the audio and finally I want to allow the creation of transcoding queues, so you don’t have to wait until one transcode is finished before configuring another one.

The one special feature I already got in there, the ability to rotate the video, so that if your video for instance was shot with a camera held sideways, also felt rather arbitrary (it was put in there due to a very early bug request) to have exposed in the userinterface.

So what I have been experimenting with is as user interface which has an Advanced menu option in which you can set certain things and also enable certain extra options in the user interface.

Idea around adding an Advanced option in Transmageddon


So as you see in the screenshot above there are certain options which you just turn on/off and certain options which when enabled will add extra elements to the userinterface as shown below.
If I go down this route the question of course comes what options to put into this Advanced menu and also if I should make the settings persistent accross runs of Transmageddon or if I should let Transmageddon return to its default settings every time you start it.

Transmageddon with all advanced options enabled

The Transmageddon editor

Of course the Advanced menu will never become the solution to all transcoding challenges, the device profiles will still be that. But I realized that editing textfiles is not for everyone and it also makes creating advanced profiles a task for even fewer people than there needs to be. I don’t know how many people out there have made their own profiles, but the only one I ever got submitted was from Stefan Kost who made one for the N900. That is probably mostly due to lack of documentation of how to create profiles and where to put them, a problem I have been planning to remedy. That said I realized that maybe creating some kind of editor would be an even better solution, as it could provide a lot of helpful tools for profile creation and thus making it accessible to a lot more people. Which is why I been trying to prototype what such an user interface could look like.

Profile Editor image

Screenshot of prototype for Transmageddon profile editor

The interface above is what I got so far, and it is just a glorified profile viewer atm, but my hope is to make it fully functional and hopefully useful to people. One feature I really want to do is to allow you to take an existing video, have the profile editor analyze it and create a new profile that will allow you to replicate the settings of that file. So when you get a new phone or device the manufacturer most likely put a sample file on it, you can then load that sample into the editor and the editor will create a profile that matches it. This will enable you to transcode other files to that profile and thus make them work on your device.

That said this will be a major task creating this editor, because I want to to contain a lot of clever logic, so that it doesn’t just end up being a glorified text editor, but I will need to test and experiement to figure out what that logic will be and how to expose it in the user interface.

Anyway, I am hoping to hear back from the community on these two new things and playing with to hear what you think, both from a usability standpoint and of course ideas for how the features could work or should not work, and what you would need to make Transmageddon suit your needs.