Mi blog lah! Το ιστολόγιό μου

1Jul/090

guadec, gsoc l10n-el, ellak-conf

guadec

I am attending GUADEC this year, thanks to the sponsorship by the GNOME Foundation!

sponsored-badge-shadow

I am organising the GNOME Localisation BoF, which takes place on Friday, 10th July, 2009, at 17:00. I am also having a session on the GNOME translator command line tool gnome-i18n-manage-vcs on the same day at 15:00.

gsoc

A few months ago, there was a program in Greece, along the lines of the Google Summer of Code, to help Greek developers in FLOSS projects. The program was organised by EELLAK, a Greek non-profit, composed of 25 institutions of the tertiary education and research centres. As it took place during the spring, it was nicknamed Greek Spring of Code (gsoc).

Apart from developing software, the program had a localisation angle, and we applied for the localisation of GNOME 2.26 to the Greek language. In practice, this meant that we had to lift the documentation translations from 32% to 100%, complete the remaining UI translations.

GNOME-226-el

We achieved the goal ;-) .

Many contributors helped in this effort; Jennie Petoumenou (also co-organiser in the effort), Marios Zindilis, Fotis Tsamis, Kostas Papadimas, Nikos Charonitakis, Sterios Prosiniklis, Giannis Katsampiris, Michalis Kotsarinis, Vasilis Kontogiannis and Socratis Vavilis.The overall task was difficult, and our team did an amazing task to complete the translations on time. Thank you all, and especially Jennie and Marios for undertaking huge chunks of the translation effort for this release.

Here are the GNOME EL 2.26 deliverables in HTML, PDF.

ellak-conf

The fourth Greek FOSS (ELLAK) conference took place in Athens on the 19-20th June 2009.

p6190288 by Elias Chrysoheris.

We had our annual localisation meetup!

I organised a workshop on git, with a focus on how to use when starting into software development. There was emphasis on using github.com to host and manage the development. In addition, services such as github.com allow to cooperate during the development, making programming a more social and interesting task.

Finally, there was a presentation of the Greek GNOME team efforts for the last year.

29Jun/0921

Microsoft Windows tax refund, from Dell

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?

18May/092

Generating multilingual PDF files out of GNOME documentation

Robert describes how to generate PDF files from GNOME documentation source files.

We describe here how to manually generate PDF files from translated documentation.

The relevant gnome-doc-utils files for documentation generation is at http://git.gnome.org/cgit/gnome-doc-utils/tree/tools. As far as I understand from reading the makefile, there is no support yet to build PDFs out of localised documentation.

Let’s assume we want to generate PDF documentation for the GNOME 2 User Guide, for the Greek language.

1. We clone the relevant repository

$ git clone git://git.gnome.org/gnome-user-docs

2. Then,

cd gnome-user-docs/gnome2-user-guide/

and now generate the equivalent XML files found in C/ with the localisation for the Greek language (found in el/),

\ls C/*.xml | perl -n -e 'chop; $a=$_; print "xml2po -p el/el.po $a > el/`basename $a`\n"' | sh

3. Let’s see what we created,

$ ls el/
el.po    glossary.xml  goscustdesk.xml     
gosfeedback.xml  gosoverview.xml  gosstartsession.xml 
legal.xml  figures  gosbasic.xml  goseditmainmenu.xml 
gosnautilus.xml  gospanel.xml     gostools.xml        
user-guide.xml
$ _

The main file is user-guide.xml, which references the rest of the XML files.

4. One additional step I like to do is convert all those individual .xml in a single big XML file just before performing the conversion to PDF. This helps to figure out any markup mistakes that could have been caused during the translation.

cd el/
xmllint --noent user-guide.xml --output documentation-user-guide.xml

This step does not have the desired effect with the XML in the user-guide because the include files are referenced with “<include xmlns=”http://www.w3.org/2001/XInclude” href=”gosbasic.xml”/>” rather than the “&gosbasic;” which “xmllint –noent” appears to like. Other GNOME documentation use the latter style. Lazyweb, any tips so that xmllint can create a single big fat XML file?

4. You may want to manually populate the figures/ directory. That is, copy any C/figures/* files that are not present in your LL/figures/ directory.

5. In order to create PDF files in NON-iso-8859-1, we need to use the xetex backend,

dblatex --backend=xetex --verbose documentation-user-guide.xml

If all go well, you are greeted with a documentation-user-guide.pdf document.

Two things may go wrong here; there is either an invalid construct in the XML file or you have stumbled on a XeTex bug for your language.

For the Greek language there is a known bug and a workaround for XeTex.

Here is the GNOME2 User Guide (PDF) for

  1. Greek (bit messy hyphenation due to workaround), and
  2. Russian.

I also tried the user-guide with

Chinese: Fails to compile, encoding problem or most probably limitation in XeTeX.

Thai: Compiles just fine but no Thai font is available. How do you add fonts to XeTeX?

Punjabi: Compiles just fine but no Hindi font is available. How do you add fonts to XeTeX?

18Apr/098

Git clones vs Shallow Git clones

When cloning a Git repository, there is an option to limit the amount of history your clone will have. If you set the parameter to –depth 1, you get the least amount of history, and you create a shallow clone.

The git clone man page says that you cannot push your commits if you have a shallow clone. Apparently, there is no error message when you actually push your commits, so it is a situation that might bring problems in the repository in the future.

Lacking more details on whether pushing commits from shallow clones is bad for the repository, let’s measure if there are any gains when someone opts for shallow clones.

Module (gnome-2-26) Full clone (MB) Shallow clone (MB)
evolution 204 189
gtk+ 193 172
nautilus 139 108
gnome-games 127 120
gnome-applets 110 98
gnome-user-docs 108 102
evolution-data-server 84 77
anjuta 76 66
libgweather 69 68
gnome-panel 68 60
ekiga 61 49
dasher 58 49
orca 55 47
gnome-utils 53 48
gnome-icon-theme 51 49
gedit 49 45
epiphany 48 42
gnome-control-center 46 40
gdm 43 38
glib 42 37
gnome-system-tools 33 29
gnome-media 33 30
totem 31 27
gnome-power-manager 31 27
gnome-backgrounds 31 30
brasero 31 29
metacity 29 27
gnome-desktop 28 24
tomboy 27 25
seahorse 24 22
gnome-terminal 23 21
gnome-session 23 20
gucharmap 22 19
gnome-vfs 22 19
glade3 21 19
gconf 21 20
eog 21 18
gcalctool 19 17
libgnomeui 18 15
gtkhtml 18 16
evince 18 15
gnome-themes 17 16
cheese 17 15
file-roller 16 14
empathy 16 15
gok 14 13
gtksourceview 13 12
gnome-keyring 13 12
gnome-doc-utils 13 13
bug-buddy 13 11
zenity 12 11
yelp 12 11
sound-juicer 12 11
libgnome 12 11
gvfs 12 9.9
gnome-system-monitor 12 11
deskbar-applet 12 9.5
libbonobo 11 8.8
gnome-settings-daemon 11 11
gnome-devel-docs 11 11
evolution-exchange 9.9 9.3
gnome-screensaver 9 8.3
vte 8.7 7.5
libbonoboui 8.7 7.4
libgtop 8.4 6.9
libgnomeprintui 8.4 7.1
gconf-editor 8.4 7.9
libgnomeprint 8.1 7
vinagre 7.3 6
libwnck 6.6 5.9
accerciser 6.6 6.3
gtk-engines 6.4 5.4
sabayon 5.8 5.2
vino 5.7 5.3
gnome-nettool 5.3 4.9
mousetweaks 5 4.7
totem-pl-parser 4.6 4.5
at-spi 4.5 3.9
libgnomecanvas 4.3 3.7
atk 4.2 3.7
gnome-netstatus 4.1 3.8
devhelp 3.9 3.2
gdl 3.5 3.2
gnome-mag 3.2 2.9
gnome-menus 3 2.6
hamster-applet 2.8 2.2
gnome-user-share 2.6 2.5
evolution-mapi 2.2 2.1
libgnomekbd 1.8 1.7
alacarte 1.6 1.4
pessulus 1.5 1.3
evolution-webcal 1.4 1.3
swfdec-gnome 1.1 0.94
Total (MB) 2625.6 2349.24
Time (min) 52 37

The git repositories for all modules of gnome-2-26 weight 2.6GB while their shallow clones are 2.3GB. There is a difference of less than 300MB.

Comparatively, if it takes 52 minutes to clone all GNOME 2.26 repositories, their shallow clones save 15 minutes.The speed that was reported by git clone was about 1.4MB/s in this experiment.

Cloning is bound by both your bandwidth and your CPU (especially when resolving deltas). It would be interesting to evaluate if there would be benefits (on git.gnome.org load, speed of cloning) by having daily tarballs of anonymous clones of the modules, so that one can download using HTTP and then simply add their account details and update with git pull –rebase.

With the above information, it makes sense to avoid making shallow clones, especially when you intend to push your changes. Instead, one would dedicate at least 2.6GB for the repositories, and keep them.

intltool-manage-vcs was used to retrieve the repositories.

Update: The GNOME 2.26 modules (2.6GB in size for all their repositories), compresses down to 1.6GB (.tar.bz2).

Tagged as: 8 Comments
8Apr/0912

Towards a GNOME CLI translation management tool

Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was some confusion between this script and intltools, which now is a general localisation tool, not tied to GNOME.

In Designing a command-line translation tool for GNOME, I described how a CLI translation management tool would be used to ease the work of a translator with commit access. The discussion was continued with Leonardo‘s post Parsing damned-lies’ releases.xml.in in the command line.

The stage we are now is that we have a tool (not official GNOME tool, but rather at beta testing phase!) that can manage the repositories for us, so that the checking out and committing can be fairly automated. The source is available at https://github.com/simos/gnome-i18n-manage-vcs/.

We show two working examples.

Let’s say we want to update the documentation for gcalctool. We run

$ ./intltool-manage-vcs --language el --release gnome-2-26 \
--username simos --module gcalctool --transtype doc --init
Release  : gnome-2-26
Language : el
    Category: admin-tools
    Category: dev-tools
    Category: dev-platform
    Category: desktop
        Module:              gcalctool, Branch: gnome-2-26

Download completed successfully.
$ _

In the PO/ subdirectory there is a PO file for gcalctool. We update it using our favourite translation tool, and then

$ ./intltool-manage-vcs --language Greek --commit
Sending        el/el.po
Transmitting file data .
Committed revision 2475.
$ _

Let’s see another example. We want to update the gnome-games documentation. These are several individual PO files, for each of the games.

$ ./intltool-manage-vcs --language el --release gnome-2-26 \
--username simos --module gnome-games --transtype doc --init
Release  : gnome-2-26
Language : el
    Category: admin-tools
    Category: dev-tools
    Category: dev-platform
    Category: desktop
        Module:            gnome-games, Branch: gnome-2-26

Download completed successfully.
$ _

There are several files,

$ ls PO
aisleriot.gnome-2-26.el.po  gnibbles.gnome-2-26.el.po
gnotravex.gnome-2-26.el.po  README
blackjack.gnome-2-26.el.po  gnobots2.gnome-2-26.el.po
gnotski.gnome-2-26.el.po    same-gnome.gnome-2-26.el.po
glchess.gnome-2-26.el.po    gnome-sudoku.gnome-2-26.el.po
gtali.gnome-2-26.el.po      START
glines.gnome-2-26.el.po     gnometris.gnome-2-26.el.po
iagno.gnome-2-26.el.po      gnect.gnome-2-26.el.po
gnomine.gnome-2-26.el.po    mahjongg.gnome-2-26.el.po
$ _

We enter the PO/ subdirectory and we update those files we wish. We can also run scripts on the PO files. For example, all these documentation files contain the same fragment of the FDL license, so we can translate the license once, and then merge automatically to all translations.

Finally,

$ ./intltool-manage-vcs --language Greek --commit
Sending        el/el.po
Transmitting file data .
Committed revision 9014.
Sending        el/el.po
Transmitting file data .
Committed revision 9015.
Sending        el/el.po
Transmitting file data .
Committed revision 9016.
$ _

In the above example, we updated the documentation of three of the games.

Here are tips when using this tool

  • There is a –dry-run option that is useful when experimenting or trying for the first time.
  • You can filter which group of a release to download, based on category. Existing categories are desktop, admin-tools, dev-tools, dev-platform. Also, on translation type, either documentation or UI (if you do not specify, we get both). On module, by providing the module name.

And the current limitations

  • We currently only support SVN. This will change once the repositories move to git.gnome.org, in about two weeks time.
  • You need to have at least an initial translation (currently, the script does not svn add files). To be fixed once we move to git.
  • We do not currently update ChangeLog files. That’s why gnome-games is so cool for these experiments. Due to the git move, we would not need to mess with ChangeLog files.
  • We are dependent on the http://l10n.gnome.org/languages/el/gnome-2-26/xml URLs (replace el with your language). These URLs expose the release modules information in a nice XML file. Previously, the information used to exist in an XML file in the repository of damned-lies. Now, the information lies in the mysql database of damned-lies+vertimus, and is exposed through the above type of URL.
  • Due to the previous point, we commit to branch or trunk, depending on what is available in the latest release (gnome-2-26). That means, my translation fixes in gnome-games have not made it to trunk (HEAD). This is something that can be fixed with a workaround. It would be actually cool to use this tool to commit to both gnome-2-xx and master at the same time.
  • We currently do not deal with figures.

Considering that damned-lies+vertimus will be having commit functionality soon, I think that having more than one option for easy commiting translations is good.

10Aug/0812

Features for the killer VoIP app

I see two issues that plague FLOSS VoIP apps and do not allow their widest adoption. The first VoIP app that gets these, should get fame and glory.

First, the majority of users are broadband users, with a router that protects the inside systems. It is not possible for an outsider to initiate a network connection to a system inside the LAN. If both users that try to communicate have this typical network configuration, then the current tools say something like «You have a symmetric NAT, and at the moment the way to fix this is to either put your computer in the DMZ or enable manually port-forwarding for specific ports.» Ekiga discusses this issue at Ekiga behind a NAT router and directs the affected users (when using the program) to that page. Twinkle (QT-based SIP-phone) shows you a dialog box with the exact ports to enable for port-forwarding on your router.

The issue of a symmetric NAT can be solved in most of the cases by using the UPnP protocol. If the router supports UPnP (most do by default), then the VoIP app can enable the port-forwarding by itself, transparently from the user, and it will just work.

Until recently there was no good UPnP library, which was probably the reason for the lack of support. However, this changed with GUPnP.

The bug report to add (G)UPnP support to Ekiga is Bug 337166 – UPnP for firewall/NAT penetration.

Ekiga already supports STUN and Zeroconf. With UPnP, the vast majority of users would be covered.

The other issue is the difficulty in configuring your third-party VoIP SIP account, that allows you to make inexpensive voice conversations to telephones and mobiles. The reason why it is difficult is because the user has to figure out the SIP server and other configuration details. The terminology is confusing, registrar, domain, etc.

Ekiga has good support in configuring Diamondcard. The user is presented with a Wizard when configuring for the first time Ekiga.

http://farm4.static.flickr.com/3056/2750741519_0f2bdd2515_o.png

What needs to be done is to put together the details for each provider and maintain a list at ekiga.com. The client would have a copy of the list, and allow on-demand updates. The bug report, Bug 547215 – Ekiga should know all SIP/VoIP providers, allow easy account addition.

Update 11Aug08: Wiki page with PC-to-phone providers and their details.

23Jul/080

GUADEC 2008 presentation slides

It appears that Google has not found yet the page of the GUADEC 2008 presentation slides.

If you have slides, put them on http://live.gnome.org/GUADEC/2008/Slides, alphabetically by title.

GUADEC slides.

2Apr/072

Using SVN for GNOME Translators

Update 3rd June 2009: This is a very old post when GNOME was using SVN for the VCS (now we use git). My blog theme does not show the year, so I am writing this in case you are confused by the post.

Now GNOME uses SVN to manage the development of the software.
To use SVN, the basic relevant commands are described at Getting the most out of Subversion in GNOME.

If you are a translator, the work is further simplified. You would normally new SVN to get a copy of the source code of a package so that you can extract the translation messages of the UI or the documentation. In addition, in some cases you can provide localised images and screenshots.

First of all, if you do not have an account on SVN yet, you need to connect using Anonymous access. You still have all access, however if you want to upload any translations would need to give them to someone else who has such an SVN account.

Furthermore, the source code of a package is often branched during a GNOME release so that when there is ongoing development, the released version of the package is not affected. Branches usually have a name similar to gnome-2-18. The not-branched branch is called trunk (or HEAD, in CVS lingo), where all cutting-edge development usually happens.

To checkout (here checkout means to obtain a copy) the source code of a package.

Checkout trunk as anonymous

svn checkout http://svn.gnome.org/svn/gnome-utils/trunk my-trunk-gnome-utils

Checkout trunk as simos

svn checkout svn+ssh://simos@svn.gnome.org/svn/gnome-utils/trunk my-trunk-gnome-utils

Checkout branch called “gnome-2-18″ as anonymous

svn checkout http://svn.gnome.org/svn/gnome-utils/branches/gnome-2-18/ gnome-utils-stable

Checkout branch called “gnome-2-18″ as simos

svn checkout svn+ssh://simos@svn.gnome.org/svn/gnome-utils/branches/gnome-2-18 gnome-utils-stable

To commit you changes means that you send your changes upstream to the project.
In order to commit, you enter the directory you checked out and you run

svn commit -m “Updated Greek translation”

The changes you make typically include updated your language’s LL.po file, and also updating the ChangeLog file.

You cannot commit in a anonymous checkout. The system knows that it’s you when you are commiting because the checkout command saved the username you used earlier.

In the SVN commands, you can abbreviate checkout with co, and commit with ci. Sometimes this leads to the most common newbie error; you tend to think that co is for commit. In practice you cannot make a mess though, as the command line parameters between the two actions are very different, and the command will fail.

   

Switch to our mobile site