So I got George R.R. Martins latest book ‘A Feast for Crows’ delivered on Friday and spent a large part of the weekend reading it. The book has been something of a disapointment and its shortcomings are similar to the problems with recent Robert Jordan books, a cast of characters grown to big, the author not being able to cut away some dead meat and general verbiosity. The too many characters problem has the same origin in both George R.R. Martins and Robert Jordans books. They started out with a group of people and at that point their number wasn’t a problem, then they split the group up so no you need multiple storylines to cover them all. Neither author seems prepared to put any of their characters on the backburner either, turning them into secondary characters (at least for a while) although Martins did kill of a few of them in his first books.
Martins have also ended up splitting this fourh book into two, with the second part meant to come out next year. Problem is he split it mostly on a per character basis, which means that the next book will in many ways not move the story forward at all compared to this book. And this book did very little to move the story forward to begin with. Sigh.
I still think its a good book series, but Martin (and Jordan) should take to heart that even in multi-book epic series, sometimes less is more.
So Wim decided to go lethal on our list of undocumented API’s in GStreamer core. Today it reads:
100% symbol docs coverage (1449 symbols documented, 0 symbols incomplete, 2 not documented)
We got something else working today and as you can see the reaction is quite extreme.
The recent news coverage about the case of a 23 year old female teacher having sex with a 14 year old boy made me think about the problems you face as when being a 14 year old boy.
Honestly I think if you do a poll among 14 year old boys if they would be willing to trade in their acne, bracers, school bullies and exam problems with having sex with a 23 year old good looking blond woman, I think the poll would come out fairly unanimous. Could of course be that I am misremembering my priorities when I was 14, but I don’t really think so.
Ok, first of all thanks to those who posted to my previous blog mentioning pkg-get, it somewhat like what I wanted (but my experience so far wants me to label it the paralympics version of apt-get).
Anyway my Solaris goal of the day was to get GStreamer installed and working. Which turned out to be easier said than done. First of all Solaris seems to be a system where no matter how many ‘bin’ directories you add to your PATH you always seem to need some more.
Secondly configure fails to find a working C compiler, even if I install Sun Studio 11. Just getting a message about my compiler not being able to create binaries. The reason for this according to my config.log seems to be being unable to access a libdwarf.so file. Which doesn’t suprise me as the libdwarf.so file is in a directory called amd64. Which either means I got the wrong version of Sun Studio 11 installed or it is missing this file for my 32 bit system.
Got a little disapointed in pkgbuild too, but I guess that was due to having to high expectations. It is not like I am able to use my Fedora SPEC files on Mandriva or Novel Linux either without editing it.
I installed Solaris 10 on a extra machine at work in order to be able to do some tests in regards to a customer of Fluendo. The experience so far has been mixed. The main issue is the utter lack of drivers bundled with Solaris, especially since this includes network drivers this is a pain. There is actually a large driver writing community around Solaris, but Sun doesn’t seem to bother pulling those drivers back upstream. So after a lot of extra effort spent downloading drivers, compilers and so on, burning cd’s and getting the driver installed I also found that Solaris features absolutely no tools for configuring anything. So getting my new network driver to work was about creating lots of files in /etc using online howto’s.
The pleasant experience is that JDS on Solaris is fast, much faster than GNOME is on my GNU/linux system. So either there are patches in JDS optimising some stuff (like the gnome menu always snapping open with all icons instantly) or its just some underlaying Solaris processes being better able to drive GNOME.
A point of frustration now is the lack of an update tool. Nothing like apt-get, yum, red-carpet or redhat-agent.
So if Sun manages to get more drivers included in Solaris, get some configuration tools working (like port the GNOME Setup Tools) and integrate one of the many update tools out there then Sun could have a winner on their hand.
Making product and sales materiel
Been working this week mostly on writing some kick as product brochures and leaflets. People are constantly writting us asking for information about our current and upcoming products and the information materiel I have had so far hasn’t been as nice as I wanted it, nor as informative. Been a suprisingly fun thing to do as our products and goals materalize very well through the process too.
It can be compared to when Dom asked me about GStreamer 0.10 last week, listing the improvements up for Dom helped me ‘remember’ how much nice stuff we have actually got into GStreamer 0.10 (plan on doing a proper writeup soon). And writing these brochures helped me ‘remember’ how much great stuff we have done in Flumotion for instance, it is easy when you are closely involved with the development to get overly focused on the bugs being worked on or features you have planned, instead of lifting your eyes and seeing the beautiful landscape of what have already been acomplished.
Maybe something a lot of people both in GNOME, but also in the community at general should do. Take a look up from their day to day hackery and see what great things we have achieved already.
Every group of people have their core topics. In our little social group the topic of eating cheese and the topic of eating moosecock seems to resurface at regular intervals. As mentioned in an earlier blog my uncle is in town these days for the annual meeting of EU vetrinarian group for poultry. Having worked with Norwegian food production all his life he can get hold of almost any kind of food. So he brought a box of moose-cheese which I had the pleasure of handing over to Wingo today.
So the next time he tells the joke about the two hunters the answer will not be moosecock, but moosecheese.
So I put up a Wiki page on live.gnome.org at the suggestion of Stefan Kost (who deserves a lot of gratitude from the community for his steadfast work on the GStreamer API docs). Anyway, anyone who have some input on this should edit that Wiki page with your scenarions, suggestions and ‘I will work on this’ statements
Anyone who have a 770 I recommend you upgrade your firmware by downloading the latest image from maemo.org. It is much more stable and seems faster than the normal production image for me. Also be sure to grab some extra Applications.
GNOME 2.14 and GStreamer
One question posted to my last blog entry which also pops up on IRC at times is the question of when GNOME will be ported over from esound to using GStreamer everywhere, so people can get sound events etc. and so on without using esound. I also noticed the issue being mentioned in the Ubuntu wiki of things they hoped for. The reason it hasn’t happened yet is due to both the eternal lack of developer resources, but probably more importantly some uncertainty about how to do it in a way which not likely to cause tons of issues.
Today esound provides three things to libgnome: a simple play_file API, sound sample caching and remote sound playback. It also provides some well tested backends for a lot of different platforms.
GStreamer could easily provide the play_file API, and at the same time improve format support a lot, so that part is relativly easy to address. Since GStreamer have a esound plugin and also plugins for other popular soundservers the third item is also taken care of.
The problem is what to do with the sample caching. When this has been discussed in the past the idea proposed was that there is some sort of API added in GStreamer which provides abstraction for sample caching with some kind of fallback when the underlaying system don’t support it.
Especially this last item could be a lot of work, depending on how ambitious you are. The simples solution is not to cache when the underlaying system don’t support it, and I am starting to feel this is the approach we should go for.
So anyway the job is relativly well defined, but since it touches core modules in GNOME which calls for extra carefullness and needs some GStreamer devel design work and implementation it has so far been something no-one either confident enough for and/or felt they have time for. So in terms of developer resources we are stuck between new contributors feeling the task a bit overwhelming and experienced contributors being swamped with items they feel are more critical.
Anyway, I still hope we get around to doing this switch soon, we know it is much wanted.
Ok, my last mention that there probably wouldn’t be DVD support in the next version of GStreamer/Totem/GNOME seems to have made quite a few people worried. Got comments about it to my previous blog and also comments about it on IRC.
Anyway, what is needed for DVD support with GStreamer 0.10 is simply some people coming into #gstreamer on irc.freenode.net or contacting the mailing list saying that want to work on this and asking what plugins needs porting. Currently dvdread, libcss, dvdnav and dvdsubdec are the plugins I know about. Updating these plugins from the GStreamer 0.8 API’s to the GStreamer 0.9 API’s. The GStreamer team have been working a lot on improving the API and development documentation for this release and there are even porting help in the plugins writers guide.
That said both Martin Soto and Tim Muller stated that they are planning and working on it and try to have it ready for GNOME 2.14. Martin is already working on getting the mpeg/dvd demuxer ported and fixed which is an important first step. So with these two and hopefully more joining in, we will not only have DVD support in 2.14 it will work even better than in 2.12.
We have Tim Müller staying and working with us here in Barcelona since yesterday. We have been doing some focused hacking and testing with the result that we have Flumotion working with GStreamer 0.9 now and a new release is imminent. Currently we are doing a Totem hacking and testing session. With latest CVS most of the files in our testsuite plays with Totem. Some stuff remains though, mostly adding seeking support to the demuxers and porting a couple of more plugins to fill out the format support. Hopefully we can within a couple of weeks start asking the wider community to start hammer the media playback in Totem.
Only area which is mostly unported yet is DVD support and I think we might end up with GStreamer/Totem not supporting DVD’s in the next GNOME release. Of course it being Free Software we never know what will happen, maybe someone will appear and start porting over the DVD plugins.
Brian Cameron is already working on porting the SunAudio plugin so hopefully GStreamer 0.10 will be a good story also for OpenSolaris users.
Also got a nice reply today to a mail I had sent Michael Roitzsch of Xine fame. Hopefully we can find ways to work togheter to the benefit of the members of both projects.
My plan is to spend a lot of time next week making some really nice brochures and information pdf files for customers intersted in either Flumotion or the Flumotion Streaming Platform. Hopefully we can also move a bit forward on our beta program so we can start having people test our GStreamer plugins.
So Edgard Lima have done an initial port of the Tremor/iVorbis plugin to GStreamer 0.9. Today I tested it on the Nokia 770. It played my testfile back with a CPU usage between 30% and 40% percent.
Still quite a few bugs though, like support for playing a streamed file, and also being able to use the lowmem Tremor version which should reduce resource usage.
Also borks out at playing for a while. Not sure why yet, could be related to the power saving stuff.
Pipeline used for testing is : gst-launch-0.9 gnomevfssrc location=”http://192.168.1.70/u2.ogg” ! tremor ! audioconvert ! esdsink