GNOME 3 and Fedora 15

Updated my own and my wifes computers yesterday to latest Fedora version, which included an upgrade to GNOME 3. Have to say I am quite impressed with it so far, I mean it is definitely a .0 release with a lot of little issues (like not remembering how to deal with my dual screen setup at work). But apart from that it feels pretty sweet, especially like the messaging integration into the desktop. It still got quite a few issues though, but here at Collabora we now have Jonny Lamb and Guillame Desmottes helping out with trying to polish it up.

The biggest change I found that was that of the attitude of my wife, she went from “linux sucks, why do I have to use this stuff” to “this is actually quite cool”.

So a big congrats to the GNOME 3 team for a wonderful release! I am looking forward to seeing how it develops in the coming Months.

I am generally impressed by all the nice work being done across a lot of projects these days, helping to make sure we have a really powerful and nicely integrated platform. It wasn’t that long ago the linux desktop (and server for that matter) felt like a taped together collection of stuff, but for each new release it seems the ease of use and polish increase, with good integration happening between all major layers. Efforts to drain the swamp, like systemd, does make a huge difference over time and draws us ever closer to the goal set when GNOME 2 was being created, remove the need to have configure options in the user interface to make the system ‘work’. If you need to enter a configuration menu to have basic functionality work, then that is a bug, not a feature.

I think there has been a general change in philosophy happening over the last 5-6 years, where we moved from everyone trying to fix the world in their own corner, to people instead trying to work together. For instance in GStreamer we have moved from trying to fix the problem by supporting every sound system under the sun, and instead try to work closely with the best solution out there to actually solve the problems people have, which is why people like GStreamer maintainer Wim Taymans have also been contributing to Pulse Audio over the last year. Enabling people to switch backends between ALSA, OSS, Sun Audio or Pulse Audio isn’t a solution, is it exposing a bug. So while the plugins supporting all those systems are still there of course, as they are useful for people in various situations, I think our thinking now is that when we find an issue that is best solved in Pulse Audio, as opposed to GStreamer, we solve it in Pulse Audio, instead of trying to make a second rate solution in GStreamer itself. And if there is a feature missing in Pulse Audio the solution is not to add an option in the user interface to ALSA, it is to add the feature to Pulse Audio. There are of course still cases where we need to support multiple plugins offering the same functionality of course, codecs being the best example, but if we want to make the open source ecosystem better we need to all focus on making things work well without needing the user to reconfigure which libraries and backends they use for a given task.

Seeing all this other great efforts move forward to plug the remaining holes I am also happy to say that by the end of the year we should have GStreamer 1.0 out the door, Wim Taymans is putting the foundations together as we speak. It should provide a lot of great improvements to GStreamer, like good solutions for handling 3D video for instance, but also provide a lot of speed improvements which will be especially useful for embedded setups (allthough I haven’t met a desktop user so far who hates getting faster software either.)

GStreamer Conference 2011 website up

The website announcing this years GStreamer Conference 2011 is up. I am really looking forward to this years event due to the great fun last years event in Cambridge was. This year we will host the conference in Prague in the Czech Republic, a city I long wanted to visit and now I finally got a great excuse to do so.

For those who missed out on last years conference I think it is safe to say it turned out to be a wonderful place to learn about latest developments in the GStreamer community and hear about some of the challenges and solutions being used when using GStreamer in various devices and projects. This year Wim Taymans will be able to present on all the progress being made on GStreamer 1.0 and let us all know how things are looking in terms of setting a final release date :)

I moved last years conference page to a new permanent GStreamer Conference 2010 site, I recommend checking out that site for links to videos of all of the talks last year if you are unsure about if the GStreamer Conference is for you. This year we are co-hosting with 3 other conferences, the Linux Kernel Summit, the Embedded Linux Conference Europe and finally LinuxCon Europe, so there should be something for everyone.

In the land of silly arguments

Seems Lennart started a bit of a debate with his Linux Sound layers blog post. Not all the reponses has been as enlightened though. For instance Aaron Segio managed to make me laugh with his argument for why Phonon was a good alternative for non-Qt applications:

“Phonon is also more than just an option for Qt apps: you’d be making a huge mistake not to use it. You see, Phonon gets you equal and native support on Windows and Mac as well without the user having to install, say, GStreamer..”

Really? Wow, I would never have thought that if you use something instead of the other you wouldn’t need the other…an absolutely brilliant deduction. While we are at it lets point out that if you install Firefox you do not need to install Opera, cause you already got a web browser!!

GStreamer is already used by cross platform applications such as Songbird and SyncTV. And Songbird is using the native codecs provided by DirectShow and Quicktime where available.

So in a celebration of self serving arguments: So if you just use GStreamer you get equal and native support on Windows and Mac as well without the user having to install, say, Phonon…

Dirac at the IBC

So I am just back from the IBC conference in Amsterdam. Enjoyed it a lot and got to see a lot of interesting new technology. Especially the SuperHighDefinition demonstration was pretty nice, although I think we have to settle with 1080p in the home for the forseeable future.

One interesting thing I noted was that a lot of booths was using the Big Buck Bunny video to demonstrate their technology. The BBC did this at the Dirac booth for instance, but also a lot of other vendors used this clip. Which do not surprise me as apart from Big Buck Bunny being of good quality it is next to impossible to get permission by right holders to get access to any of their source material to create a version of a trailer for instance using a specific encoder or codec. Don’t want to name and shame anyone, but I have for instance tried multiple ties in getting one of the major Hollywood animation houses to let us create a Dirac version of one of their trailers. While I gotten positive feedback from my (technical) contacts for doing this, getting approval from management and marketing has so far eluded us.

But there is some irony in that at a conference where companies in the broadcasting industry show their goods, they end up using something produced by a group of people outside their industry as getting permission to use the content they create themselves is to hard :)  (That said I should point out that the BBC also showed of a clip of their Torchwood sci-fi in Dirac HD, so the BBC did also manage to get permission to use some of their own content.

Another example of how crazy the rights jungle can be was that NuMedia who was demonstrating their DiracPro hardware products at the show even had to just write ‘Dirac was used by BBC to transfer video from Bejing 2008’ in their material, explaining how the BBC had used Dirac for their intermedia data transfer for the Bejing Olympics. Using the word ‘Olympics’ in their material was something they where told was not allowed.

Dirac Big Buck Bunny movie playing in Totem:
Big Buck Bunny Dirac Totem

Long weekend in Amsterdam

I am heading down to Amsterdam tomorrow morning to attend IBC. Got a few meetings lined up, but I am also looking forward to hanging out with David Schleef and Jan Schmidt. I am looking forward to the conference as it will also be a big event for promoting Dirac Video.

It will be my first ever visit to Amsterdam, so I am looking forward to exploring the city. I heard they got great coffee places in Amsterdam :)

Stephen Fry on FSF anniversary

Just noticed today that the FSF managed to get Stephen Fry to make a video in celebration of the 25th Anniversary of the FSF. Been a fan of Stephen for a long time, ever since I first saw him in Blackadder many years ago, so it is cool to see him doing this sort of promo for free software. Been aware that Stephen Fry has advocated free software in his blog for some time, but it is still nice to see such direct interaction with the community. The video is available in Ogg format using Theora video and Vorbis audio, which also makes me happy. I even ended up emailing them saying I be happy to convert their source material into a HD Dirac+Vorbis version if they are interested. Every time I see stuff being published in free formats it makes me feel very good about the work we are doing here at Collabora and the goals we have set for ourselves.

Dirac Everywhere

On the topic of Dirac there are a lot of fun stuff happening. One thing I failed to mention before, is that there is a Dirac Quicktime component available now. Still alpha quality, but part of the effort done to reach out to a wide a community as possible with Dirac. There has also been work happening on wider Dirac support in GStreamer and integrating that support better into GStreamer. For instance Thiago merged a patch from David Schleef to add Dirac support to the new quicktime muxer Thiago created as part of the summer of code. It already works well, but we need to do a little Pitivi hacking to enable it there. Edward hopes to get at that before the weekend. Finally Sebastian Dröge merged the transport stream muxer library and plugin into gst-plugins-bad, which also can mux Dirac video (the library used to be hosted on the old Dirac website). Sebastian will also be working on making sure that muxer can create some Playstation 3 friendly files going forward.

Also thanks to Fluendo and Zaheer we know have a working transport stream demuxer in gst-plugins-bad which of course also handles Dirac.

Centralising GStreamer plugins

On the back of this I think we will try to do a bigger effort to merge some of the external plugin repositories into GStreamer proper. For instance at Collabora we got the gst-plugins-farsight module which should have its plugins moved over. Our latest team member Mark Nauwelaerts got his GEntrans plugins which should also move over. Having a central set of repositories and plugins makes them easier to find for everyone and will also increase the ease of maintenance. And of course reduce the risk of people doing something which someone else has already done.

GStreamer Quicktime Muxing

So the official part of the summer of code is now over. I am sure the mentors will blog about the results in general, but since I have followed the Quicktime muxing project the closest myself and since Wim do not have a blog I thought it would be nice to give it a mention. Quicktime is a quite complicated format, orignally created with both editing in use, but also tied quiet closely to the quicktime media framwork. It also has a lot of derivatives like the MPEG4 container format and the 3GPP mobile container format. So when writing a muxer one need to take into account that the user might want a muxed file conforming to any of those 3 standards.

Anyway, Thiago Sousa Santos has been working hard over the summer and we now have the basic muxer working. With the baseline in place there are of course a lot of small details that needs to be taken care of, like adding support for all the different codecs which can go into a Qt/MP4/3GPP container format for instance. Thiego is well underway with that effort already though with h264 support added just a few days ago (I found a bug in the muxer testing it though, but I am sure we will sort that out quick enough). Other codecs we would want to support soon would be Dirac in Quicktime for instance.

The code is not yet in GStreamer CVS, but currently hosted in this SVN repository. But with the Summer of Code over I guess we can look into moving it into the main GStreamer repo. The great thing is that Thiego will continue working on the muxer even though the Summer of Code project period is over so hopefully all GStreamer users will have a top notch Quicktime/mp4/3gpp muxer to use once all major media formats are supported and tested.

So I would like to congratulate Thiego on having completed this years Google Summer of Code project in a absolutely brilliant way and thank him for the effort so far. The future looks bright!

How to mix code with different licenses

Got a question on IRC today about the licensing of a specific file in GStreamer CVS, as it was under a MIT license instead of the LGPL license. While we strive to keep our licensing simple by making all new code LGPL or in some specific cases dual licensed, there are a few cases where we got code which is under the MIT or BSD license. This create a situation where we have some files in a directory under the LGPL while others are MIT for example. While I think he have kept things on an even keel within GStreamer, I have noticed that there is a lot of confusion in the open source community in general, about how you deal with MIT and BSD code in a GPL/LGPL context. In some extreme cases I have even seen people just cut’n pasting the MIT code into their GPL project believing that the MIT ‘do what you want license’ includes the right to relicense the code. It does not.

Anyway, to clear up the details for myself I contacted Luis Villa to get some help understanding some of the possible corner cases. Luis then pointed me at this great resource from the Software Freedom Law Center for understanding how MIT and GPL code can co-exist in your codebase. I absolutely recommend reading over this to better understand the implications.

cdparanoia now LGPL v2

Some time ago I blogged about cdparanoia switching from GPLv2 to LGPLv3 on our request. After that time we have been discussing in the GStreamer community about licensing and what is the exact and implicit licensing promise we are and have been making with GStreamer. The conclusion was that since the LGPLv3 is more restrictive than the LGPLv2 we do not want LGPLv3 dependencies in gst-plugins-good and gst-plugins-base. As mentioned before we always tried to be very serious and coherent with our licensing in GStreamer and suddenly reducing the rights we offer application and plugin developers is not something we feel should be done without very good reason. This is a policy I hope also other important libraries decide to follow, personally I would think it would be a very sad thing if Glib and Gtk+ for instance started taking away rights from their users without a very well reasoned explanation.

Luckily Monty is a very kind soul, and starting from yesterday there is a new version of cdparanoia III out, 10.1, which is dual-licensed under the LGPLv2 and the GPLv2. So even in the future there will be cdripping support offered in GStreamer gst-plugins-base package.
So go to the cdparanoia download page and get yourself this minty fresh version of cdparanoia. We recommend distributions to update to this version as soon as possible to ensure there are no licensing conflicts in their distribution.

Let it Rip, Let it Rip, Let it Rip

We take some pride in the GStreamer community about our policy of keeping a tidy ship when it comes to licensing. Even though we did most of the sorting based on common sense, mixed with a bit of hobbyist lawyering and a conservative reading of the GPL it looks like we have succeeded. Tons of organisations are now shipping GStreamer core, base and good with their products and often combine them with their own plugins and packages.

Yet, we recently realized that we had let something slip through the cracks, in the sense that both the cd ripping libraries we supported, cdparanoia and libcdio, where under the GPL. According to our policy that means those plugins should be in gst-plugins-ugly and not in base or good where they currently reside. Just moving them was seen as rather painful though as it would have left many linux distributions in a difficult situation, with applications like Sound Juicer depending on one of those plugins being available to work properly.

Luckily a quick talk to Monty Montgomery, creator of cdparanoia and Vorbis, resolved the issue. As of yesterday there is a new version of cdparanoia available which is LGPL instead of GPL. A big thanks to Monty for this. We will update GStreamer so that the next version of gst-plugins-base requires this new version and correctly reports it as LGPL through gst-inspect. As for libcdio we will move that over to gst-plugins-ugly as that library is still GPL.

So if you are a distribution maker grab cdparanoia 0.10 to decrease the amount of license checking you need to do :)

Update: Seems MikeS spotted something that I failed to notice. Monty choose the LGPLv3 for libcdparanoia which means the situation is a little different, as it would mean the plugin is not compatible with GPLv2-only applications. Luckily most GStreamer apps are GPLv2 or Higher or more liberally licensed. A lot of them also have a special clause allowing non-GPL compatible GStreamer plugins. Guess this proves that those exception clauses are now also valuable even if you are not targetting non-free plugins.