planet.freedesktop.org
July 02, 2009
The 6xx/7xx 3D driver is starting to do useful things again after moving over to the radeon-rewrite mesa code base. As of last night, it seems to be behaving properly on 14 of the 63 tests in progs/redbook, drawing incorrectly on 24, and either not drawing or crashing on the remaining 25. Cooper found that the following tests rendered correctly : 

hello, plane, torus, list, aargb, smooth, tess, varray, tesswind, model, anti, bezcurve, picksquare, and cube.

The driver currently segfaults after running ~10 frames of glxgears - Richard is looking into that. Alex is hooking up the texture code to the new bufmgr code, and Cooper is going through the redbook tests and picking off problems as he finds them. Development and testing are primarily being done on discrete graphics cards; not sure of the current status on 760/780/790 IGP parts.

The r6xx-rewrite branch was synced up with mesa master recently, so merging it into master should be fairly straightforward. A bigger question is how and when we decide that the API to the drm is not likely to require further changes, ie when it makes sense to ask to merge the new drm ioctl support into the main kernel tree. The changes are relatively small and the chance of breaking any *other* support is extremely low, so maybe there's a chance of making 2.6.31 but we haven't had that discussion yet AFAIK.

If you want to try the latest code (with the caveat that it is *not* ready for general use), you want the r6xx-rewrite of mesa/mesa, and the r6xx-r7xx-3d branch of ~agd5f/drm. The drm code works with 2.6.28 and earlier, but has problems with 2.6.29 and higher.

After seeing that I possibly might have had some exploits run on my site again, I upgraded to wordpress 2.8

After reading up on hardening wordpress, the official site mentions AskApache, some plugin that helps hardening. I’m not too sure about it yet, because it wants to be writing .htaccess files in my directories and for that I have to open up more than I would want. But hey, let’s give it a go.

At some point it creates a username and password that you choose. I go on and configure stuff, not knowing very well which of its many modules I’m supposed to activate, or why.

I forget about it, and ten minutes later I check my mail. I have a mail from AskApache. With my login details. And the password in plaintext.

Is the WordPress security model just fundamentally broken ?

My level of Spanish being what it is, and my accent being what it is, my cab ride to Las Palmas cost me some €60 from the airport, and that's after the cabbie switched off the meter...

Apparently, the «Catalina Park» apartments booked by the nice people at the GNOME Foundation, have a namesake near Playa de Inglés.


From top to bottom: where I wanted to go, where I was, where I ended up (locations provided «by ear», do not try to replicate at home). Yippee!



FreeFA

In other news the FreeFA tournament is going to happen next Thursday, from 15:00 to 17:00. I'll put the details onto the Wiki when I can remember my password.

Yesterday was cause for celebration. We got together to celebrate five years of the Fluendo Group!

01072009

The picture quality is bad, and not everyone is in it, but I just took it on a whim after marveling how many people were there. I didn’t even know all of them – yes it’s gotten to that point. 67 months ago I arrived in Barcelona without the company even being created…

We celebrated with mountains of cheese and rivers of wine which in the first year would have lasted us a few weeks and now only lasted an hour.

As magical accidents sometimes happen, today is also the day Fluendo received the certification confirmation from Dolby for our DVD player. It didn’t take long to land in the webshop, so finally our DVD player is up for sale! So you know what to get us for our birthday – a shop checkout with the dvd player in your cart.

Good timing – that means that at this year’s GUADEC/Desktop Summit I know what the answer will be to one of the most asked questions I get.

This is the first GUADEC I’m going to with Kristien in tow, I hope she can manage. I’ll be there from Monday through Friday, because the week is bookended by two weddings. Looking forward to a GStreamer summit on Thursday discussing 1.0…

So we've had an -ati DDX with KMS support in a branch for quite a while, but it was starting to grow into a very big mess, and some of the hacks in it were quite unmaintainable.

So started cleaning it up and pushing the bits to master.

Step 1 was adding macros in all the places in the accel code to abstract away the different command submission methods, and
add some ifs to do KMS specific things. Once this was done in theory the accel code wouldn't functionally regress and wouldn't require any more changes.

Step 2 was bringing over the kms and DRI2 support files from the branch.

Step 3 was making the decision between if (kms) if (!kms) blocks all over radeon_driver.c in all the various functions or having a nearly completely separate KMS/DRI2 driver file. The original code has the if approach and it was an unmaintainable nightmare, so I opted for approach 2 and it definitely is the best. At driver probe time in radeon_probe.c, I now do the KMS check if the pciaccess probe is called (kms without pciaccess is probably not going to matter). If I get KMS supported the driver picks a nearly completely different set of functions for PreInit/ScreenInit etc. I now have a separate radeon_kms.c file which has all the DDX interface in it. Of course if we have any changes they may need to be done in two places, but its a lot cleaner than it was in the other codebase.

I also ported the KMS code to use the libdrm_radeon buffer management code which is shared with mesa, instead of the DDX having its own buffer manager code base. This code is well tested via mesa, however it hasn't got all the features/optimisations that I've added to the DDX bufmgr over the last while.

So what's left:
Missing optimisation from old buffer manager:
1. buffer in VRAM? has the buffer ever explicitly been validated to VRAM, this allow for an optimisation on download from screen.
2. Download from screen, with driver pixmaps we don't know if the buffer is in VRAM or GTT, with (1) we can either blit if in VRAM, or just memcpy if in GART.
3. force a buffer to validate in GTT or force a buffer to stay in fast CPU access space - this was really useful some sw fallbacks where a buffer would end up in VRAM and then get used by the CPU from there. It probably only really takes the place of fixing EXA properly so the pixmap scoring is separate from the offscreen memory, and having a XA that works with driver pixmaps a lot better.
4. bugs and crashes I appear to be hitting a realloc crash at some point where glibc reenters itself and fails.
July 01, 2009
(I know, this blog is supposed to hold news about radeon development, but I just read something really cool on IRC)

09:02 #dri-devel: < Weiss> awesome - first picture on the screen using KMS on my FreeRunner! :D

Yes, that's right. KMS is being worked on to run on the OpenMoko FreeRunner mobile devices. It's especially cool since I own such a thing :-D

Woo, Jan Schmidt just created a wiki page so people can register to the most important part of GUADEC: the Ice Cream Deathmatch (renamed to Ice Cream Eating Competition, probably because Jan doesn't feel he can win ;-)). So go ahead and register! If you want to help organize this, send us a small note — we don't know yet the date or format of this competition.

Last year, the deathmatch was crazy, with Henri being stunningly fast. And fast is actually not giving him enough credit...

So the BBC is making a new drama series about the battle between the ZX spectrum and the BBC Micro. Currently codenamed ‘Syntax Era’. As it turns out Clive Sinclair, the creator of the ZX Spectrum, had his offices very close to the current Collabora office here in Cambridge. And due to our own Edward Hervey knowing some of the people involved, the production team behind this new series came by our offices to do some location scouting some weeks ago. It is a little bit up in the air if they are going to use our offices or not in the end, but there is a chance they will, and if that happens there is also chance you might catch some familiar faces as extras in this new series :)

Last week was LinuxTag, in Berlin, and I went there to help with the openSUSE booth. We had a really nice booth, where people could play with laptops, try the build service or SUSE Studio. Oh, and we enjoyed writing words with magnetic letters on a board :-)

Attendees were mostly german people, of course. So it was quite funny to start talking with people in English, and have them reply in German ;-) But after some time, I got used to German again, so I could talk a bit, or at least understand what people were saying. Yes, you might not know about it, but I'm supposed to have a good level of German. Let me stress the supposed...

openSUSE booth at LinuxTag

Image from Adrian Schröter

This was a great opportunity to meet various people from the community. I discovered how active the people from the openSUSE Education are — quite impressive! As usual, it was good to also be able to put faces on names, and catch up with friends, or discuss various topics (login-time performance, UI design, openSUSE Conference, etc.). I definitely came back with some food for thoughts.

Sven made sure the GNOME booth was working well The stickers that GNOME-FR had printed for Solutions Linux were quite nice to have, at least I would think so ;-) At some point, Sven and I created a new lovely background for the GNOME desktop, based on Big Buck Bunny; I'm pretty sure it would make a great default background! Ah, if only I had kept a copy of it...

Among the tidbits worth mentioning, I demoed GNOME Shell to various people — mostly people from the KDE community ;-) —, and although the version I had was quite old (it was git master as of May 1st), people seemed to like it. That makes me even more confident there will be quite some positive action around GNOME Shell during the GUADEC/Desktop Summit.

Working hard

Image from Adrian Schröter

All in all, this event was obviously quite some hard work for me :-)

I came back from Berlin on Sunday evening, and I'm leaving for Gran Canaria tomorrow. No need to mention that the three days between those dates were incredibly busy, if only for the part where I naively try to catch up with all mails ;-) Still, I find time to be quite excited about the Desktop Summit: it will probably be a busy week, but it'll be amazing for sure! It was also a good surprise to see people thanking the Foundation for sponsoring them to go! The travel committee did a really great job there!

Gran Canaria Desktop Summit

See you all in Gran Canaria!

left work around 38 degrees C, got a haircut, went for some great tapas on my own reading Darkly Dreaming Dexter, went to a bar, met up with friends, an impromptu bbq plan was hatched, went to a lovely atico at Portal De L’Angel, barbecued in a soothing summer breeze, rode home on the back of a motorcycle hanging on for dear life. All in all a typical Barcelona summer Tuesday.

June 30, 2009
I updated gnome-bluetooth in Fedora 11, and that new version supports Secure Simple Pairing, an easier pairing mode for Bluetooth 2.1 devices.

The update currently lives in the updates-testing repository, but will be in the normal updates when we've had enough good feedback about it.

If you have Bluetooth devices in your possession that don't work as expected with your systems, and fancied a bit of playful testing, find me at GCDS, and we'll try and fix that.
June 29, 2009
If you're interested in joining in for some «Futbol» at GCDS, add your name to the list on the Wiki, and bring your shoes/shinpads/other bits of kit.

We don't have a date and time settled for it yet, so make sure you check the schedule when at the conference.

As every year, if you don't bring shinpads and you break your leg in two, you'll have little sympathy.

So I got a new computer from Dell UK. Unfortunatelly it came with Windows Vista Home Premium (32-bit) SP1 and Microsoft Works 9.0, which I did not intend to use. I contacted Dell Customer Care last Wednesday and they promised to call me back to inform me of their course of action. On Thursday morning I got a call that Dell is in the process to issue the refund and that they will contact me during the coming week when they actually issue the refund. I got the call today Monday at 15:09 that the refund has been issued, £31 for Windows Vista Home Premium SP1 and Microsoft Works 9.0.

Dell Credit Note (refund) for Microsoft Windows Vista SP1 and Microsoft Works 9.0

In detail, the Credit Note says

Item No.  Description                    Quantity Unit Price  Net  VAT
          Cust Invd b4 parts recd 3rdpty    -1      26.96   -26.96  S

                                                                 GBP
  VAT Summary                                      Subtotal   -26.96
                                                   Freight      0.00
   VAT    VAT Rate      GBP        GBP             VAT £       -4.04               
   Type     %       Total Net £   VAT £                
    S      15         -26.96      -4.04           
                                                   Total      -31.00

Now, that was the short story for getting my Windows refund. The long story was that I had to go through several weeks of effort to figure out how to get a new computer without Microsoft software. I contacted by phone both Dell and Microsoft and I estimate I was on the phone for about four hours in total. To save you the effort, here are some tips,

  1. You will get stonewalled. I did not get any reliable information on how to buy a computer without Microsoft software while I was researching my options. I actually gave up and proceeded with buying a computer with Windows, considering that my last resort was to use the EULA method as soon as I got it delivered (I would not accept the EULA, thus I would be entitled for a refund or credit).
  2. Apart from phone calls, I spent some time on Dell Chat. In one case, I was told that I can get a computer from the Latitude range with FreeDOS. They would have to get the precise configuration of the computer so that they can give me a quote. We made sure that the configuration was correct (the one in my basket with the one I would get the quote for). It sounded very promising, however, at the end the computer with FreeDOS would be about £30 more expensive than Vista. I asked for clarification on this issue but I did not get any.
  3. You will be often told that you are the first person that asks for a computer without Microsoft software. Try to think that you are a pioneer and don’t feel let down.
  4. When calling by phone, avoid using premium telephone numbers. Get a good SIP account and configure Ekiga or SFLPhone (has recording feature). For Dell UK, try 01344 373727 which apparently is fine even if you are not a Public sector customer.

Microsoft Vista first boot screen, EULA or refund/credit.

By using the software, you accept these terms. If you do not accept them, do not use the software. Instead, contact the manufacturer or installer to determine their return policy for a refund or credit.. (why are there two dots? — simos)

When you first boot a new computer that has Windows pre-installed, you are presented with the above screen. Why would Microsoft give the option to reject their software? I believe the reason is that they want to enter into a contract directly with the customer, thus there is no issue with removing this facility in future versions of Windows (probably for similar reasons, Hotmail now supports POP3, apparently so that small mobile devices can retrieve e-mail. You can now migrate from Hotmail to GMail easily.). However, the whole environment is setup in such a way that virtually noone would be able to pursue a successful refund. One has to scroll the tiny text box in order to find the pictured paragraph (no option to print!). Even the Microsoft Customer Care EMEA are not aware of the option not to accept the EULA.

In your case, if you do not intend to use the pre-installed Microsoft software (apparently includes the case where you already have a license, such as an Academic License), you have the option to reject for a refund or credit. Simply press the Shutdown button and do not accept the license. Then, get on the phone.

Antirrhinum (Snapdragon)

I installed Ubuntu 9.04 (x86_64) and the computer runs fine ;-) .

It was unexpected when Intel got a heavy fine from the EU for anticompetitive practices. Does this practice by Microsoft (making it extremely difficult to obtain a refund or credit) constitute an anticompetitive practice?

Jan and Arek entered this year’s ICFP programming contest. It’s a three day programming contest, so this morning they asked if they could swap their Friday project day for today to finish the contest. They seem to be in the top third at the moment.

Arek’s never been a fan of long meetings, but today’s standup meeting was particularly amusing with Arek urging everyone to keep focused and get out there quickly. They had less than two hours left on the clock.

29062009

Spot the seven differences

Amusingly, today they came to work with almost the same shirt on, by accident! I can only assume there is a big clothes factory in Poland where they have huge stock of the same fabric…

90 minutes left, knock them dead, guys!

While searching the blogosphere for responses to the survey on Swedish culture in Finland, I came across this interesting gem [translated and commented in Finnish on Suomi 24] by Vasa Bladet columnist Kenneth Myntti.

After summarizing the findings of the survey that was conducted by Magma and the Helsinki Times, he moved on to describing my efforts for getting access to Swedish language classes and how it lead me to directly contact the Ministry of Employment on this issue.

Myntti then concludes the article by making a rather astute observation (my own translation; apologies for any inaccuracy):

Racine simply would not give up so easily. He took the initiative to approach the Ministry of Labor with a proposal that any foreigner who already passed level 4 of the National Certification in Finnish Proficiency would be admissible to study Swedish via labor training. It was he who approached the Ministry, not the Ministry who approached him.

Is this really how things are supposed to be? Are immigrants really expected to battle the bureaucracy just to become a part of this country's Swedish-speaking community?

Of course not. It should be up to us to have our own "Swedish Finn operatives" inside the bureaucracy and parliament, knocking on doors and driving changes in policy to ensure that immigrants can have the option to integrate with the Swedish-speaking part of the population, if they want to.

The Swedish language has a status that is equal to the Finnish language in this country's constitution and a direct consequence of that ought to be a possibility to take Swedish classes on equal footing with Finnish classes for those who chose to immigrate to our country.

That Swedish is considered easier to learn than Finnish should in fact increase foreigners' interest in choosing Swedish as their primary integration language.

From that perspective, we could even complement Racine's proposal by saying that any foreigner who already achieved a sufficient level of proficiency in Swedish could be offered Finnish classes afterwards.

In my opinion, Myntti is absolutely right. If Swedish's status as an official language of Finland is to have any meaning, then it must be possible to study it via Integration Act measures. However, this country's majority speaks and has always spoken Finnish. As such, I think that it makes perfect sense to put the emphasis on Finnish as the primary integration language.

Still, I'll emphasize that this doesn't dispense this Government from acquitting its constitutional obligations to safeguard the status of both official languages and, as a direct consequence, to ensure that immigrants get equal access to immigrant labor training in both national languages.

Basically, for as long as Swedish retains its official language status, there can be no excuse for preventing immigrants from getting Swedish classes via the Integration Act measures!

On a related matter...

On the issue of whether or not Swedish should be reinstated as a compulsory subject for the matriculation exam, Prime Minister Vanhanen said in Iltasanomat that:

Youths who couldn't give a damn about studying Swedish significantly reduce their opportunities on the job market and they concede a tremendous advantage to others who do speak it.

What's interesting about Vanhanen's opinion is that, while he correctly acknowledges how a Finnish professional who doesn't master Swedish could be seriously disadvantaged on the job market, he clearly doesn't realize how an immigrant who only knows one of the official languages could similarly be affected. I wonder why...

I was pointed today to this blog, which shows the integration work being done in KDE with fprintd. Happy to see all that work on the daemon and the documentation is coming to good use.

mach allows you to set up clean roots from scratch for any distribution or distribution variation supported.

This release of mach contains fixes for Python 2.6, and adds Fedora 10 and 11, while fixing the archived Fedora locations.

Get it from the mach project page.

So there is a kernel conference on in Brisbane next month, being run by Sun.

Now when this was announced initially it was proposed as an all kernel hackery type get together for folks in the region, not matter which kernel they cared about.

(I did propose to talk about kernel graphics at this and got refused - so maybe I'm just being bitchy, however this is my blog).

20 speakers break down as follow:
12 Sun
1 Intel - Sun manager
1 RH
1 OpenBSD
1 FreeBSD
4 misc.

2 of the misc talks are in some way OSOL related,

the OpenBSD talk is about networking and pf, the RH talk is about security, FreeBSD about storage.

Now really if you aren't into OSOL or ZFS (3 slots OSOL FS related), why would you go. This conference is
local to me and I still couldn't justify paying the signup fee/taking the time to my manager at all. Now if
one of the main kernel and X.org hackers who lives in Brisbane can't be bothered to go, I do wonder
why anyone who isn't into OSOL kernels might be tempted.

There was talk of a .au unconference at one point, which maybe when the whole swine flu escapade is over might
actually be a useful meetup for the aussie open source community.
Last week I started writing the next part of the XI2 recipes series, this time detailing button/key/motion events etc. Except that while fixing various inconsistencies I ran into a wall put up by Xlib years ago. In short, Xlib only allows for event sizes of up to 96 bytes (on 32 bit). Previously I've gotten around that by storing pointers to extra memory freed by the client (see XIFreeEventData(3)). However, this not only introduces a potentially huge memory leak in "naive" clients but also makes the actual event structure be quite annoying. Having to dereference into three structs to get the button mask is just not particularly great.

So now I have to rethink how to deal with events on the client side (Xlib only, xcb is not affected, server isn't affected either).

Either way, this means two things:

  • the next XI2 tutorial will take another few days

  • there will likely be a fairly big API change in how XI2 clients can deal with events.

In an effort to cleanup spam telepathy wiki has been shifted to annarchy, upgraded and catchpa’s added. All spam pages have now been removed.

June 28, 2009

I have a son! Emil Au Kristensen, born June 25th, 8lbs 12oz, 22 inches.

June 27, 2009

Still on the yak shave expedition.

I’ve written some simple scripts and files to set up and build python 2.3, 2.4, and 2.5 in separate prefixes to be able to test my software against these versions.

If you’re interested, in theory it should be really simple:

As the README says, this should go on to build all versions of python, and install some scripts.

After that, you just run py-2.3 to go into a shell with Python 2.3 on your path.

Don’t say I never did anything for you.

As part of this weekend’s yakshave, I’m trying to implement a handler for STORE_MAP in pychecker. STORE_MAP is a new opcode in Python 2.6, which speeds up dict building.

So, for the first time I went under the hood of Python and figured out just enough to understand this problem. It was a lot less scary than I thought it was going to be!

It seems that using dis.dis(), one can easily dissassemble any python function into its opcodes. This shows clearly where the behaviour is different between python 2.5 and python 2.6.

Given the following function:
f = lambda: {'a': 1, 'b': 2}

Python 2.6 gives:
1 0 BUILD_MAP 2
3 LOAD_CONST 0 (1)
6 LOAD_CONST 1 ('a')
9 STORE_MAP
10 LOAD_CONST 2 (2)
13 LOAD_CONST 3 ('b')
16 STORE_MAP
17 RETURN_VALUE

I couldn’t find a good description of the output of dis.dis, but in my naiveness I am guessing the following:

  • The first 1 maps to the line number in the code object where the function is found.
  • The second column is the offset of the opcode and its arguments
  • The third column is the opcode name
  • The next column is the arguments for the opcode; in the case of CONST, it shows the index as well as the const object indexed

I am assuming each opcode takes one address location, and each argument takes two; that maps with the address pointers in front of the opcodes.

The opcodes are all documented.

So, in human terms:

  • we start with BUILD_MAP, saying that we’ll create a new dictionary on the stack, with 2 entries.
  • we load the constant with index 0 onto the stack (which happens to be the integer object ‘1′, the value of the ‘a’ key)
  • we load the constant with index 1 onto the stack (which happens to be the string object ‘a’, the key for the ‘1′ value)
  • STORE_MAP pops the key and the value off the stack, storing them in the dict. Note that the key was indeed loaded on the stack after the value. Now only the dictionary is left on the stack.
  • Repeat LOAD_CONST, LOAD_CONST and STORE_MAP for the next set
  • RETURN_VALUE returns the current value on the stack to the caller

Pretty simple, when you look at it twice.

For the same code, python 2.5 gives:
>>> dis.dis(f)
1 0 BUILD_MAP 0
3 DUP_TOP
4 LOAD_CONST 1 ('a')
7 LOAD_CONST 2 (1)
10 ROT_THREE
11 STORE_SUBSCR
12 DUP_TOP
13 LOAD_CONST 3 ('b')
16 LOAD_CONST 4 (2)
19 ROT_THREE
20 STORE_SUBSCR
21 RETURN_VALUE

This code is slightly longer and more complicated. Basically, LOAD_CONST, LOAD_CONST, STORE_MAP was implemented with DUP_TOP, LOAD_CONST, LOAD_CONST, ROT_THREE, STORE_SUBSCR

It looks like DUP_TOP was needed because STORE_SUBSCR consumes the dictionary off the stack, and ROT_THREE is needed because the arguments are pushed on the stack in the wrong order.

Seems like a nice and obvious improvement once you understand it. An exercise for the reader is to profile whether this change actually makes things faster in practice.

So, where does this leave me for pychecker ? It now looks deceptively simple. STORE_MAP simply pops off two items of the stack. There is nothing to check for, since we’re in a dictionary context. So all my implementation needs to do is to pop 2 items off the stack, and that’s it.

And thus it was commited to pychecker CVS. Popping one item off the yak stack!

Next step on this weekend’s yakshave: a first implementation of moap vcs bisect!

The interface is lifted from git, obviously, since that’s where most people will know the feature from.

I implemented it first with CVS, so I could fix this pychecker bug which was blocking Fedora from bumping the pychecker version from 0.8.17 (3 years old) to 0.8.18. And sure enough, it picked out the commit I broke.

While implementing and while dealing with CVS’s idea of how it stores CVS revisions and dates and so on, I googled and was amused to find this first hit on google for the words cvs and bisect. Clever Andy! And he cleverly sidestepped the problem I wrestled with by making the user specify two dates at the start instead of trying to figure it out from the checkout. And all in lisp too!

Then, to test that my VCS interface was sane, I implemented it for Subversion as well. That took about 15 minutes, since Subversion is much more sane than CVS. I tried the following command on a flumotion checkout:

moap vcs bisect reset; moap vcs bisect start; svn up; moap vcs bisect good; svn up -r 3000; moap vcs bisect bad; MOAP_DEBUG=4 moap vcs bisect run ./test.sh

With test.sh containing
test -e flumotion/component/consumers/gdp/gdp.py

(In other words, look for the commit that added this file.)

Sure enough, it picked out this commit:


[moap-trunk] [thomas@ana flumotion]$ moap vcs bisect diff
Index: /home/thomas/tmp/flumotion/configure.ac
===================================================================
--- /home/thomas/tmp/flumotion/configure.ac (revision 6909)
+++ /home/thomas/tmp/flumotion/configure.ac (revision 6908)
@@ -212,7 +212,6 @@
flumotion/component/combiners/switch/Makefile
flumotion/component/consumers/Makefile
flumotion/component/consumers/disker/Makefile
-flumotion/component/consumers/gdp/Makefile
flumotion/component/consumers/httpstreamer/Makefile
flumotion/component/consumers/preview/Makefile
flumotion/component/consumers/shout2/Makefile
Index: /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am
===================================================================
--- /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am (revision 6909)
+++ /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am (revision 6908)
@@ -11,7 +11,6 @@

SUBDIRS = \
disker \
- gdp \
httpstreamer \
preview \
shout2
Index: /home/thomas/tmp/flumotion/ChangeLog
===================================================================
--- /home/thomas/tmp/flumotion/ChangeLog (revision 6909)
+++ /home/thomas/tmp/flumotion/ChangeLog (revision 6908)
@@ -1,16 +1,5 @@
2008-06-20 Thomas Vander Stichele <thomas at apestaart dot org>
</thomas>

- * configure.ac:
- * flumotion/component/consumers/Makefile.am:
- * flumotion/component/consumers/gdp (added):
- * flumotion/component/consumers/gdp/gdp.py (added):
- * flumotion/component/consumers/gdp/__init__.py (added):
- * flumotion/component/consumers/gdp/Makefile.am (added):
- * flumotion/component/consumers/gdp/gdp.xml (added):
- Add a GDP consumer.
-
-2008-06-20 Thomas Vander Stichele <thomas at apestaart dot org>
-
* flumotion/component/producers/gdp/gdp.py:
Add error for http://bugzilla.gnome.org/show_bug.cgi?id=532364
</thomas>

So, the feature is ready for testing. It could use some more documenting, and some additional goodies like accepting arguments to moap vcs bisect start for example.

Feedback appreciated!

The yak shave started yesterday evening. The yak stack is actually a forked one this time, both of the forks involving pychecker.

I might not remember everything in order, but in a nutshell the stack is something like this:

  • The original goal for this weekend at the beginning of the week was to release my cd ripper, morituri
  • Something in its pychecker run did not run with pychecker 0.8.17 (the version still in Fedora, from 2006), and worked with pychecker 0.8.18 (my own build). Fork point 1.
  • While releasing moap this week, I realized that Freshmeat changed their remote API, which I should fix before I do another release of anything. Fork point 2.

Fork point 1 continues here:

  • I mailed Fedora’s pychecker maintainer, offering my help, and sending a patch to update to 0.8.18, which I built and installed locally. He mailed back informing me about this pychecker bug with anaconda which was blocking the upgrade. Looking at that bug, it looked suspiciously like a bug triggered by code I added to pychecker last year.
  • However, I’d like to confirm so in the easiest way. git’s got this great feature, git bisect, and wouldn’it be nice if I could do that on pychecker now ? Hey, why not add bisection to moap ?
  • CVS is actually not a very manageable VCS if you want to do fancy stuff. It costs me a few hours to figure out how I should get a more-or-less usable date from a CVS checkout. The final solution is similar to the reply to my stackoverflow question
  • moap vcs bisect run is now implemented and finds the commit that broke anaconda’s pychecking. STACK POINTER IS CURRENTLY HERE.

Fork point 2 continues here:

  • moap’s make check didn’t work because pychecker complained about the following code:
    ef func():
    d = { 'a': 1, 'b': 2}
    print d.keys()

which triggers, in python 2.6, the following warning:
Object (d) has no attribute (keys)

  • I can’t let myself change code in moap without a working make check, so on to figuring out what’s wrong in pychecker
  • After lots of debugging and print statements, I figure out that pychecker dispatches Python opcodes, and it silently drops the ones it doesn’t know about. Python 2.6 added a new opcode, STORE_MAP, and so pychecker doesn’t properly handle the stack since it ignores the opcode. I should error out on those opcodes. STACK POINTER IS CURRENTLY HERE
  • Before I can fix that though, I decide I should make pychecker’s test suite error out on unknown opcodes.
  • Of course, this will error out differently for different python versions, so I need different python versions on this machine.
  • I could do that by hand, but I’d also like Twisted’s trial to run the testsuite, which also needs zope-interface in recent versions, which needs setuptools. So hey, why not set up jhbuild stuff to build all these python versions ?
  • Python 2.3 on my 64 bit machine doesn’t work with setuptools, so the newest Twisted without it is 1.3.0, and it takes a while to figure out why trial doesn’t run my testcases (it ends up being because 1.3.0 trial expects subclasses of twisted.trial.unittest.TestCase, not unittest.TestCase)
  • I’ll blog about the useful products of my yak shave separately, for those who don’t enjoy descriptions of yak shavings, only outcomes.

    In general, I actually enjoy yak shaves. They’re massive treasure hunts, you learn a lot, and you end up fixing a nice bunch of things all over the stack if you persevere. But it’s probably more a mentality thing than anything else, and I really only indulge myself in these in my spare time.

    So in preparation for heading of to Gran Canaria and GUADEC on Thursday I pushed a new Transmageddon release today. 0.11 is actually the first release I posted to sites such as Gnomefiles and Freshmeat so in some sense I guess I feel more confident about this version that earlier ones. A lot of new features included, like multipass encoding, videoflipping (so if your video is 90 degrees tilted you can correct that during transcoding) and better profiles. Still kinda rough at the edges though, and the very latest GStreamer releases are needed for everything to work. Still expecting quite a few bugs to be reported still.

    In some sense development have stood still for a while as I have focused on testing various devices and GStreamer features. Remuxing is still on my todo list, but discovered that for instance an ac3parser is still needed in GStreamer to
    do nice DVD conversions.

    Was kinda nice to successfully use Transmageddon for a business related need at work, we had gotten a request at Collabora Multimedia which meant I needed to transcode a video into quicktime+h264+aac from a .vob file. Worked like a charm :) I mean while I have of course done hundred of transcodes as part of development, it was nice to do one for something ‘real’ :)

    My awesome sister-in-law Suzy is in Ayacucho, Peru, volunteering for Kiva for around nine months. One of the difficulties with poverty relief charities is that people feel a disconnect between their donation and the result, and Kiva works around this problem by personalizing the process of making a loan to a specific entrepreneur. Kiva also empowers recipients by organizing loans that the recipients are expected to pay back.

    Suzy's working with a local microfinance organization, interviewing potential borrowers and uploading their profiles to the main Kiva site for lenders to see. She's posted twice to the main Kiva Fellows blog now, and I hereby humbly present her posts. You should read them.

    June 26, 2009
    I finally spent a few spare minutes (underestimation of the week) to sort-of reverse engineer the PowerPlayInfo tables of newer ATI cards - and somewhat succeeded. But the information I found so far is not as encouraging as I'd like it to be.
    Basically, you get a list of potential combinations of engine clock, memory clock, and core voltage, plus a number of unknown flags. So far so good, but on some (especially high class) cards the entries do not vary as much as I'd like them to do, and many combinations do not exactly make sense. Others are repeated over and over.

    Examples (engine clock in Mhz / memory clock in MHz / core voltage in Volt):
    • RV770: 750/900/1.263 - 500/950/1.263 - 750/950/1.263
    • RV670: 669/829/1.214 - 300/829/1.014 - 300/829/1.014 - 300/829/1.214
    • RV635: 725/800/1.250 - 110/405/0.900 - 300/405/1.000 - 300/800/1.250 - 600/500/1.150
    IMHO the RV635 values are the most reasonable ones - while the RV770 values are completely bogus.

    Also, the PowerPlayInfo V4.1 still has quite a number of fields we don't understand - marked as unknown in my AtomDis disassembler and table dumper.

    • "Do the math. This is one meeting, and while you might pull off a meeting win when everyone’s calmed down, you’re spending the first 30 minutes of the meeting in ALL CAPS, and here’s the bad news: a majority of the team is having similar experiences. Most of the folks interacting with this person are spending their time trying to figure out how to keep this person from going ALL CAPS rather than actually getting work done.

    After a time, this results in even more damage. People stop scheduling meetings with this person. They stop traveling to their part of the building and, again, I’m not talking about one or two people here, I’m talking about the majority of the team."

    (tags: culture)
    I tried to beat the wash cycle on my washing machine at doing something useful[1].

    Tried to add Introspection support to gnome-bluetooth.

    The result nearly works, as it seems that there's no bindings for DBusGProxy in gobject-introspection...
    ** WARNING **: Entry 'DBusGProxy' not found
    If somebody knows...

    [1]: I played football twice today, and needed to wash my kit again, as I'll be playing tomorrow, though I hope we'll play better than we did this evening, shrug.
    June 24, 2009

    moap is a swiss army knife for maintainers and developers.

    This is MOAP 0.2.7, “MMM…”.

    Coverage in 0.2.7: 1424 / 1899 (74 %), 109 python tests, 2 bash tests

    Features added since 0.2.6:
    - Added moap vcs backup, a command to backup a checkout to a tarball that
    can be used later to reconstruct the checkout. Implemented for svn.
    - Fixes for git-svn, git, svn and darcs.
    - Fixes for Python 2.3 and Python 2.6

    I’ve been fixing things left and right for python 2.6, and in the process I noticed that moap hasn’t had a release for over a year. This release contains mostly bug fixes collected over the year, and a new feature that isn’t implemented yet for all VCS’s. Basically it’s an automatic replacement for something I was doing manually every time I removed an old GNOME cvs/svn/git checkout: figure out what’s in that tree that’s not in the repository (diffs, unversioned files, …), so I can delete everything else and free some disk space.

    The only problem with this release is that, after doing the release, I noticed that Freshmeat removed their XML-RPC interface. Apparently they have some new kind of interface they want people to use. Sigh. But that means 0.2.8 is right around the corner!

    Last week, after upgrading my home desktop to F11, I had palimpsest tell me one of my disks was broken on the desktop machine. The desktop is running on two 250 GB drives in software raid. It was time to get new drives.

    After a weekend of fiddling with new 1 TB disks for my home desktop, trying failure scenarios, making sure the system can boot from each of the two drives, and waiting for the 4 hour resync of the software RAID in between each step, I finally closed up the desktop machine and cleaned up under my desk again, thinking I was done with my halfyearly messing about with broken disks.

    I guess I was tempting faith anyway. Doing a routine operation on my home server after all the configuration stuff I’d done to set up asterisk last week, suddenly an rsync aborted, a journal errored out, a partition changed to being mounted read-only, and the log was full of scary drive errors. Ouch.

    Well, that’s why I keep around a big box of old drives - for when some drive fails and I want to tempt fate even more by reusing an old drive that’s probably going to fail real soon too. And anyway, I had just spent my hard drive piggybank on the new desktop drives.

    Luckily, I seemed to have a 400 GB SATA drive lying around that used to belong to my media center. I don’t remember why I swapped it out, given that the media center has a 160GB drive for the OS (and two 1.5 TB raid drives for the data, of course), but this was a lucky break. I booted with a rescue cd, and tried copying the root filesystem of my CentOS 5.2 home server partition to this new drive. Which worked fine, except that /var was where I triggered an Input/Output error and some more drive errors in the kernel log.

    So, powered off, took out the broken drive, and put it in a USB chassis. The advantage of a USB chassis is that you can easily just replug the drive to try again, instead of locking up your system terribly and having to reboot. Sadly, /var was broken beyond repair. I ran an e2fsck hoping to recover the contents, and that partly worked, but some of the important stuff is missing even from lost+found (apart from the annoying situation where you have to reconstruct file names, which I usually end up not bothering with).

    But really, how important can /var be ? Turns out, rather important. As in, you need it to boot in the first place. And also, it holds your rpm database. Crap.

    Some Googling gave me some posts on how to reconstruct your rpm database from log files (using –justdb –noscripts –notriggers). But to use those, you actually need those log files. Where are those ? On /var as well. Crap. And they’re not in lost+found either.

    Ok, so time to get creative. Here’s what I ended up doing:

    • create /var/lib/rpm, and run rpm –rebuilddb to end up with an empty rpm database
    • Based on the contents of /usr/bin, figure out what packages ought to be installed:
      rpm -qf /etc/* | grep 'not owned' | cut -f2 -d' ' > /tmp/unowned
      yum --enablerepo=c5-media --disablerepo=base --disablerepo=updates --disablerepo=addons --disablerepo=extras whatprovides `cat /tmp/unowned` | cut -f1 -d' ' | sort | uniq > /tmp/missing
      yum --enablerepo=c5-media --disablerepo=base --disablerepo=updates --disablerepo=addons --disablerepo=extras install `cat /tmp/missing`

    This works by first listing all files that are not owned by rpm (on the first run, that’s all of them), figure out what packages can provide these files, then installing those packages.

  • Repeat the process for other important directories, like /bin, /sbin, /usr/sbin, /usr/lib, /usr/include, …
  • Clean up .rpmnew files that don’t actually contain differences:
    find / -name *.rpmnew | sed s/.rpmnew//g > /tmp/rpmnew
    for c in `cat /tmp/rpmnew`; do echo $c; diff $c $c.rpmnew && mv -f $c.rpmnew $c; done
  • Same for *.rpmorig:
    find / -name *.rpmorig | sed s/.rpmorig//g > /tmp/rpmorig
    for c in `cat /tmp/rpmorig`; do echo $c; diff $c $c.rpmorig && mv -f $c.rpmorig $c; done
  • Inspect the remaining ones, and merge changes.
  • While it’s not an experience I hope to repeat any time soon, it worked out surprisingly well!

    I managed to completely skip updating to F10. All my machines (work desktop, home desktop, laptop, media center) where running F9 without any real problems I worried about.

    But of course I was curious. And, especially with the move to python 2.6, things I care about where bound to break.

    So, last weekend I took the plunge, and after little over a week here are my first impressions:

    • Overall F11 looks slick. Nice work on the artwork! I particularly liked the GDM background, looking like an ancient brushed metal object, reminding me of how I used to love playing Gods by the Bitmap Brothers.
    • Apparently anaconda now has bugzilla integration, allowing you to file a bug directly from inside anaconda. Luckily for Jeremy (who I assume still maintains it) it has some code in there to look for existing bug entries with the same backtrace. Very nice!
    • Of course, I wouldn’t have found out if I hadn’t run into exceptions in anaconda. I ran into while setting up two completely new hard disks with 2 software raid partition and LVM on the second one.
    • I first installed my work desktop, as usual putting the new installation on a separate partition, keeping my old one around in case the install goes wrong or F11 just isn’t stable enough for me. For me, that involves having a /mnt/alpha and /mt/omega partition between which I alternate. At some point I should figure out if other people do this too and if it makes sense for anaconda to support something like this and at least allow me to keep my GRUB configuration for the older installation. For now I do this manually, using a hugeupgrade text file I follow each time I upgrade, accumulating more and more steps each time I perform the procedure.
    • On my home machine, when I booted into F11, as usual my second monitor didn’t work (I have a Radeon GeCube Pro 2400). My own fault really - I should have tried to get a patch upstream into the default radeon driver the same way I sent a patch for the radeonhd driver that I still use. A rebuild later, I at least had the old radeonhd driver rebuilt to get my second screen working again.
    • Having the second screen now made me change my mind completely about the GDM wallpaper. That lion on the right hand side that I didn’t see before completely ruins the style for me. Sorry!
    • Upon logging in to the work desktop, I had no network. Completely puzzled as to why, until I figured out that I had to actually right-click on NetworkManager’s tray icon, choose to configure, and activate eth0 by default. After some browsing it seems that this was a deliberate choice to increase security. While I can possibly sympathize with the motivation for doing so, it really is terrible to change this by default and not provide *any* indication during or after installation. At the very least, the following things could have been done:
      1. provide a clear notice during installation, and allow a user to choose to enable it anyway, assuming the security risk
      2. the same, but during firstboot
      3. after logging in, having the network manager tooltip say ‘the network is disabled by default in this new release, here’s how you enable it

      I am not entirely sure what the security problems are with enabling the network after installation. The default firewall is pretty locked down, SELinux is enabled by default, and there’s no way I can install updates without the network anyway. But I’m sure that I could find huge bikeshedding threads on fedora-devel about this if I really cared why this was decided.

    • Upon logging in to the home desktop, I was greeted with a tooltip saying that one of my drives was going bad. That was a nice touch! Really good idea to have something like that be monitored by default. This prompted me to ponder to finally replace my desktop’s 250 GB PATA drives with real SATA drives - a story for another post.
    • Various deprecation warnings pop up running various Python programs, including my own. Flumotion needed a patch for running against 2.6 (I rebuilt and pushed to F11). So I have some cleanup ahead, and I should revisit pychecker soon.
    • The first piece of functionality I checked was Evolution’s Google Calendar integration. It still seems a bit shaky, given that I had to restart Evolution a few times as it froze doing stuff with the net, but it does seem to work. That means I will finally be able to accept work invitations done through Outlook and get them on my Google Calendar! Awesome. Now if only I didn’t have to manually configure each of the ten calendars I’m interested in…
    • At work, when I played a video using XVideo, my machine instantly froze. Seems to be a known bug. The intel drivers are being rewritten. I’ve never quite understood why rewriting is an excuse for breaking stuff that worked (I should check if Firewire video finally works reliably now when I have the chance, for example), but all in the name of progress I guess.
    • I don’t know why it’s happening, but once in a while my screens blank. Even in the middle of doing stuff. If I were a gamer I’d be hugely annoyed as my character would be shot through the head in that split instant. The closest bug I can find is this one, where I commented. Hugely annoying bug because I don event know how to begin debugging a bug like this that I can’t catch in the act.
    • PulseAudio integration in GDM seems a bit fragile. I have my pulseaudio configured to send audio to my media center pulseaudio server. Sometimes, after choosing a username in GDM, it doesn’t manage to play the audio sample related to that action, and then GDM is stuck there not showing me the password entry dialog. Pretty sure it’s due to blocking on pulseaudio, because when I kill it the password dialog appears. Pretty painful bug for new users though.

    All in all, not a bad first week experience, and seems like a solid release. Now, off to rebuild bits and pieces, and clean up Python 2.6 deprecation warnings…

    Over the past week, I've been working a little on Geoclue stuff.

    First up is a Geoclue plugin for gnome-bluetooth, which allows you to set up your Bluetooth GPS device.


    This will work best with the patches in the Geoclue bugzilla, so that the selection is instant-apply.

    The second piece of work is a Skyhook Geoclue provider. This code manages to put me within 20 yards of my house, though we should be getting NetworkManager's help to get the AP's MAC address.

    Finally, my Geoclue Firefox patch should soon be getting reviewed. It's been long enough that I forgot how to build Mozilla (probably a good thing).

    As an added bonus, I've sent a patch against NetworkManager to Dan with a gnome-bluetooth plugin, which should allow users to just tick a box to set up PANU Internet access.

    Now, we just need somebody reviewing all those Geoclue patches. Maintainer, where are you at?
    June 23, 2009

    Hey everyone, my two roommates are moving out to be closer to the city. Those who have been to my place know it is an amazing apartment in North Cambridge, MA with a five minute walk to the Alewife T station. If you are looking to move or know someone who needs a place let me know. The lease is for a year and is super inexpensive at $635 a month per person plus utilities.

    Oh and you will have to like dogs since Ty is staying too :)

    [read this post in: ar de es fr it ja ko pt ru zh-CN ]
    June 22, 2009

    The Open Video Conference just ended yesterday. I attended the first two days and just stopped in briefly during the hack-fests yesterday before having brunch with some old highschool friends and heading back to my parents house where my dog and car were stashed.

    I can say without a doubt the turnout was amazing and even though not everything I heard all weekend was positive it was a giant leap forward in then understanding of the importance of Open Video and culture. I won’t put a figure on how many people attended but some of the upstairs talks were standing room only and after the first day some of the organizers were lamenting that then needed to get bigger rooms (consequently some of the talks were swapped the next day). Speaking about the organizers, they ran an incredibly smooth ship and should be thanked and praised for their efforts.

    The Good

    Apps

    I was mainly there looking to see what video producers wanted from FOSS application developers and to support the PiTiVi/GStreamer teams on behalf of the GNOME Foundation. It is amazing to see the PiTiVi non-linear video editing app at such a usable state. While Edward Hervey (bilboed on irc) gave his mini presentation on PiTiVi I was busy hacking up a “How To Make Chocolate Truffles” video from pictures and clips I had laying around.

    Afterwards I showed him some of the bugs I encountered in the 0.13.1 release and he just rattled off, fixed in git, fixed in git, fixed in git…etc. Sadly the releases are tied to GStreamer releases (which is a good thing from a development/bugs standpoint but not so good from a user standpoint given the early stages of PiTiVi) so we won’t see an official release soon. I plan on trying to automate a Fedora Repository at some point just to be able to view the progress without breaking my system.

    The point is PiTiVi is about 90% there (and perhaps 100% in git) to be able to support my needs for basic video editing in terms of stability and basic tools. That should be pretty reflective of those who need to do things like screen casting and interview style video blogs. Some advanced features like effects (look at Cheese for some examples of this already working in an app) already exist in GStreamer and just need to be integrated in PiTiVi’s UI and rendering pipeline.

    There was also a show of Cinelarra but more interesting is the GTK+ fork Lumiera which unfortunately is not usable yet but the direction they are going in (GTK+ interface and some GStreamer integration) looks like a great re-start in the case of pro level editing tools.

    Also of interest in the pro level space was Blender which seems to be the pro project with the most momentum and features for pro’s. At least that was the initial reaction from some on the Red Hat media team. The dev’s did admit that the functionality is limited to what they needed during production of Big Buck Bunny (and other productions currently in the queue) but that in those areas it is rock solid. It is interesting to see a UI designed with different usability profiles. For instance one of Blender’s usability criteria is the avoidance of repetitive strain injury. To combat RSI mouse clicks are evenly divided between left and right mouse clicks.

    Bassam Kurdali, one of the Blender developers and animators, came up to me later in the conference and said he had noticed me using PiTiVi to edit my video. He was impressed at the simplicity and slickness of the interface and how far along it is. There is plenty of room for different approaches and a real potential for cross pollination between the pro tools and the every day end user tools.

    What Content Producers Want

    Speaking of end users we got to hear from a bunch of them who let us know how we could support them. One of the biggest themes was that Windows tools suck and those who taught others couldn’t just tell them to go out and buy a mac (praises were heaped on iMovie and Final Cut Pro). They really want an easy to use tool, with the unfortunate note that it would have to run on Windows. One really good thing is that a lot of the non-tech content producers understood the need for free codecs. However in the end they just want a simple way to render down to DVD, You Tube, Daily Motion, iPhone, etc. and don’t want to deal with formats.

    I ended up collecting a bunch of buisness cards and am toying with the idea of starting a feedback group with content producers which would get them involved in improving GNOME App usability from the perspective of those who are not yet familiar with the GNOME workflow. If we are serious about expanding our reach we need to go beyond our current self selecting internal feedback loops. The goal wouldn’t be to get these people using GNOME (though giving them a way through the apps wouldn’t be a bad thing). It would be more about getting groups outside of GNOME/Linux to be part of the process of improving GNOME. Will it be fruitful? I don’t know but it is an interesting experiment with a potential huge payoff for a little bit of effort.

    Sita Sings the Blues

    This good section wouldn’t be complete without the mention of Sita Sings the Blues by Nina Paley which is a feature length (82 minutes) animated film released under the Creative Commons Attribution-Share Alike 3.0 United States License. You have complete rights to watch, screen, remix and redistribute the film as long as you abide by the license. I do suggest you watch it and if you like it buy the DVD or simply donate to encourage more works like this (I bought the DVD for $20). Not only is Nina a content producer but she is heavily involved in advocating her distribution methods, going as far as documenting the process that went into releasing Sita under a creative commons license and in her work with QuestionCopyright.org.

    Mozilla and the Open Video Contest

    I was very impressed with Mozilla’s involvement and their push for Ogg Theora to become a base line codec for the HTML 5 video tag. They are also helping launch the upcoming Open Video Contest which would see the winner flown to the 2010 South by Southwest conference. We should probably run some sort of sister contest to encourage GNOME users to submit entries.

    The Bad

    It wasn’t all roses. While I feel we are reaching independent content producers way more than I would have though at this point, some of the big companies still don’t get it or are afraid of Open Video implications.

    Adobe

    It must be said that Adobe has been somewhat good at working with the community over long periods of time but that they just never get around to resolving key issues. What really surprised me was when on one of the industry round tables the Adobe representative pointed to their release of the Flash documentation as a shining example of this relationship. After checking with a developer of an alternative flash implementation I was told those documents are pretty much useless. Due to bugs, some of the spec just doesn’t work as written and other issues makes it impossible to write a third party Flash player.

    YouTube/Google

    While reportedly Chrome will ship with Ogg Theora support their flagship video site YouTube seems afraid to do so. Their rep at the round table stated some pretty audacious things such as continuing the myth that Theora wasn’t good enough when clearly that argument was directly debunked (the side by side comparisons were even playing on HDTV’s at the conference).

    Even more of an issue was the representative’s idea on what Open Video meant. He declared that they would love to support Open Video but that it meant letting anybody do whatever they wanted and that doesn’t work from a buisness perspective.

    Open Video isn’t about wild west, trample on rights. If anything it is about balancing the rights of content producers, end users and fair use. From what I read, YouTube’s position is that they are the 1000 pound gorilla in video distribution and at the end of the day they only believe in a user’s and content producer’s freedoms if it is walled behind their own servers. “All the world’s video” indeed.

    The solution there is to drive traffic to sites like Daily Motion and Blip.tv which understand the issues involved.

    Conclusion

    Nothing is perfect, but we are off to a really good start. In the end it is up to us to keep the momentum going and eventually produce a better experience within the complete Open Video stack, from content production to delivery. The web was built and exploded around the concept of open technology. Let’s continue to make sure this is the case going forward. The last thing we want is the web to become the domain of a few, with creativity being stifled by restrictions in the non-open parts of the stack.

    [read this post in: ar de es fr it ja ko pt ru zh-CN ]
    Monitor plug and play works by storing a descriptor called EDID in the monitor. The most important thing in this descriptor is the list of modes that the monitor supports. You would think this would be a fairly straightforward thing, but it's actually not, because you've only got 128 bytes to work with. So there end up being multiple ways to encode a mode in EDID:
    • the Established Timings fields I and II and Manufacturer's Timings, which is a three-byte bitmap of 17 industry-standard timings, plus seven bits of "manufacturer's mask" which could in principle be more modes but no manufacturer publishes what they mean
    • the Standard Timings field, which is an array of eight two-byte codes, thus: eight bits for width in multiples of 8 with 0x01 meaning 256; two bits for image aspect ratio (with one of the combinations overloaded to mean 16:10 or 1:1 depending on the spec revision); six bits for field refresh rate minus 60
    • Up to four of various 18-byte detailed monitor descriptors, including:
      • Detailed Timing descriptors, which encode more or less every timing parameter including sync intervals and polarity, borders, interlacing, stereo, star sign, etc.
      • Display Range Limit descriptors, which can describe sync range intervals and optionally mark them as supporting the GTF or CVT timing formulas, implying that any mode conforming to those sync ranges and timing formulas is supported
      • arrays of up to six Standard Timing identifiers, encoded as above
      • arrays of up to four 3-byte CVT descriptors, which encode twelve bits for image height, two bits for aspect ratio, a two-bit enum for preferred refresh rate, and a five-bit mask for supported refresh rates
      • the Established Timings III descriptor, which comprises 44 bits of yet more industry-standard timings as published in the DMT spec, and 52 unused bits set to zero
      • potentially any of sixteen manufacturer-specific detailed blocks, none of which are documented, any of which could contain mode support information
    Not content with the restrictive expressive power of base EDID, an extension mechanism was introduced.  You can have up to 255 128-byte extension blocks, including:
    • the Consumer Electronics Association extension, which lets you specify:
      • Arbitrary numbers of Short Video Descriptors, which are one-byte indices into a list of timings in the CEA spec
      • Arbitrary numbers of detailed timing blocks, encoded as in base EDID
    • the Video Timing Block extension, which lets you specify:
      • Zero to six detailed timing blocks, encoded as in base EDID
      • Zero to forty CVT 3-byte descriptors, encoded almost as in base EDID except with fewer legal aspect ratios
      • Zero to sixty-one Standard Timing descriptors, encoded as in base EDID
    • the Device Information extension, which lets you specify:
      • A bit under the Miscellaneous Display Capabilities section for "VGA/DOS Legacy Timing Modes" support, which is a predefined set of 24 low-resolution modes you remember from EGA
    • Manufacturer-specific extension blocks, which are naturally undocumented and could contain timing info
    Naturally, the display industry found this lack of flexibility entirely unacceptable.  So, soon and very soon, you will also begin to see displays that conform to the newer DisplayID specification.  Fortunately, to minimize time to market and maximize software reuse, DisplayID timing descriptors are entirely compatible with EDID:
    • Type I detailed timings, which are encoded exactly like the detailed timing descriptors in EDID, except for using an additional byte for pixel clock, moving the stereo and interlace bits, adding an aspect ratio field, eliminating borders, and widening the storage for all the horizontal and vertical timing numbers
    • Type II detailed timings, which are encoded exactly like the detailed timing descriptors in EDID, except for being only 11 bytes long, using an additional byte for pixel clock, moving the stereo and interlace bits, eliminating borders, storing all horizontal timing parameters in terms of eight-pixel character cells, and widening the storage for vertical timing numbers
    • Type III short timings, which encode CVT timings in three bytes exactly like CVT 3-byte descriptors in base EDID, but do it as a bit for preferred-timing-or-not, a bit for reduced-blanking-or-not, four bits for aspect ratio, eight bits for horizontal image size in eight-pixel character cells, a bit for interlaced-or-not, and seven bits for refresh rate
    • Type IV timing codes, which are one-byte indices into the DMT timing list, unlike any EDID encoding method
    • Supported VESA Timings data blocks, which is a ten-byte bitfield corresponding to various modes in DMT, but not in the order that they're in the DMT spec, nor in the same order as the Established Timings I through III in base EDID
    • Supported CEA Timings data blocks, which is a seven-byte bitfield corresponding (shockingly) to a superset of the CEA mode list in the most recent version of the spec I have handy, and even in the same order as in the spec
    • Display Range Limit descriptors, which are exactly like the encoding in base EDID, except for widening the storage for pixel clock, shrinking the storage for horizontal and vertical sync limits, adding maxima for horizontal and vertical blanking, and removing support for GTF
    • CEA-defined blocks, which are presumably in a newer version of the spec than I have
    • Manufacturer-specific data blocks
    Did I say compatible?  That other thing.

    So the other great part about DisplayID is that it requires host software updates to work, because - afaict - it's published at the same I2C address as EDID was.  This is kind of okay for laptops, since you know what software is shipping on them.  It's less okay for standalone displays, because now it raises the very real possibility of being able to buy a monitor that is too new to work with your old operating system.

    Even better, drivers using VESA BIOS Extensions (which admittedly are kind of boned already) are about to be left out in the cold.  The VBE spec only defines a call to get EDID, and no legal DisplayID block can possibly be confused for an EDID block, so if your video BIOS actually checks for the EDID block header, there's no way to get it to return DisplayID anyway.  You now have a combination of video card, cable, and monitor, that can not be used together with VBE.  For people running the unfortunate sort of OS you have to pay for, there's the other kind of connector conspiracy too, where you probably can't get a combination of (native driver that supports DisplayID) and (operating system with native driver support) for your hardware either.

    Thanks VESA.

    A few days ago, we released version 2.11.3 of the Geode X.org driver. As you'll notice from the version number, this is only a maintenance release, mainly to fix crasher bugs that appeared since X.org server core 1.6 was released.

    Meanwhile, Otavio Salvador has been busy cleaning up our GX2 support and, in the process, he also found a few interesting regressions that affect LX support as well.

    Unfortunately, our goal to integrate GX1 support into our unified Geode driver still hasn't been reached, due to a lack of resources: most people who knew anything about GX1 and SC Geodes and who had access to development hardware have moved on. As such, help to complete this goal is extremely welcome.

    June 21, 2009
    I wanted to reduce heat, noise, and power consumption, and improve user experience when watching video - in my opinion a home theater PC is probably the least enjoyable multimedia device. Especially as it typically never does exactly what you want it to do, so you spend half your time configuring and expanding it.
    Finally, there is a neat BluRay player LG BD 370 that plays Matroska container as well, which is the de-facto standard for fansubbed Animes nowadays. And it is reasonably cheap (<200€).

    So I bought one and stress-tested it this weekend. Long story short, I'm unsure yet whether I will return it to the store or not. Because it doesn't exactly play everything - and yet I still somewhat like it .

    Positive things first:
    • Fast bootup - the system is ready in something like 10 seconds.
    • Good BluRay performance - I don't have too many BluRays yet, but the ones I tested worked decently. It is the fastest BluRay player I have seen so far - but I still hate the BluRay engineers for choosing java as the menu language.
    • Does play and upconvert DVDs.
    • Does do 1080p@24 (untested), no issues at all with HDCP handshake, even on output device change and resolution switching with a cheap 15m HDMI cable.
    • Very good user interface - I miss buttons for 10s instant forward/backward skipping, otherwise it's clean, neat, and easy to use.
    • Never crashed on the approx. 50 disks I tested.
    • Trivial and fast firmware update over ethernet.
    • YouTube client - about the most useless feature IMHO.
    • No decoding artifacts, unless it had warned you that this might be possible.
    • Very good and accurate format description.
    • Able to switch between >2 audio streams and subtitles on the fly.
    • Does play matroska, avi, mp4, mov, mpg containers without problems. I have a single avi that doesn't play, but it's probably broken.
    • Does play most(!) subtitles, including embedded ass and external srt files.
    • Does play ac3, dts, mp3, aac audio streams.
    • Does play most(!) h264, some(!)divx, all xvid video streams.

    The last points already indicates the major issues:
    • Has a hard limit of 720x576 for DX50 fourcc - this is unbelievable ridiculous, as XVID works without limits, and both are actually the same format.
    • h264 is only supported upto level 4.1 - many fansubs use level 5.0 or higher, in order to use more reference frames. The player warns if the level is higher than 4.1, but if less then 9 reference frames are used at 720p (limit at level 4.1), it will play fine. Unfortunately, this isn't the case for half the fansubs I have.
    • Newlines in subtitles are rendered as '\n'. Luckily, they almost break lines early enough when they are too long (few characters missing).
    • Some subtitles aren't rendering, not sure why.
    • Doesn't play m2p, ogm containers.
    • Doesn't decode ogg vorbis.
    • As with all commercial players I know so far: Doesn't allow to fix A/V synchronization. I have a DVD with audio lagging 500ms behind video (Ghost in the Shell, early pressing), and one with one audio stream being too early, and one too late (Fucking Åmål). Fansubs sometimes lag audio by up to +/-300ms, dunno why.
    • There is a region-free patch for DVD, but only few tests of it can be found on the net. Don't know whether this works for all firmware versions, but somehow I doubt so.
    Less important nitpicking:
    • Switches 50fps - 60fps all the time (system menus are running at 50fps only - probably European model issue only). With the long HDMI switching times this is getting on your nerves.
    • Doesn't use embedded fonts in ass subtitles.
    • Doesn't decode flac.
    • dts recoding would be a nice feature for aac audio, but doesn't work at all (tested on sp/dif only). Either I get pcm(!) two channel, or dts mono(!) without(!) sound.
    • Doesn't detect VCD and SVCD.
    • Does do 1080p@24 only on DVD and BluRay. Don't care too much, my projector doesn't accept 24fps, but is very good at inverse telecine. So I don't notice that.

    I also noticed too late that the BD 370 doesn't only support no UPNP - but also no playback of files via SMB, NFS, or any other network means, just YouTube. Sigh. But well, the BD 390 will be available in Europe shortly as well, and that should include UPNP. Because of this I haven't even started to test audio file playback.

    So I have a lot of issues with quite a number of disks I tested. And cannot use it neither for local network playback nor for Apple movie trailers. Still I'm unsure whether to return it or not, because the disks it plays it plays almost perfectly, with a nice user experience. At least I will have to keep my HTPC in addition to it for now.

    Sigh.

    In VMware, Palo Alto, we evaluated Clonezilla for Imaging different Linux distributions like openSUSE, SLED, Ubuntu, RHEL, Fedora, Madriva. Some success stories:

    Took Ubuntu image on DELL 390 Intel single processor, first hard disk and restored it in HP AMD Athlon Dual processor, second hard disk using Clonezilla Live CD and worked awesome ! The restore times took approx 2 minutes 12 seconds. The system is usable now ! wow !! I didn't expect this to work, to be frank :) This is with regular partition.

    Also, tried with Fedora LVM image, with different hard disk size, this failed, I assume this is due to LVM, though I'm not sure.

    Next tried creating Windows XP SP2 32bit image from DELL 390 and deployed it on DELL 3400 based on the info available here and here and it worked amazingly !

    Great work Clonezilla team

    Philip proposes that we should modify the entire human race for them to have fewer possibilities to reproduce as a measure of birth control. As a prerequisite you will need to modify every single newborn, if we had the resources to influence how every single new person is born, we would actually be at the point where we could stop thos non desired borns in a much simpler way...

    Anyway, there's an easier way that actually has many other upsides. Philip, let's solve poverty instead of proposing sci-fi :-)

    June 20, 2009

    A while back I was celebrating that arrival of secure realtime scheduling for the desktop. As it appears this was a bit premature then, since (mis-)using cgroups for this turned out to be more problematic and messy than I anticipated.

    As a followup I'd now like to point you to this announcement I posted to LAD yesterday, introducing RealtimeKit which should fix the problem for good. It has now entered Rawhide becoming part of the default install (by means of being a dependency of PulseAudio), and I assume the other distros are going to adopt it pretty soon, too.

    Read the full announcement.