Tag : iso

ANTLR grammar for XKB, and Relax NG schema (draft)

I completed the ANTLRv3 grammar for symbols/ configuration files of XKB. The grammar can parse and create the abstract syntax tree (AST) for all keyboard layouts in xkeyboard-config.

ANTLRv3 helps you create parsers for domain specific languages (DSL), an example of which is the configuration files in XKB.

Having the ANTLRv3 grammar for a configuration file allows to generate code in any of the supported target lagnuages (C, C++, Java, Python, C#, etc), so that you easily include a parser that reads those files. Essentially you avoid using custom parsers which can be difficult to maintain, or parsers that were generated with flex/bison.

On a similar note, here is the grammar to parse Compose files (such as en_US.UTF-8/Compose.pre). I am not going to be using in the project for now, but it was fun writing it. The Python target takes 18s to create the AST for the >5500 lines of the en_US.UTF-8 compose file, on a typical modern laptop.

I am also working on creating a RelaxNG schema for the XKB configuration files (those under symbols/). There is a draft available, which needs much more work.The Relax NG book by Eric van de Vlist is very useful here.

The immediate goal is to use the code generated by ANTLR to parse the XKB files and create XML files based on the Relax NG schema. I am using Python, and there are a few options; the libxml2 bindings for Python, and PyXML. The latter has more visible documentation, but I think that I should better be using the former.

Update: lxml appears to be the nice way to use libxml2 (instead of using directly libxml2).

Looking into the symbol files

In the previous post, we talked about the ANTLR grammar that parses the XKB layout files.

The grammar is available at http://code.google.com/p/keyboardlayouteditor/source/browse. I’ll rather push to the freedesktop repository once the project is completed. Now it’s too easy for me, just doing svn commit -m something.

Below you can see the relevant layout files for each country (and in some cases, language), and how the grammar deals with them. First column is filenames from the CVS XKB symbols subdirectory (to be moved eminently to GIT). Last’s week discussion with Sergey helped me figure out issues with the symbol files, simplify what information is needed, and what can be eliminated. Second column has Not OK if something is wrong. Third column tries to explain what was wrong.

gb NOK Non-UTF8
group NOK virtualMods= AltGr
hu NOK Non-UTF8
il NOK key.type=”FOUR_LEVEL” (typically: key.type[something]=….)
in NOK key.type=”FOUR_LEVEL” (typically: key.type[something]=….)
jp NOK key <BKSP> {
type=””,   // empty?
symbols[Group1]= [ bracketright, braceright ]
keypad NOK overlay1=<KO7> }; // what’s “overlay”?
level3 NOK virtual_modifiers LAlt, AlGr; virtualMods= Lalt
nbsp NOK Non-UTF8
pc NOK key <AA00> { type=”SOMETHING” } instead of { type[Group1]=”SOMETHING” }
shift NOK actions [Group1] = [
srvr_ctrl NOK key <AA00> { type=”SOMETHING” } instead of { type[Group1]=”SOMETHING” }

Non-UTF-8 are the files that have characters that are not UTF-8 (are iso-8859-1).

Some layouts have key.type = “something” and others key.type[SomeGroup] = “something”. Apparently, the format allows to infer which is the group that the type acts upon? That’s weird. Would it be better to put the group information? Is it required that the group is not set?

Some files have virtualMods, which I do not know what it is. Is it used?

Parsing XKB files with antlr

antlr (well, antlr3) is an amazing tool that replaces lex/flex, yacc/bison.

One would use antlr3 if they want to deal with Domain-Specific Languages (DSL), an example of which are the text configuration files.

In our case, we use antlr3 to parse some of the XKB configuration files, those found in /etc/X11/xkb/symbols/??.

Our aim is to be able to easily read and write those configuration files. Of course, once we have them read, we do all sorts of processing.

The stable version of antlr3 is 3.0.1, which happened to give lots of internal errors. It has not been very useful, so I tried a few times the latest beta version 3.1b, and eventually managed to get it to work. If I am not mistaken, 3.1 stable should be announced in a few days.

When using antlr, you have the choice of several target languages, such as Java, C, C++ and Python. I am using the Python target, and the latest version that is available from the antlr3 repository.

Here is the tree of the gb layout file,

tree = (SECTION (MAPTYPE (MAPOPTIONS partial default alphanumeric_keys xkb_symbols) (MAPNAME “basic”)) (MAPMATERIAL (TOKEN_INCLUDE “latin”) (TOKEN_NAME Group1 (VALUE “United Kingdom”)) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 quotedbl twosuperior oneeighth)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior sterling)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign onequarter)) (TOKEN_KEY (KEYCODEX AC11) (KEYSYMS apostrophe at dead_circumflex dead_caron)) (TOKEN_KEY (KEYCODEX TLDE) (KEYSYMS grave notsign bar bar)) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign asciitilde dead_grave dead_breve)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar bar brokenbar)) (TOKEN_INCLUDE “level3(ralt_switch_multikey)”))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME “intl”)) (MAPMATERIAL (TOKEN_INCLUDE “latin”) (TOKEN_NAME Group1 (VALUE “United Kingdom – International (with dead keys)”)) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 dead_diaeresis twosuperior onehalf)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior onethird)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign onequarter)) (TOKEN_KEY (KEYCODEX AE06) (KEYSYMS 6 dead_circumflex NoSymbol onesixth)) (TOKEN_KEY (KEYCODEX AC11) (KEYSYMS dead_acute at apostrophe bar)) (TOKEN_KEY (KEYCODEX TLDE) (KEYSYMS dead_grave notsign bar bar)) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign dead_tilde bar bar)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar bar bar)) (TOKEN_INCLUDE “level3(ralt_switch)”))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME “dvorak”)) (MAPMATERIAL (TOKEN_INCLUDE “us(dvorak)”) (TOKEN_NAME Group1 (VALUE “United Kingdom – Dvorak”)) (TOKEN_KEY (KEYCODEX BKSL) (KEYSYMS numbersign asciitilde)) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 quotedbl twosuperior NoSymbol)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling threesuperior NoSymbol)) (TOKEN_KEY (KEYCODEX AE04) (KEYSYMS 4 dollar EuroSign NoSymbol)) (TOKEN_KEY (KEYCODEX LSGT) (KEYSYMS backslash bar)) (TOKEN_KEY (KEYCODEX AD01) (KEYSYMS apostrophe at)))) (SECTION (MAPTYPE (MAPOPTIONS partial alphanumeric_keys xkb_symbols) (MAPNAME “mac”)) (MAPMATERIAL (TOKEN_INCLUDE “latin”) (TOKEN_NAME Group1 (VALUE “United Kingdom – Macintosh”)) (TOKEN_KEY (KEYCODEX AE02) (KEYSYMS 2 at EuroSign)) (TOKEN_KEY (KEYCODEX AE03) (KEYSYMS 3 sterling numbersign)) (TOKEN_INCLUDE “level3(ralt_switch)”)))

When traversing the tree, we can then pretty-print the layout at wish:

partial default alphanumeric_keys xkb_symbols “basic” {
name[Group1] = “United Kingdom”;
include “latin”
include “level3(ralt_switch_multikey)”
key <AE02> = { [ 2 , quotedbl , twosuperior , oneeighth ] };
key <AE03> = { [ 3 , sterling , threesuperior , sterling ] };
key <AE04> = { [ 4 , dollar , EuroSign , onequarter ] };
key <AC11> = { [ apostrophe , at , dead_circumflex , dead_caron ] };
key <TLDE> = { [ grave , notsign , bar , bar ] };
key <BKSL> = { [ numbersign , asciitilde , dead_grave , dead_breve ] };
key <LSGT> = { [ backslash , bar , bar , brokenbar ] };
… snip …

The code is currently hosted at code.google.com (keyboardlayouteditor) and I intend to move it shortly to FDO.

Ένδοξη ιστορία και MS-OOXML

Ο ελληνισμός έχει μεγάλη ιστορία με αποτέλεσμα να υπάρχουν μεγάλες προσδοκίες στις σύγχρονες εξελίξεις.

Ας αντιπαραβάλουμε μια σύγχρονη ιστορία από κάπου από την Ασία με τα τεκταινόμενα σε Ελλάδα και Κύπρο, σχετικά με την διαδικασία ψήφισης υπέρ ή κατά του λεγόμενου MS-OOXML ως διεθνές πρότυπο ISO για έγγραφα γραφείου. Η διαδικασία αυτή θα ολοκληρωθεί στις επόμενες μέρες, και αν δεν κάνουν κάτι Ελλάδα και Κύπρος, τότε θα καταλογιστεί ψήφος υπέρ, κάτι που θα είναι επιζήμιο στα εθνικά μας συμφέροντα (PDF). Το MS-OOXML, στην παρούσα μορφή, δεν είναι χρησιμοποιήσιμο από τρίτους κατασκευαστές για να φτιάξουν εφάμιλλα προϊόντα.

Δείτε την πορεία του MS-OOXML προς το ISO.

Γυρίζοντας στην αρχική αντιπαραβολή, στη Μαλαισία λοιπόν, έγινε πριν από μια εβδομάδα μια συνάντηση του τοπικού συνδέσμου επιχειρήσεων και βιομηχανιών (σχεδόν αντίστοιχο του ελληνικού ΣΕΒ) για συζήτηση περί του MS-OOXML, για να βοηθηθεί ο αντίστοιχος ΕΛΟΤ στη τελική του συνάντηση που θα γινόταν λίγες μέρες αργότερα. Στη συνάντηση αυτή (του συνδέσμου) δεν κάλεσαν για κάποιο παράξενο λόγο το βασικό άτομο που έκανε αρκετή δουλειά για τον τοπικό ΕΛΟΤ της χώρας, αν και ήταν το άτομο που πήγε στη Γενεύη για να εκπροσωπίσει τη χώρα. Η αφορμή ήταν ότι το συγκεκρινένο άτομο δεν ήταν μέλος του συνδέσμου επιχειρήσεων. Για κάποιο παράξενο λόγο, στη συνάντηση αυτή προσκλήθηκαν υψηλόβαθμα άτομα από τη Microsoft (ΗΠΑ).

Μετά από αυτό το συμβάν, υπήρξε ένας ιστολογικός διαπληκτισμός, με ένα, δύο, τρία άρθρα.

Μετά από δυο μέρες (από αυτό που έγινε στο αντίστοιχο ΣΕΒ) ,έγινε η συνάντηση του τοπικού αντίστοιχού ΕΛΟΤ, με παράγοντες από τοπικούς οργανισμούς και αυστηρή απαγόρευση σε εμπορικούς παράγοντες (όπως εταιρίες πληροφορικής). Το αποτέλεσμα της συνάντησης ήταν για την αποφάσιση για την τελική θέση της χώρας ως προς την ψήφιση.


Στην συνάντηση αυτή εμφανίστηκε και ο υψηλόβαθμος παράγοντας από την Μάικροσοφτ (ΗΠΑ). Για να δικαιολογηθεί η παρουσία του (δεν είναι ντόπιος), ορίστηκε (σε μια νύχτα;) ως εκπρόσωπος της Μαλαισίας για ένα μη-κερδοσκοπικό οργανισμό που ονομάζεται IASA. Εδώ υπάρχει το ερώτημα αν ο οργανισμός αυτός είναι όπως και άλλοι τέτοιοι φαινομενικά ουδέτεροι μη-κερδοσκοπικοί οργανισμοί που στόχο έχουν να προάγουν τα συμφέροντα συγκεκριμένων εταιριών δίχως να γίνονται αντιληπτοί. Παραπάνω φαίνεται η κάρτα που έφτιαξαν για την περίσταση (το άτομο αυτό δεν έχει σχέση με τη χώρα).

Η επιτροπή της χώρας αυτής δεν ενέδωσε, και ολοκλήρωσε το έργο της όπως έπρεπε, για το συμφέρον της χώρας (τους).

Όμως, το υψηλόβαθμο στέλεχος της Μάικροσοφτ (ΗΠΑ) δεν το έβαλε κάτω, και έκανε απεγνωσμένες εγγραφές ιστολογίου για να δικαιολογήσει τα αδικαιολόγητα. Μπορείτε να δείτε όλη την συζήτηση από ένα, δύο, τρία, τέσσερα. Γενικά, καλό είναι να διαβάζετε openmalaysiablog.com.

Η πορεία του MS-OOXML προς το ISO

Συνοπτικά, η διαδικασία για να κάνει κάποιος ένα πρότυπο ISO είναι: Αποφασίζεις αν θέλεις τη γρήγορη διαδικασία (fast-track process) ή την κανονική διαδικασία. Κάποιος επιλέγει τη γρήγορη διαδικασία αν γνωρίζει ότι το υποψήφιο πρότυπο είναι έτοιμο και δεν χρειάζεται σημαντικές διορθώσεις. Για το MS-OOXML (Μάικροσοφτ Office Open XML), έγινε επιλογή της γρήγορης διαδικασίας, που από την αρχή ήταν παράξενο διότι ως υποψήφιο πρότυπο περιλάμβανε περισσότερες από 6.000 σελίδες, κάτι που δεν είναι τυπικό σε πρότυπα ISΟ και τη γρήγορη διαδικασία. Ακόμα, ως κείμενο προτύπου, παράχθηκε πολύ γρήγορα (<ένα χρόνο;) που είναι ακόμα πιο παράξενο. Αντίθετα από άλλα υποψήφια πρότυπα, η δημιουργία του έγινε από την ίδια την Microsoft δίχως εξωτερική επίβλεψη/συμμετοχή.
Σύμφωνα με τη γρήγορη διασικασία, αφήνεις 6 μήνες για τις χώρες μέλη της σχετικής επιτροπής του ISO για να μελετήσουν το υποψήφιο πρότυπο και να κάνουν σχόλια. Στο τέλος των 6 μηνών, θα γίνει μια πρώτη ψήφιση, για το αν θα γίνει έγκριση όπως είναι, ή θα χρειαστούν διορθώσεις. Σε αυτό το σημείο οι χώρες στέλνουν σχόλια για βελτιώσεις, αν υπάρχουν. Η ψήφιση αυτή έγινε το περασμένο Σεπτέμβριο (2007) και για μικρή διαφορά ψήφων, το MS-OOXML δεν πήρε την απαιτούμενη πλειοψηφία κατά τους κανονισμούς του ISO.

Μικρή διαφορά; Δηλαδή το MS-OOXML δεν τα πήγε τόσο άσχημα; Στα τέλη Αυγούστου 2007 συνέβει κάτι πρωτόγνωρο στην επιτροπή εκείνη που έχει να κάνει με το MS-OOXML. Πολλές χώρες έκαναν αίτηση και εγκρίθηκαν να γίνουν μέλη, για να ψηφίσουν για το υποψήφιο πρότυπο. Εξωτικές χώρες όπως η Ακτή Ελεφαντοστού, Τζαμάικα, Τρινιντάδ και Τομπάγκο έγιναν μέλη μια βδομάδα πριν την ψήφιση. Μία από τις χώρες αυτές, που έγιναν μέλη την τελευταία στιγμή λίγο πριν την ψήφιση, ήταν και η Κύπρος. Και αυτές οι χώρες ψήφισαν Ναι στο MS-OOXML, χωρίς να μπουν στο κόπο να στείλουν σχόλια.

Αυτό που συνέβει είναι ότι υπάρχουν χώρες που δεν έχουν τη δυνατότητα ή τους πόρους να αναθέσουν σε τοπικούς φορείς να μελετήσουν το υποψήφιο πρότυπο, κάτι που έχει να κάνει με το εθνικό τους συμφέρον. Οπότε, τοπικοί αντιπρόσωποι της Microsoft στις μικρές αυτές χώρες είναι πιθανό να παίρνουν γραμμή από ψηλά να πάνε και να ψηφίσουν για το συμφέρον της εταιρίας. Το να συμβεί κάτι τέτοιο σε μια φτωχή αναπτυσσόμενη χώρα δεν αποτελεί έκπληξη. Αλλά και στην Κύπρο;

Από το Σεπτέβριο 2007 οδηγούμαστε στο Φεβρουάριο 2008 όπου στο διάστημα αυτό έπρεπε να απαντηθούν τα σχόλια και παρατηρήσεις που έγιναν στην πρώτη ψήφιση. Το Φεβρουάριο λοιπόν, αντιπρόσωποι από τις χώρες της τεχνική επιτροπής συγκεντρώθηκαν στη Γενεύη για μια βδομάδα, για να συζητήσουν τις διορθώσεις (περισσότερες από 1.000 παρατηρήσεις σε 5 εργάσιμες μέρες). Ο στόχος της συνάντησης αυτής (Ballot Resolution Meeting, BRM) ήταν να συμφωνηθούν οι διορθώσεις ώστε ένα μήνα αργότερα να είναι σε θέση οι χώρες να ψηφίσουν για την τελική τους θέση.

Η πληθώρα των παρατηρήσεων και προβλημάτων στο υποψήφιο πρότυπο είχε ως αποτέλεσμα να μην λυθούν τα προβλήματα. Η συνάντηση στη Γενεύη ήταν πολύ προβληματική, ελληνική άποψη, τρίτη χώρα.

Τώρα λοιπόν οδηγούμαστε στην κρίσιμη εβδομάδα που οι χώρες μέλη της ομάδας αυτής του ISO έρχονται να ψηφίσουν υπέρ ή κατά του υποψήφιου MS-OOXML.

Η Ελλάδα ψήφισε το Σεπτέμβριο Yes, with comments και η Κύπρος ψήφισε Yes. Αν δεν κάνουν νέα ενέργεια, θα καταλογιστεί η παλαιότερη ψήφος.

Για την αλλαγή της θέσης, υπάρχουν πληροφορίες στο groklaw.

Γιατί άραγε να θέλει η Μάικροσοφτ να περάσει ντε και καλά το MS-OOXML;

FOSDEM ’08, summary and comments

I attended FOSDEM ’08 which took place on the 23rd and 24th of February in Brussels.

Compared to other events, FOSDEM is a big event with over 4000 (?) participants and over 200 lectures (from lightning talks to keynotes). It occupied three buildings at a local university. Many sessions were taking place at the same time and you had to switch from one room to another. What follows is what I remember from the talks. Remember, people recollect <8% of the material they hear in a talk.

The first keynote was by Robin Rowe and Gabrielle Pantera, on using Linux in the motion picture industry. They showed a huge list of movies that were created using Linux farms. The first big item in the list was the movie Titanic (1997). The list stopped at around 2005 and the reason was that since then any significant movie that employs digital editing or 3D animation is created on Linux systems. They showed trailers from popular movies and explained how technology advanced to create realistic scenes. Part of being realistic, a generated scene may need to be blurred so that it does not look too crisp.

Next, Robert Watson gave a keynote on FreeBSD and the development community. He explained lots of things from the community that someone who is not using the distribution does not know about. FreeBSD apparently has a close-knit community, with people having specific roles. To become a developer, you go through a structured mentoring process which is great. I did not see such structured approach described in other open-source projects.

Pieter Hintjens, the former president of the FFII, talked about software patents. Software patents are bad because they describe ideas and not some concrete invention. This has been the view so that the target of the FFII effort fits on software patents. However, Pieter thinks that patents in general are bad, and it would be good to push this idea.

CMake is a build system, similar to what one gets with automake/autoconf/makefile. I have not seen this project before, and from what I saw, they look quite ambitious. Apparently it is very easy to get your compilation results on the web when you use CMake. In order to make their project more visible, they should make effort on migration of existing projects to using CMake. I did not see yet a major open-source package being developed with CMake, apart from CMake itself.

Richard Hughes talked about PackageKit, a layer that removes the complexity of packaging systems. You have GNOME and your distribution is either Debian, Ubuntu, Fedora or something else. PackageKit allows to have a common interface, and simplifies the workflow of managing the installation of packages and the updates.

In the Virtualisation tracks, two talks were really amazing. Xen and VirtualBox. Virtualisation is hot property and both companies were bought recently by Citrix and Sun Microsystems respectively. Xen is a Type 1 (native, bare metal) hypervisor while VirtualBox is a Type 2 (hosted) hypervisor. You would typically use Xen if you want to supply different services on a fast server. VirtualBox is amazingly good when you want to have a desktop running on your computer.

Ian Pratt (Xen) explained well the advantages of using a hypervisor, going into many details. For example, if you have a service that is single-threaded, then it makes sense to use Xen and install it on a dual-core system. Then, you can install some other services on the same system, increasing the utilisation of your investment.

Achim Hasenmueller gave an amazing talk. He started with a joke; I have recently been demoted. From CEO to head of virtualisation department (name?) at Sun Microsystems. He walked through the audience on the steps of his company. The first virtualisation product of his company was sold to Connectix, which then was sold to Microsoft as VirtualPC. Around 2005, he started a new company, Innotek and the product VirtualBox. The first customers were government agencies in Germany and only recently (2007) they started selling to end-users.

Virtualisation is quite complex, and it becomes more complex if your offering is cross platform. They manage the complexity by making VirtualBox modular.

VirtualBox comes in two versions; an open-source version and a binary edition. The difference is that with the binary edition you get USB support and you can use RDP to access the host. If you installed VirtualBox from the repository of your distribution, there is no USB support. He did not commit whether the USB/RDP support would make it to the open-source version, though it might happen since Sun Microsystems bought the company. I think that if enough people request it, then it might happen.

VirtualBox uses QT 3.3 as the cross platform toolkit, and there is a plan to migrate to QT 4.0. GTK+ was considered, though it was not chosen because it does not provide yet good support in Win32 (applications do not look very native on Windows). wxWidgets were considered as well, but also rejected. Apparently, moving from QT 3.3 to QT 4.0 is a lot of effort.

Zeeshan Ali demonstrated GUPnP, a library that allows applications to use the UPnP (Universal Plug n Play) protocol. This protocol is used when your computer tells your ADSL model to open a port so that an external computer can communicate directly with you (bypassing firewall/NAT). UPnP can also be used to access the content of your media station. The gupnp library comes with two interesting tools; gupnp-universal-cp and gupnp-network-light. The first is a browser of UPnP devices; it can show you what devices are available, what functionality they export, and you can control said devices. For example, you can use GUPnP to open a port on your router; when someone connects from the Internet to port 22 on your modem, he is redirected to your server, at port 22.

You can also use the same tool to figure out what port mapping took place already on your modem.

The demo with the network light is that you run the browser on one computer and the network light on another, both on the local LAN (this thing works only on the local LAN). Then, you can use the browser to switch on/off the light using the UPnP protocol.

Dimitris Glezos gave a talk on transifex, the translation management framework that is currently used in Fedora. Translating software is a tedious task, and currently translators spent time on management tasks that have little to do with translation. We see several people dropping from translations due to this. Transifex is an evolving platform to make the work of the translator easier.

Dimitris talked about a command-line version of transifex coming out soon. Apparently, you can use this tool to grab the Greek translation of package gedit, branch HEAD. Do the translation and upload back the file.

What I would like to see here is a tool that you can instruct it to grab all PO files from a collection of projects (such as GNOME 2.22, UI Translations), and then you translate with your scripts/tools/etc. Then, you can use transifex to upload all those files using your SVN account.

The workflow would be something like

$ tfx --project=gnome-2.22 --collection=gnome-desktop --action=get
Reading from http://svn.gnome.org/svn/damned-lies/trunk/releases.xml.in... done.
Getting alacarte... done.
Getting bug-buddy... done.
Completed in 4:11s.
$ _

Now we translate any of the files we downloaded, and we push back upstream (of course, only those files that were changed).

$ tfx --project=gnome-2.22 --collection=gnome-desktop --user=simos --action=send
 Reading local files...
Found 6 changed files.
Uploading alacarte... done.
Completed uploading translation files to gnome-2.22.
$ _

Berend Cornelius talked about creating OpenOffice.org Wizards. You get such wizards when you click on File/Wizards…, and you can use them to fill in entries in a template document (such as your name, address, etc in a letter), or use to install the spellchecker files. Actually, one of the most common uses is to get those spellchecker files installed.

A wizard is actually an OpenOffice.org extension; once you write it and install it (Tools/Extensions…), you can have it appear as a button on a toolbar or a menu item among other menus.

You write wizards in C++, and one would normally work on an existing wizard as base for new ones.

When people type in a word-processor, they typically abuse it (that’s my statement, not Berend’s) by omitting the use of styles and formatting. This makes documents difficult to maintain. Having a wizard teach a new user how to write a structured document would be a good idea.

Perry Ismangil talked about pjsip, the portable open-source SIP and media stack. This means that you can have Internet telephony on different devices. Considering that Internet Telephony is a commodity, this is very cool. He demonstrated pjsip running two small devices, a Nintendo DS and an iPhone. Apparently pjsip can go on your OpenWRT router as well, giving you many more exciting opportunities.

Clutter is a library to create fast animations and other effects on the GNOME desktop. It uses hardware acceleration to make up for the speed. You don’t need to learn OpenGL stuff; Clutter is there to provide the glue.

Gutsy has Clutter 0.4.0 in the repositories and the latest version is 0.6.0. To try out, you need at least the clutter tarball from the Clutter website. To start programming for your desktop, you need to try some of the bindings packages.

I had the chance to spend time with the DejaVu guys (Hi Denis, Ben!). Also met up with Alexios, Dimitris x2, Serafeim, Markos and others from the Greek mission.

Overall, FOSDEM is a cool event. In two days there is so much material and interesting talks. It’s a recommended technical event.

Vote NO with comments (on DIS 29500 / OOXML)

  • Vote “No, with comments,” which is the JTC1-prescribed way of indicating “conditional approval” (JTC1 Directives (DOC, pops), Section 9.8)
  • Recommend that OOXML be resubmitted as normal working item in JTC1/SC34:
    • Split into a multi part standard: WordProcessingML, SpreadsheetML, DrawingML, Office Open Math Markup, VML, etc.
    • Have each part progress independently, at its own speed, within normal ISO processing stages
    • Encourage participation from OASIS to identify opportunities for harmonization with existing ISO 26300 “ODF”
  • OOXML, as the default format in MS Office, is important. But as a standard it is full of inconsistencies, omissions, inaccuracies and errors. No standard is perfect, but OOXML, in its current state, does even not meet the minimum requirements.

source: Rob Weir‘s presentation slides, last slide (pdf)



OOXML is being rushed to become an ISO standard using the fast-track process. This is not good. As end-users we want real commodity document formats that are easy to implement and do not tie us to a specific office suite. Sadly, the purpose of rushing to standardise OOXML is simply to avoid letting it become a commodity document format. By letting OOXML become an ISO standard as it is now, a few companies get to gain a lot, but we are going to lose.

Spread the word.


I copy below the voting country list.

According to Rob Weir, all countries can cast a vote on this; sorry for this misinformation.


The voting countries (Participating countries) are (the list is being updated, please see Participating countries for new list)

  Brazil (ABNT)
Bulgaria (BDS)
China (SAC)
Colombia (ICONTEC)
Cyprus (CYS)
Czech Republic (CNI)
Côte-d’Ivoire (CODINORM)
Denmark (DS)
Finland (SFS)
France (AFNOR)
Germany (DIN)
India (BIS)
Italy (UNI)
Japan (JISC)
Kazakhstan (KAZMEMST)
Kenya (KEBS)
Korea, Republic of (KATS)
Netherlands (NEN)
Norway (SN)
Sweden (SIS)
Switzerland (SNV)
Thailand (TISI)
Trinidad and Tobago (TTBS)
Turkey (TSE)
United Kingdom (BSI)

In addition, the following countries have observer status (Observer countries), (the list is being updated, please see Observer countries for new list)

  Australia (SA)
Chile (INN)
Greece (ELOT)
Hong Kong, China (ITCHKSAR)
Hungary (MSZT)
Ireland (NSAI)
Israel (SII)
Lithuania (LST)
Mexico (DGN)
Romania (ASRO)
Spain (AENOR)
Sri Lanka (SLSI)
Ukraine (DSSU)

The observer countries, though the cannot vote, they can submit comments.

OOXML voting process and controversy

By the end of this month, the ITC 1/SC 34 Technical Committee (ISO) will be voting on whether to accept or not OOXML as an ISO standard.

The voting countries (Participating countries) are

  Brazil (ABNT)
Bulgaria (BDS)
China (SAC)
Colombia (ICONTEC)
Cyprus (CYS)
Czech Republic (CNI)
Côte-d’Ivoire (CODINORM)
Denmark (DS)
Finland (SFS)
France (AFNOR)
Germany (DIN)
India (BIS)
Italy (UNI)
Japan (JISC)
Kazakhstan (KAZMEMST)
Kenya (KEBS)
Korea, Republic of (KATS)
Netherlands (NEN)
Norway (SN)
Sweden (SIS)
Switzerland (SNV)
Thailand (TISI)
Trinidad and Tobago (TTBS)
Turkey (TSE)
United Kingdom (BSI)

In addition, the following countries have observer status (Observer countries),

Australia (SA)
Chile (INN)
Greece (ELOT)
Hong Kong, China (ITCHKSAR)
Hungary (MSZT)
Ireland (NSAI)
Israel (SII)
Lithuania (LST)
Mexico (DGN)
Romania (ASRO)
Spain (AENOR)
Sri Lanka (SLSI)
Ukraine (DSSU)

The observer countries, though the cannot vote, they can submit comments.

The current stage that OOXML is at, is 40.20, which means is the period that leads to the voting whether to accept or not as an ISO standard.

This proposed document format is controversial because an existing document format exists, the OpenDocument document format, ISO/IEC 26300, Open Document Format for Office Applications (OpenDocument) v1.0, since 2006.

OOXML is a controversial document format. Read more on this regarding OOXML.

In addition, see the Technical White Paper on OpenDocument and OOXML by the ODF Alliance UK Action Group. Another whitepaper, ODF/OOXML technical white paper by Edward Macnaghten.

Open Malaysia is also valuable resource (includes blog contributions relating to open standards). For example, in spreadsheets in OOXML one cannot write dates before the 1st March 1900!

Finally, Achieving Openness: A Closer Look at ODF and OOXML by Sam Hiser.

Update #1: Microsoft is Outmuscling OOXML Opposition in Spain

Update #2: It is important to vote NO rather than abstain. It is sad that Spain decided to abstain rather than voting NO. UPDATE: Spain is an observer, thus cannot cast a vote. Somewhat lost en la traduccion.

Update #3: Czech comments on OOXML.

Say No to OOXML

Click on the image above to visit the petition page.

I copy here the terms of the petition to say no on the standardisation of MSOOXML at ISO.

I ask the national members of ISO to vote “NO” in the ballot of ISO DIS 29500 (Office OpenXML or OOXML format) for the following reasons:

  1. There is already a standard ISO26300 named Open Document Format (ODF): a dual standard adds costs, uncertainty and confusion to industry, government and citizens;
  2. There is no provable implementation of the OOXML specification: Microsoft Office 2007 produces a special version of OOXML, not a file format which complies with the OOXML specification;
  3. There is missing information from the specification document, for example how to do a autoSpaceLikeWord95 or useWord97LineBreakRules;
  4. More than 10% of the examples mentioned in the proposed standard do not validate as XML;
  5. There is no guarantee that anybody can write a software that fully or partially implements the OOXML specification without being liable to patent damages or patent license fees by Microsoft;
  6. This standard proposal conflicts with other ISO standards, such as ISO 8601 (Representation of dates and times), ISO 639 (Codes for the Representation of Names and Languages) or ISO/IEC 10118-3 (cryptographic hash);
  7. There is a bug in the spreadsheet file format which forbids to enter any date before the year 1900: such bugs affects the OOXML specification as well as software versions such as Microsoft Excel 2000, XP, 2003 or 2007.
  8. This standard proposal has not been created by bringing together the experience and expertise of all interested parties (such as the producers, sellers, buyers, users and regulators), but by Microsoft alone.

This project is an initiative by the Foundation for a Free Information Infrastructure (FFII), the non-profit that helped achieve the rejection of the EU software patent directive in July 2005.

Update #1: Currently (26Jun07 – noon) there are 8805 signatures.
Update #2: Currently (26Jun07 – evening) there are 9481 signatures.
Update #3:


Διαθέσιμη η νέα διανομή Fedora 7

Διαβάζοντας την ανακοίνωση του Δημήτρη, βλέπουμε τα νέα χαρακτηριστικά που περιλαμβάνει η νέα έκδοση της διανομής Fedora.
Η ελληνική ομάδα που είναι πίσω από τη διανομή Fedora μετάφρασε τις σημειώσεις κυκλοφορίας της Fedora 7 για την προσωπική σας ευχαρίστηση.
Ολοκλήρωσα χτες τη λήψη του DVD ISO της Fedora 7 και το γράφω τώρα σε οπτικό δίσκο.

Ubuntu 7.04 DVD edition 4.3GB: done

Have been trying to download Ubuntu 7.04 DVD edition for the last few days. I use the amazing wget program with the command line looking like

wget -c http://www.mirrorservice.org/sites/cdimage.ubuntu.com/cdimage/releases/7.04/release/ubuntu-7.04-dvd-i386.iso

I started off the download in Windows, and over the course of the days I would interrupt and restart the download depending on what I was doing (the -c parameter lets you do that). To make it easier, I wrote a batch file with the command. I named the batch file CMD.BAT and I placed it in my home folder. All nice and well.

While the download was running, I wanted to open a new command prompt window, so I clicked on Start/Run…
Instead of getting a blank command prompt window, I get another instance of a wget download, for the same file. What does that mean? Well, YOU CAN BYPASS Start/Run… BY SIMPLY ADDING CMD.BAT IN YOUR HOME FOLFER.

Sadly, wget does not do any file locking, so I was expecting the worse. I let the download continue anyway and then I would check the checksum.

Download finishes, the checksum is wrong :(.

What to do now?

I kept a note on the file size when both wget commands where running on the same file. So, I should simply cut off the bad part and continue the download from there. Booted in Linux and I did a

split -b 3750000000 ubuntu-7.04-dvd-i386.iso

Two file were created, xaa and xab. I throw away xab and I rename xaa into ubuntu-7.04-dvd-i386.iso.
Now, ubuntu-7.04-dvd-i386.iso contains the correct content but is not the full size. So, I continue with

wget -c http://www.mirrorservice.org/sites/cdimage.ubuntu.com/cdimage/releases/7.04/release/ubuntu-7.04-dvd-i386.iso

Once completed,

$ md5sum ubuntu-7.04-dvd-i386.iso
ca609edf086eea0c821ba34a5c0a709d ubuntu-7.04-dvd-i386.iso

which is the same checksum reported at


Διαθέσιμο Ubuntu 7.04 DVD ISO, εντός Ελλάδας (FTP)

Είναι διαθέσιμο το Ubuntu 7.04 DVD ISO εντός της Ελλάδας (NTUA). Αν έχετε πρόσβαση σε ελληνικό εκπαιδευτικό ίδρυμα, μπορείτε να ολοκληρώσετε την εγγραφή στο DVD πολύ σύντομα!

Ένα από τα πλεονεκτήματα της χρήσης της έκδοσης DVD είναι η παρουσία όλων των απαραίτητων πακέτων με αποτέλεσμα να μην υπάρχει σημαντική απαίτηση σε ταχύτερο διαδίκτυο. Για παράδειγμα, η πλήρης ελληνική υποστήριξη είναι διαθέσιμη στο DVD.

Αναφερθήκαμε στην έκδοση DVD του Ubuntu 7.04 και νωρίτερα.