DADVSI : le pire du pire ?

Le conseil constitutionnel a rendu sa décision concernant la loi DADVSI, et on ne peut pas en être content. Pour plus d’infos, voir ce billet d’Eolas.

Mais le pire du pire, ce sont les commentaires qu’on va avoir un peu partout dans les blogs, sur la dictature mise en place par le conseil constitutionnel, sur le fait qu’ils sont payés par les lobbyistes, sur les “petits vieux du ConCon qui étaient à l’abri dans leur bureau climatisé”, etc, etc, etc.

Cet autre billet d’Eolas, sur le CPE, permet de mieux comprendre le fonctionnement du conseil constitutionnel et d’éviter ces conclusions puériles …

XMPP4R 0.3 Released !

Stephan Maka announced that XMPP4R 0.3, the new version of the XMPP/Jabber library for Ruby, was released very early this morning. From the announcement :

XMPP4R is a Ruby library for the Jabber/XMPP instant messaging protocol.

Version 0.3 brings a lot of new features and fixes. The release has been
delayed by a redesign process, thus the class and module names of
additional features have changed. Updaters are advised to read the
included UPDATING document.

From the ChangeLog:

* SRV lookup capability in Client#connect
* Stringprep support for JIDs
* TLS & SASL support
* Basic Dataforms support
* Multi-User Chat Helpers
* Helpers for File-Transfer, SOCKS5 Bytestreams, In-Band Bytestreams
* Roster helper has modified subscription-request semantics (see
Roster#add_subscription_request_callback)
* A lot of features have renamed namespaces (see UPDATING file)

Pointers for further information:

* XMPP4R Homepage: http://home.gna.org/xmpp4r/
* Downloads: http://download.gna.org/xmpp4r/
* API reference: http://home.gna.org/xmpp4r/rdoc/

While I worked on version 0.2, I didn’t do anything for this version, and I’m very proud of that, because it’s actually the first time that I was able to hand over all the maintainership of a project I created ;) Stephan Maka really did a Great Job. Congratulations, Stephan !

Switching from Firefox to Epiphany

More and more, I have problems dealing with Firefox’s bloat. I gave epiphany a try as a replacement for a week, to see if it’s actually a valid replacement.

Part 0: installing

On Debian/Ubuntu, don’t forget to install epiphany-extensions as well.

Part 1: making the switch

  • System -> Preferences -> Preferred Applications : select epiphany instead.
  • That’s all for now. (What about update-alternatives ? Is it necessary ? Seems it isn’t.)

Part 2: Configuring

I just added my language preferences. Why doesn’t it follow my session’s defaults ? (It seems that this waits for a localization configuration applet inside Gnome)

Part 3: Importing Bookmarks

Bookmarks -> Edit bookmarks -> File -> Import bookmarks -> Firefox

Bookmarks toolbar handling in epiphany is a bit strange. It seems that you have to add Quick bookmark buttons for each bookmark you want in it. (related bugs: 116726, 112660)

After one week of use …

  • Epiphany isn’t faster than Firefox. It might slightly faster to start up, but switching between tabs feels slower. (I reported bug 347225 about this, but it’s non-conclusive ATM.)
  • Tabs are fixed-size in epiphany, not variable size like it firefox. It makes it difficult to have a large number of tabs open (in 1280×1024, you can only have 7 open tabs before small arrows appear to let you move the tab bar left/right). It’s actually not an epiphany problem, but a gtk+ one (330676).

Looks like I’m going back to Firefox…

Update :

Frederic Peters posted a comment mentionning unofficial Epiphany extensions which solve the fixed-size tabs problem. Thanks a lot :-)

Vidéo de ma présentation sur XMPP/Jabber aux RMLL

La vidéo de ma présentation aux RMLL est disponible sur cette page (lien direct). Si vous voulez suivre avec les slides pendant que vous la regardez, elles sont dispo ici.

Quelques remarques en vrac :

  • Dommage que le son soit celui de l’amphi, et pas celui du micro. Comme j’ai tendance à parler un peu vite et à manger certains mots (normal après 5j de resto U ;)), ca ne me rend pas facile à comprendre. J’espère que c’était plus clair dans la salle !
  • Il faut vraiment que je change de thème beamer, les couleurs passent très mal au vidéo-projecteur.
  • Merci à Michael Opdenaker pour avoir filmé ces conférences. C’est vraiment dommage que des initiatives de ce genre ne soient pas plus nombreuses …
  • J’ai pas vraiment assuré pendant les questions. La prochaine fois, mieux écouter, et plus réfléchir avant de répondre :-)

Alors, vu du public, c’était comment ?

How I got my Internet access back (or: How much does Tele2 suck ?)

After being offline for 2.5 weeks at home, I finally took the decision to investigate the issue myself, because I don’t think that Tele2 can be trusted about this.

So, I googled for a while, started to understand the details of PPPoE (RFC 2516), and discovered that the error I was encountering (Windows reports it as error 676, which seems to be its official name ;) is actually quite common. The symptoms are that the Access Concentrator replies to your PADI (PPPoE Active Discovery Initiation) packet with a PADO (PPPoE Active Discovery Offer) packet, but doesn’t reply to your PADR (PPPoE Active Discovery Request) with a PADS (PPPoE Active Discovery Session-confirmation), so the session can’t be established.

A bad design of PPPoE, and probably a bad implementation of the Access Concentrator, is the source for major problem : PPPoE sessions can die without being noticed, for example if your DSL connexion is abruptly reset (bad line, etc). When you try to reconnect, the authentication server refuses to open a new session, because you already have a session open.

Now, how do you solve that ? Normally, Joe Random can just call its hotline, say he encounters the infamous 676 error, and the friendly guy on the other side of the phone will manually close the session, so Joe can connect again. But with Tele2, this doesn’t work. If you phone Tele2’s hotline and report a 676 error, you can get the following answers :

  • We have some large scale problems, and are aware of the issue. We are working on it, it will be fixed in 1-2 days (two weeks later, still not fixed, of course).
  • The problem is known, and impacts all you area. The tech guys are working on it.
  • This is caused by an incompatibility between your modem (I didn’t buy it, Tele2 provides it) and the DSLAM. (I got this answer today, and got quite angry because they could really have told me this earlier, so I could have borrowed a friend’s modem).

There are solutions to close the session from the client side, using a PADT (The PPPoE Active Discovery Terminate) packet. But it’s tricky, because you have to determine the AC’s MAC address (easy) and the ghost session’s ID (harder). To determine your session’s ID, you can just sniff the ethernet interface which connects your computer to the modem, and wait until you receive a packet from your old session on it (e.g a random UDP probe from a computer you don’t know). They, you can look at the PPPoE headers, and retrieve the AC’s MAC and the Session ID, and forge a PADT packet with them.

On Windows, KillPPPoE does just this automatically.

On Linux, you have to do it partially by hand.

  • Capture the packets using tcpdump (tcpdump -Unvvi eth0 -w file.cap pppoed or pppoes).
  • Open the capture file using ethereal, and find a packet from your old session.
No.     Time        Source                Destination           Protocol Info
11 49.125813   221.208.208.89        83.177.207.102        UDP      Source port: 36545  Destination port: 1027

Frame 11 (507 bytes on wire, 96 bytes captured)
Arrival Time: Jul 12, 2006 18:00:18.950672000
Time delta from previous packet: 6.698021000 seconds
Time since reference or first frame: 49.125813000 seconds
Frame Number: 11
Packet Length: 507 bytes
Capture Length: 96 bytes
Protocols in frame: eth:pppoes:ppp:ip:udp:data
Coloring Rule Name: UDP
Coloring Rule String: udp
Ethernet II, Src: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1), Dst: DellComp_15:dc:61 (00:c0:4f:15:dc:61)
Destination: DellComp_15:dc:61 (00:c0:4f:15:dc:61)
Address: DellComp_15:dc:61 (00:c0:4f:15:dc:61)
.... ...0 .... .... .... .... = Multicast: This is a UNICAST frame
.... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address
Source: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1)
Address: ThomsonT_62:c4:f1 (00:90:d0:62:c4:f1)
.... ...0 .... .... .... .... = Multicast: This is a UNICAST frame
.... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address
Type: PPPoE Session (0x8864)
PPP-over-Ethernet Session
0001 .... = Version: 1
.... 0001 = Type: 1
Code: Session Data (0x00)
Session ID: 0x0019
Payload Length: 487
Point-to-Point Protocol
Internet Protocol, Src: 221.208.208.89 (221.208.208.89), Dst: 83.177.207.102 (83.177.207.102)
User Datagram Protocol, Src Port: 36545 (36545), Dst Port: 1027 (1027)
Data (46 bytes)
  • Call pppoe with the -k option to terminate the session (pppoe -k -e 25:00:90:d0:62:c4:f1). Note that the session ID must be passed in decimal, not hexadecimal.
  • You can observe the PADT packet being sent, and the PADT reply from the AC.

Open issue : How long would it have taken to solve the issue if I hadn’t dig it like that ?

Update: Loic Pefferkorn wrote pppoesk to automate the process. See related “journal” on LinuxFR.org.

Ruby-feedparser hacking

It’s amazing how efficient you can be when you are forced to work offline. So, thanks to Tele2, I’ve been offline at home for 16 days now, which caused major improvements to Ruby-feedparser.

  • It now outputs the list of enclosures in the text and html outputs. This means that feed2imap will automatically support podcasting if you upgrade to the newer ruby-feedparser.
  • It now rewrites relative URLs. Some blogs use links such as , which is wrong, because you don’t know where to find that /images dir, of course. It should probably be the blog engine’s responsability to rewrite such URLs, but some of them don’t. Ruby-feedparser now tries hard to guess which is the correct location for the file.

This second change is very cool : when running the next update using feed2imap, I fetched a lot of posts with embedded images that I couldn’t read before. :-)

Video recording your desktop

While preparing one of my two RMLL talks, I wanted to create a video demo of something happening on my screen, to avoid the evil demo effect.

I first tried using vncrec, and then transcode to convert to a video. But the video conversion phase took A LOT of time, because it seems that it starts an external program to write each frame.

I then switched to pyvnc2swf. Besides outputting swf files, it can also output video files (you need pymedia for this, which is packaged in neither Debian nor Ubuntu, but there’s a deb package available from their website). But the .vnc -> .avi conversion was crashing. The solution I found to work was to output .bmp files, to convert them to .png, and then, to create the video with mencoder. It worked without problem for a 8 minutes video, even if it requires quite a lot of disk space for storing all the .bmp and .png files.

Here is what my notes say I typed :

# record to a .vnc file using pyvnc2swf.
# convert to bmp (-r 5 specifies the framerate)
./edit.py -t bmp -o test.bmp -r 5 test.vnc
# convert *.bmp to *.png
for i in *.bmp; do echo $i; convert $i ${i%bmp}png; done
# encode the video
mencoder mf://test-*.png -mf fps=5 -mf type=png -o output.avi -ovc lavc -lavcopts vcodec=mpeg4 -ofps 5

Merges countdown

I’ve been generating a daily graph showing the number of merges/syncs which still have to be done (as well as other info such as the number of “missing” packages in Ubuntu, that is, packages in Debian which haven’t landed yet in Ubuntu).

The graph is available here.
We may have a problem if we still want all merges to be completed before July 13th (that’s what EdgyReleaseSchedule says).

(This was posted to my PlanetUbuntu category, but I’m not sure I’ve been added to it yet).

Rencontres Mondiales du Logiciel Libre 2006

Je suis de retour des rencontres mondiales du logiciel libre, qui avaient lieu à Vandoeuvre-les-nancy cette semaine. Random thoughts :

  • Je trouve le format des RMLL définitivement inadapté. 5 jours, c’est vraiment long. D’ailleurs beaucoup de personnes viennent pour 2 jours (jeudi/vendredi) uniquement.
  • J’ai un peu de mal à comprendre les objectifs des responsables du programme. On dirait qu’ils essaient d’avoir le plus grand nombre de conférences possible, souvent au détriment de la qualité. Quand on compare le programme des RMLL avec celui des JDLL, par exemple, on se rend compte qu’on s’ennuie beaucoup moins aux JDLL, malgré le fait qu’il n’y ait que deux amphis aux JDLL. Peut-être que ça vaudrait le coup, pour l’année prochaine, que l’organisation remette un peu ces grands principes en question ?
  • Comme d’habitude, le repas du libre souffrait de gros problèmes de passage à l’échelle. À quand un cours de programmation concurrentielle intégré à la formation des traiteurs ?
  • A part ça, c’était vraiment très bien, et l’occasion de rencontrer ou de revoir beaucoup de monde, et de discuter de pas mal de choses intéressantes.
  • Peut-être même qu’on va travailler sur une nouvelle édition du Livret du Libre ;)
  • J’ai donné 2 confs. La première, sur Grid’5000, a rassemblé assez peu de monde, probablement à cause de l’horaire un peu matinal, et surtout du fait que l’organisation (des RMLL, pas du thème) a choisi d’imprimer le programme avec les titres de la semaine dernière. Du coup ma conf s’appellait simplement ‘Grid’, ce qui n’est pas aussi sexy que ‘Grid’5000, the french nation-wide infrastructure for Grid research‘…
  • La deuxième, sur Jabber, dans le thème Standards Ouverts – Interopérabilité, a rassemblé bien plus de monde. Apparamment, je ne me suis pas trop mal débrouillé, mais on en saura plus la semaine prochaine, quand la vidéo sera disponible ;) (ouille, dur l’auto-critique). Les slides sont disponibles sur ma clé USB, que j’ai oublié dans l’amphi à la fin de ma conf. Si quelqu’un la voit … :-)
  • Parmi les trucs vraiment biens que j’ai vu, il y a FDN, un FAI ADSL associatif. Ca donne envie de changer, surtout que Tele2 m’a coupé du monde depuis maintenant 2 semaines…