Interesting comments

Found this interview today with Jeff Bonforte, a Yahoo VP. He talks a lot about usability of web applications and claims a focus on usability is the reason Yahoo messenger and email is more popular than Google’s services. I would have been more impressed if he had also mentioned that a large part of those numbers might be related to Yahoo’s email and chat being around for quite a few years before Google got into those markets.

He has an interesting quote in the article though:
On Yahoo! Messenger for the Mac client, I reduced the functionality by 30 per cent and increased usage by 35 per cent. As we take out features, it tends to do better with the mainstream users.

Apart from being an interesting quote in terms of the eternal discussion about GNOME usability it did strike me that being an online application maker has some great advantages, like being able to measure exactly how each change you do influence usage patterns and popularity.

New Schroedinger release out

So David Schleef is kicking ass currently and our Dirac implementation, Schrodinger, is moving quickly forward these days. I just cut a new development releases of both Schroedinger and libtsmux so be sure to check them out.

The plan is to try to make much more frequent releases from here out as things are coming together fast now and the package is at least generally useful for testing.

Be aware that the weakest link in the package is currently the encoder, but this is also what David is focusing on at the moment so expect to see big strides forward in the next few weeks and months in terms of quality of encoded video. Could be we need to tweak the encoder setting further also, although David tried add some sensible defaults for this release.

Here is a couple of screenhots of Totem in action playing a movie I transcoded from a HD Quicktime clip.

dirac screenshot 1

dirac screenshot 2

The pipeline used to create this movie was:


gst-launch-0.10 filesrc location=animusic2dvd_m720p.mov ! decodebin2 name="decode" decode. ! ffmpegcolorspace ! videoscale method=1 ! "video/x-raw-yuv, width=(int)640, height=(int)360" ! ffmpegcolorspace ! schroenc ! queue ! oggmux name=mux ! gnomevfssink location=file:///tmp/anime.ogg decode. ! audioconvert ! vorbisenc ! queue ! mux.

OpenOffice almost ate my document

I spent quite some time yesterday trying to editing a document I had been sent. I didn’t actually check the file format before I loaded it into OpenOffice, but today I found that it was a RTF file. Anyway, the editing went well and I saved my changes without thinking about it and sent the document of to the people I was corresponding with. Then today I got a mail back that the document was unreadable. It was at this point I realized it was a RTF file and not a Doc file I had been sent.
I tried loading the file in OpenOffice and it failed miserably. So it turns out that OpenOffice exports RTF which neither it or Microsoft office is able to read.

Out of the blue came my saviour. Abiword was able to import the document and save it again in a RTF format that OpenOffice was able to read and all my changes to the document were saved from oblivion.
Abiword had a weird error where it ‘blinked’ on certain section of the document, but that was a small issue compared to the almost destruction caused by OpenOffice :)

The beauty of free software

So I spent quite a bit of time this weekend working on an article I’ve been brewing on for quite a while. Don’t know if the article ever will reach a state where I will publish it, but as I was writing it suddenly two of the things I where writing about people where blogging about already working on. So a big thanks to John Stowers for his work on Conduit and to Ryan Lortie for his work on panelcompositebin. Thanks to guys like you doing great stuff my article almost become redundant even before its out of first draft status :)

On Sawfish, Metacity and Linus

Managed to get myself embroiled in a little email exchange with Linus about configurability options and GNOME. Seesm that little exchange even managed to hit Slashdot.
The misconception that I feel Linus have and a lot of the people posting on Slashdot is that patches that adds configuration options to GNOME would automatically get rejected. This is simply false.

At best this is an extrapolation of the quite strict policy of Metacity in particular and the general GNOME policy of ‘no GUI options before thinking’. This policy did come into effect with GNOME 2.x and it came about both due to UI design usability discussions, but also as a result of seeing our config menu’s get clogged with options which mostly where there due to bugs, missing features and a heterogen deployment environment below GNOME. It was decided to focus on actually trying to solve these lower level issues instead of offering config options to work around them. A talk by Jim Getty’s at GUADEC called ‘Draining the swamp’ being considered the call to arms on that issue. Projects such as HAL, the rejuvenated X.org effort and many other freedesktop projects came about almost as a direct consequence of this.

There was also some misconceptions on the Sawfish to Metacity switch that happened in this time period. It is not correct to say that Sawfish got replaced by Metacity due to it being deciding its high degree of configurability was bad, far from it. Sure there
where people who felt Sawfish went a bit overboard in that regard, but that was not the reason it got ditched as the default GNOME window manager. The reason for that was simply that after Eazel went backrupt and Sawfish maintainer John Harper had to find a new job, he ended up at Apple. And thus due to Apple corporate policy, and probably long hours at work, he couldn’t maintain Sawfish anymore. The troublesome thing about Sawfish was that it was written in its own Lisp dialect so as part of Sawfish you got both an extra lisp interpreter and GTK+ bindings for it. This meant that the C/C++ skills in the GNOME community didn’t lend themselves well to fixing bugs in Sawfish.
The two libraries and Sawsfish itself thus went unmaintained as John went away and nobody where interested/felt qualified to take it over. Thus the GNOME developers had to look around for a new window manager and it was decided that one should aim for one written in C like the rest of the desktop libraries to lessen the chance of future maintenance prolems. To answer this call Havoc Pennington stepped up with Metacity and it was quickly adopted by a lot of GNOME developers and users and subsequently chosen as the standard.

Metacity was philosophically very different from Sawfish and Havoc
was very strict about what he let into Metacity, due to an idea that requests for config options was usually a result of broken behaviour in the window manager and thus feeling the behaviour should be fixed instead of a config option added to work around the problem.
This was in line with the policy that do govern GNOME as mentioned above, but in the case of Metacity this was applied in a much sterner/hardcore fashion that for most other modules.
But due to Havoc’s high profile in the community and beyond it I think the policy he kept for metacity colored how people outside the project perceivedthe project as a whole which is the main reason I see for this hard killed perception to live on.

Anyway, back to Linus and his irritation with Metacity. I can’t not say if his patches will go in or not, its not my call. But I did at least add them properly to bugzilla for Linus to ensure they get reviewed and commented on at least.

More on GStreamer Windows and Mac support

Thought I should follow up on yesterdays post about Windows and MacOS X with some more information. The work is done in collaboration with the great guys behind the SongBird
music player
. Those who don’t know Songbird its a very cool cross platform Music player built using XUL, the same GUI toolkit used to make Firefox. The idea is that by making sure GStreamer runs perfectly on Windows and MacOSX in addition to Linux/Unix they can use GStreamer as their backend across all platforms. The Songbird guys are doing some very cool things around web integration of their music player so I recommend everyone to take a look at their onsite demo.

Anyway to show of where we are at here is a screenshot. The screenshot shows our small proof of concept Windows mediaplayer playing a video under Windows. For a more full featured experience look to future versions of Songbird.

You can download binaries for Windows including the little sample player here on this site maintained by Sebastian Moutte who is our resident Windows porting expert.

We are a little shorter along on the Mac side of things as the Mac videosink is currently leaking memory like crazy and screenshots of audio playback tend to be a bit less interesting :). We expect squish those leaks and polish it up further in the next few weeks so I can provide a nice screenshot of GStreamer on MacOS X too.

We are implementing the GStreamer XOverlay interface accross all these video sinks. That means that you should be able to write a video player without any kind of special casing across platforms for video and audio output, GStreamer’s output autodetection should take care of it for you. So for Songbird it will let them write the code embedding the video window once and it will work using native video output on both Windows and MacOSX in addition to under X Windows of course. When these elements are 100% finished and polished up I think porting things like Totem or Pitivi to Windows and MacOSX should be quite trivial in theory with both GTK+ and GStreamer running natively on these platforms. That said practice tend to prove that there would be some work involved :)

It should also be mentioned that thanks to Songbird we are not only able to provide these elements to the community, but they will be fully documented and polished up. This means the Windows and MacOS X output support will be 100% solid and not just ‘checkbox’ level.

gst-phonon code now public

Some time ago I announced that we would be working on a GStreamer backend for Phonon. This work is still ongoing, but we have now put the code into the GStreamer CVS repository. The code is still early stage, but at least those interested can now follow the code as it progresses. One thing people will notice is that the current code is still all C which I guess most people would find strange for something meant to be used with Phonon. Well the idea is to provide the Phonon components with both a C and a C++ API. So the current code is meant to both be usable from C and also be easily used to power the GStreamer backend for Phonon. We decided on this approach as we found that since a lot of the work on implementing a GStreamer backend for Phonon was actually about writing some high-level GStreamer components and at that point we came to the conclusion that offering people to use them with a C API in addition to the official Phonon C++ API made quite a lot of sense. The code and design so far have been done by Wim Taymans, but in order to get more focus on the development from here on we will have David Gerber take over from here and work exclusivly on this for a the next months.

GStreamer for Mac OSX and Windows

Those following GStreamer CVS will have noticed that there has been quite a few commits recently for audio and video output plugins for Windows and Mac OSX. This is not a coincidence as we are currently working on a project to ensure that GStreamer works perfectly on these operating systems. The Windows audiosink and videosink should already be in working order and the MacOS X audio sink also works fine. We still have some work needed on the MacOS X video sink, but we hope to have that done by the end of the Month. With these plugins in place writing a cross platform application with GStreamer should be very easy so I suggest anyone working on crossplatform development take a look at the plugins and try them out on their own systems.

Elisa priorities

I know a lot of you are waiting for us to add PVR support into Elisa. This task is making its way quickly up our todo list, but one thing we are going to try to tackle first is how we handle large media collections. Anyone who has ever run Elisa will notice that while it looks very nice the current GUI concepts are not very practical when you want to find/play one specific song in a collection of many thousand. We consider this the top issue atm in order to make Elisa not only look nice but be really nice :)

In Elisa related news the first official release of Coherence happened today. Coherence is a Python Upnp framework developed by Frank Scholz and is the framework we use for all the upnp goodness in Elisa.

ffmpeg pains

Back in the day we tried relaying on ‘released’ versions of ffmpeg in GStreamer. The problem was that there never really was any releases of ffmpeg and the versions that floated around all tended to have different API’s. So what we discovered was that when distributions packaged GStreamer and a other multimedia systems using ffmpeg one or the other always tended to end up broken. So in the end we gave up on relying on ffmpeg as an external dependency and instead set up a system to ‘suck in’ snapshots of ffmpeg into the GStreamer ffmpeg plugin and thus avoid the problem of different applications conflicting due to relaying on different versions of ffmpeg.

Well it seems some of the major distro’s have decided that they want a return to the painful old days. The problem is that even to this day ffmpeg change its API’s more often than Linus Torvalds change his socks and they still don’t do proper releases, thus relaying on it as a shared library is a pain. Yet distributions in the name of security and not wanting duplicate copies of the code installed are now trying to get all their ffmpeg using systems to share one install. So if you get tons of weird error messages on your console when running a GStreamer application, please dont blame us, but instead email the package maintainer for your distribution with your frustrations.

Morocco trip

So I managed to get the Marocco photo’s
online tonight so I thought I document the trip for posterity.

Marrakesh

Stayed at the Atlas Asni
hotel. Not a backpacker place for sure, but not horribly expensive either. My impression of Marrakesh and most of the towns we found in Marocco was that they where effectivly two towns. You had the old city which was still within their original medival city walls and next to it a new modern city. Marrakesh featured a lot of beautiful architecture, especially the Bahia Palace stood out. While there Wim and I visited/got lured into the taneries, was an interesting visit both visually and smell wise :). We also got hijacked into a local leather and carpet shop and which both Wim and I was each a carpet richer and a bit of money poorer. Also signed up for an evening at Chez Ali which is a gigantic resturant and folklore show. The show was definetly interesting, but I couldn’t help but feel that it felt a little short due to little things like for instance giving you some insight into who the dancers and groups represented in terms of Moroccan society and maybe a bit more choreography to the horse show. But still definetly worth it. We also figured we couldn’t visit Marocco without riding a camel so we signed up for a trip with local trip organizers Sahara Expeditions. We signed up for their 2 day trip which included one night in a berber tent in the dessert. Turned out we ended up traveling with a fun group of people, including two crazy Canadians called Oryan and Jeff. While the camel trip and the desert stay was fun I did regret not signing up for the longer trip though, the trip we took did end up being mostly two days in the car back and forth with only hour or two of camel riding at each end. Also we noticed that there where a lot of cute backpacker girls signed up for the longer trip :). That said both Wim and I ended up quite cripled for a few days just from the little camel riding we did so maybe we did ok as it was :)

Back from the desert we rented a car and set of for Fes, deciding for a little detour past the d’Ouzoud waterfal on the way.

Trip to Cascade d’Ouzoud and Fes

We decided to go by the d’Ouzoud waterfall on our way to Fes. As it turned out we never found the actual waterfall, but we drove through some beautiful mountain terrain. We also ended up staying in the town of Khenifre instead of reaching Fes. Khenifre was maybe not a terribly interesting town from a sightseeing perspective, but it was a pleasant change in the context of people giving us non-inflated prices for things like the hotel room. I guess not being a tourist town had spared them from slipping into the mindset that every foreigner is a walking cash dispenser.

Fes and Rabat

Next day we drove into Fes to look around the old city. Fes being the old city of learning and religion I have to admit I where a bit disapointed in the town. Had expected more in terms of architecture for instance. Of course having caused a chain collision on the way into town I guess we might have been a little bit to edgy to really enjoy the town :). Drove down to Rabat in the afternoon and spent the morning after sightseeing around. Rabat is the administrative capital of Marocco and used to be the adminstration town of the french. It shows with one of the major landmarks in the town being the church built by the french.

Casablanca

Casablanca had three major events/sights. We did a guided tour of the Hassan II Mosque. It was a very beautiful building, but walking through the slums on the way to the mosque you couldn’t help but wonder if it really was money well spent in light of the problems of the country.

The second fun stop was Rick’s Cafe which was an attempt to recreate Rick’s Cafe from the classic movie Casablanca. Such things tend to easily end up cheesy, but I have to say that in this case it had been pulled of beautifully. Part of the reason for that is that it was clearly done as a labour of love and not primarily as a business venture.

The last don’t miss waypoint in Casablanca I have to recommend is the Bodega de Casablanca. Its a Spanish bar/resturant with a great menu and a great athmosphere. I ended up seeing more bullfighting and listening to more spanish music during the hours I was there than I has for all my years in Spain :). To top if off they have a nightclub in the cellar which seems to be the place to go for the young and beautiful of Casablanca. It comes with a great DJ and crew. Stay away from the places called nightclubs in Casablanca though, they are generally horrible places.

Marocco and free software

As a sidenote, what struck me in Casablanca was that it could be a great place to host GUADEC. So any local enthusiasts interested should definetly think about it and get maybe send a proposal to the GUADEC comitee :)

Off to Marakesh

So Wim and I are going on a vacation/hiking trip to Morocco this evening. We are flying into Marrakesh and will be staying there for a few days. Apart from that we don’t have any concrete plans apart from our return flight Sunday in a week :). At this point even the hotel reservation we thought we did seems a bit flaky, but hopefully we at least avoid sleeping in the gutter. Wish us good luck!