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

3May/080

Using Anjuta in Ubuntu 8.04 to develop a GNOME C++ application (gtkmm)

You can install Anjuta 2.4.1 from the Synaptic package manager. You also need to install a few development packages. I do not know if there is a nice meta-package such as build-essential (used to install compilers et al), so I'll just ask you to install the packages by hand. A more elegant way would be very much appreciated to see in the comments.

$ sudo apt-get install build-essential libgtkmm-2.4-dev autogen automake libtool intltool libglademm-2.4-dev

That is the order of installation when you go trial by error inside Anjuta to compile a project. Each package draws in several other packages. Also, if you have the Ubuntu 8.04 DVD in your drive, most of these packages will be installed in a jiffy. We have the Greek localisation enabled, so bear with us. Thanks to Giannis Katsampiris for completing the recent update of the Anjuta 2.4 localisation.
Screenshot of Anjuta, initial screen (Localisation: Greek)
Once Anjuta is installed, you are presented with the Anjuta main window.

We then click on File/New/Project (Αρχείο/Νέο/1. Έργο),

Project creation wizard

We click on Forward here.

Choose project type

There are many many project types. We wade through and we pick to use C++ and GTKMM (C++ bindings for GTK+). We could pick any other variation; GTKMM was a request from the Ubuntu-gr mailing list.

Fill in some contact details

We then fill in some contact details.

Sorting out the project settings

There is an option to specify at this stage external packages. We opt not to specify them now.

We are actually done!

Once you click Apply (Εφαρμογή) - the button with the green tick, Anjuta will create an initial dummy package (actually a hello world application), and will run automatically the equivalent of ./configure for you.

Read to work!

Now, this is the final screen, when you start working. Here you would click on Κατασκευή/Κατασκευή έργου (Build/Build Project), so that the project gets compiled.

Then, you would click on Κατασκευή/Εκτέλεση προγράμματος... (Build/Run program...) to run the program!

Start typing!

Here is shows that we have located the source file (main.cc), and we see main().

It takes about 3 second to compile a program with g++ (at least on my system). Therefore, the dead time between (a) Let's compile it and (b) Oh, I am running my program!, is under 5 seconds, which is good.

29Feb/081

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.

7Oct/070

One-line hardware support (USB Wireless Adapter)

I got recently a USB Wireless Adaptor, produced by Aztech. It was a good buy for several reasons:

  • It advertised Linux support
  • It was affordable
  • It had good quality casing; you can step on it and it won't break
  • It had the Penguin on the box and was really really cheap

When I plugged it in on my Linux system, it did not work out of the box. The kernel acknowledged that a USB device was inserted (two lines in /var/log/messages) but no driver claimed the device.

With the package came a CD which had drivers for several operating systems, including Linux. Apparently one would need to install the specific driver. I think the driver was available in both source code and as a binary package (for some kernel version).

The kernel module on the CD was called zd1211, so I checked whether my kernel had such a module installed. To my surprise, there was such a kernel module, called zd1211rw. I hope you have better chance with the URL because now the website appears to be down (Error 500).

Therefore, what was wrong with my zd1211rw kernel module? Reading the documentation of project website, I figured out that you have to report the ID (called the USB ID) of your adapter  so that it is included in the kernel module, and when you plug in your device, it will be automatically detected.

You can find the USB ID by running the command lsusb. Then, it is a one-line patch for the zd1211rw driver to add support for the device,

--- zd1211rw.linux2.6.20/zd_usb.c      2007-09-25 14:48:06.000000000
+0300
+++ zd1211rw/zd_usb.c    2007-09-28 11:35:51.000000000 +0300
@@ -64,6 +64,7 @@
{ USB_DEVICE(0x13b1, 0x0024), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0x0586, 0x340f), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0x0baf, 0x0121), .driver_info = DEVICE_ZD1211B },
+       { USB_DEVICE(0x0cde, 0x001a), .driver_info = DEVICE_ZD1211B },
/* "Driverless" devices that need ejecting */
{ USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER },
{ USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER },

What Aztech should have done is to submit the USB ID to the developers of the zd1211rw driver. In this way, any Linux distribution that comes out with the updated kernel will have support for the device.

It is very important to get the manufacturers to change mentality. From offering a CD with "drivers", for free and open-source software they should also work upstream with the device driver developers of the Linux kernel. The effort is small and the customer benefits huge.

16Jul/070

GUADEC Day #2

(see http://www.guadec.org/schedule/warmup)

At the first presentation, Quim Gil talked about GNOME marketing, what have been done, what is the goal of marketing. He showed a focused mind on important marketing tasks; it is easy to get carried away and not be effective, a mistake that happens in several projects.

The next session was by Tomas Frydrych (Open Hand - I have their sticker on my laptop!) on memory use in GNOME applications. Many people complain that XYZ is bloated. However, this does not convey what exactly happens; pretty useless. In addition, the common tools that show memory use do not show the proper picture because of the memory management techniques. That is, due to shared libraries, the total memory occupied by an application appears very big. A tool examined is exmap. This tool uses a kernel module that shows memory use of applications by reading in /proc. It takes a snapshot of memory use; it's not real-time info. It comes with a GTK+ front-end (gexmap) that requires a big screen (oops, PDAs). However, it is not suitable for internet tablets and other low-spec devices. Therefore, they came up with exmap-console which addresses the shortcommings. It has a console interface based on the readline library.

Here are the rest of my notes. Hope they make sense to you.

. exmap --interactive
. ?: help
. Head: quite useful (dynamic allocation)
. Mapped:
. Sole use: memory that app is using on its own (rss?)
. "sort vm"
. "print" or "p"
. "add nautilus"
. "clear"
. "detail file" (what executables/libs loaded and how much consume)
. "detail none"

Sole use
. valgrind, to analyse Sole Use memory?
. "detail ????"

Lots of small libraries: overhead

Looking ahead
. Pagemap: by Matt Macall
. http://projects.o-hand.com/exmap-console/

Python
. Sole use: ~18MB ;-(

Tomas was apparently running Ubuntu with the English UK locale. The English UK translation team is doing an amazing job at the translation stats. Actually, most messages are copied, however with a script one can pick up words such as organization and change to organisation. The problem here is that, for example, the GAIM mo file is 215KB (?), however for the British English translation the actual changes should be less than 2-3KB. Messages that are missing from a translation mean that the original US English messages will be used. I'll have to find how to use msgfilter to make messages untranslated if msgid == msgstr. Where is Danilo?

After lunch time (did not go for lunch), I went to the Accerciser session. Pretty cool tool, something I have been look for. Accerciser uses the accessibility framework of GNOME in order to inspect the windows of running applications and see into the properties. A good use is to identify if elements such as text boxes come with description labels; they are important to be there for accessibility purposes (screen reader), as a person that depends on software to read (text to speech) the contents of windows.

The next session was GNOME accessibility for blind people. Jan Buchal gave an excellent presentation.

My notes,

. is from Chech republic, is blind himself. has been using computers for 20+ years

. from user perspective
. users, regular and irregular ;-)
. software
. firefox 3.0beta - ok for accessibility other versions no
. gaim messenger ok
. openoffice.org ok but did not try
. orca screenreader ^^^ works ok.
. generally ready for prime time
. ubuntu guy for accessibility was there
. made joke about not having/needing display slides ;-]
. synthesizer: festival, espeak, etc - can choose
. availability of voices
. javascript: not good for accessibility
. links/w3m: just fine!
. firefox3 makes accessibility now possible.
. web designer education, things like title="", alt="" for images.
. OOo, not installed but should work, ooo-gnome
. "braillcom" company name
. "speech dispatcher"
. logical events
. have short sound event instead of "button", "input form"
. another special sound for emacs prompt, etc.
. uses emacs
. have all events spoken, such as application crashing.
. problems of accessibility
. not money main factor, but still exists.
. standard developers do not use accessibility functions
. "accessor" talk, can help
. small developer group on accessiblity, may not cooperate well
. non-regular users (such as blind musician)
. musicians
. project "singing computer"
. gtk, did not have good infrastructure
. used lilypond (music typesetter, good but not simple to use)
. singing mode in festival
. use emacs with special mode to write music scores (?)
. write music score and have the computer sing it (this is not "caruso")
. gnome interface for lilypond would be interesting
. chemistry for blind
. gtk+
. considering it
. must also work, unfortunately, on windows
. gtk+ for windows, not so good for accessibility
. conclusion: free accessibility
. need users so that applications can be improved
. have festival synthesizer, not perfect but usable
. many languages, hindi, finnish, afrikaans
. endinburgh project, to reimplement festival better
. proprietary software is a disadvantage
. q: how do you learn to use new software?
. a: has been a computer user for 20+ years, is not good candidate to say
. a: if you are dedicated, you can bypass hardles, old lady emacs/festival/lilypond
. brrlcom, not for end-users(?)
. developer problem?
. generally there is lack of documentation; easy to teach what a developer needs to know
. so that the application is accessible
. HIG Human Interface Guidelines, accessible to the developers
. "speakup" project
. Willy, from Sun microsystems, working on accessibility for +20 years, Lead of Orca.
. developers: feel accessibility is a hindrance to development
. in practice the gap is not huge
. get tools (glade) and gtk+ to come with accessibility on by default
. accessibility
. is not only for people with disabilities
. can do amazing things like 3d interfaces something

These summaries are an important example of the rule that during presentation, participants tend to remember only about 8% of the material. In some examples, even less is being recollected.

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.

9Jan/072

Translating the OLPC

In a previous post, we covered how to install fonts and enabling writing support on the OLPC. The OLPC contains a limited number of applications that are available to be translated. These applications include

  1. NetworkManager, part of the GNOME project (HEAD, extras)
  2. alsa-utils, ???
  3. aspell, external
  4. atk10, part of the GNOME project (GNOME 2.18, developer)
  5. chkconfig, part of the Fedora Project
  6. diffutils, external
  7. glib20, part of the GNOME project (GNOME 2.18, developer)
  8. gst-plugins-base-0.10, external
  9. gst-plugins-good-0.10, external
  10. gstreamer-0.10, external
  11. gtk20-properties, part of the GNOME project (GNOME 2.18, developer)
  12. gtk20, part of the GNOME project (GNOME 2.18, developer)
  13. hal, external
  14. initscripts, part of the Fedora Project
  15. libc, part of the Translation Project (reduced version?)
  16. libuser, part of the Fedora Project
  17. libwnck, part of the GNOME Project (GNOME 2.18, desktop)
  18. stardict, external
  19. vte, part of the GNOME Project (GNOME 2.18, desktop)
  20. wget, part of the Translation Project

The links provided point to the latest available version. The versions that the OLPC using are not the latest with the upstream project, therefore keep in mind that the translated files may differ. It would be good to establish the exact .PO files from the OLPC project (URL to source?).

1Jul/060

Επιστροφή από GUADEC 2006

Σήμερα το πρωί επέστρεψα από το συνέδριο GNOME User and Developer European Conference (GUADEC).

Το συνέδριο ήταν μια πολύ καλή ευκαιρία για να συναντηθούν τα άτομα που εργάζονται στο ίδιο το γραφικό περιβάλλον GNOME και αλλά σημαντικά έργα όπως το Xorg.

Οι πρώτες δύο μέρες ήταν για warm up και υπήρχαν θέματα γενικά για το ελεύθερο λογισμικό. Υπήρξαν αναφορές για τοπικοποίηση ελεύθερου λογισμικού όπως OOo και Mozilla. Ο οργανισμός SIL International έκανε επίδειξη την δουλειά που κάνει με τη βιβλιοθήκη graphite, που επιτρέπει την απεικόνιση περίπλοκων γραφών (ινδικά, κτλ) καθώς και τη γραφή με τη χρήση combining marks. Για το τελευταίο, όταν π.χ. κάποιος γράφει ελληνικά μπορεί να χρησιμοποιήσει είτε χαρακτήρες precomposed (με τα σημάδια ήδη επάνω τους) είτε τους χαρακτήρες της αλφαβήτου με τα combining marks. Δοκιμάστε να γράψετε σε GNOME

α + Ctr-Shift-301 παράγει ά

Δηλαδή υπάρχει διαφορά στην κωδικοποίηση των ά και ά καθώς και μικρή διαφορά στην εμφάνιση τους. Σε παραδείγματα με πιο περίπλοκα σημάδια, το πρόβλημα αυτό είναι ακόμα πιο φανερό.

Με τη μηχανή graphite είναι δυνατό να αποδοθούν οι κατάλληλες πληροφορίες στις γραμματοσειρές για να γίνει η σωστή απεικόνιση.
Ακόμα, η βιβλιοθήκη KMFL επιτρέπει το εύκολο γράψιμο σε άλλες γλώσσες. Σε Ubuntu είναι διαθέσιμη ως συστατικό του SCIM.

Ο Federico Mena Quintero έκανε μια βασική παρουσίαση για τα πρώτα βήματα στο προγραμματισμό και στη δημιουργία επιρραμμάτων (patches). Στόχος της παρουσίασης ήταν να κάνει την τοπική κοινότητα να ξεκινήσει τον προγραμματισμό.

Την πρώτη ημέρα του Guadec ο Jeff Waugh άνοιξε το συνέδριο με παρουσίαση των βασικών στόχων του έργου GNOME. Στο προσκήνιο είναι ο Dave Neary.
Go to the screencast

Ο Alex Graveley παρουσίασε το Gimmie, ενός προγράμματος που μπορεί να αντικαταστήσει το ταμπλώ στο GNOME. Υπάρχει τώρα και ελληνική μετάφραση του πακέτου.

Ο Miguel κάθεται στα δεξιά (πράσινο t-shirt).

Η Kathy Sierra έκανε μια παρουσίαση με τίτλο How to make passionate users. Η παρουσίαση αυτή ήταν από της καλύτερες του συνεδρίου διότι παρουσίασε προβλήματα στη σωστή προβολή και διάδοση ελεύθερου λογισμικού. Συγκεκριμένα, πρέπει να υπάρχει μια ροή κατά τη διάρκεια της εκμάθησης ενός νέου πακέτου λογισμικού ώστε να γίνει η μετατροπή ενός νέου χρήστη σε ένα παθιασμένο χρήστη.
O Behdad έκανε μια παρουσίαση για το pango και τις γραμματοσειρές. Υπάρχει ένα ζήτημα για το θέμα της σωστής υποστήριξης ελληνικών στη διανομή Fedora Core Linux. Αυτή τη στιγμή η πιο κατάλληλη ελεύθερη γραμματοσειρά είναι η DejaVu. Δεν έγινε αναφορά στο ζήτημα αυτό, σε αυτό το σημείο.
O Robert Love έκανε μια παρουσίαση για το NetworkManager, που επιτρέπει εφαρμογές να διατηρούν μια σωστή σύνδεση με το δίκτυο. Το πακέτο αυτό είναι ιδιαίτερο σημαντικό όταν υπάρχουν πολλαπλά access points και θέλετε να υπάρχει αυτόματη ρύθμιση δικτύου. Στην ίδια παρουσίαση, ο Robert αναφέρθηκε και το πακέτο FUSE που επιτρέπει στους χρήστες να γράφουν τα δικά τους συστήματα αρχείων σε κατάσταση χρήστη (userspace).
Ο Damien Sandras παρουσίασε το Ekiga, πρόγραμμα επικοινωνίας μέσω φωνής και βίντεο. Φαίνεται ότι υπάρχει ανάγκη για βοήθεια στο θέμα της προώθησης του λογισμικού (μάρκετινγκ).

Ο Alexander Larsson παρουσίασε το νέο API για εκτυπώσεις σε GTK+. Υπήρξε συζήτηση για κάποιες επιλογές με το ενδεχόμενο να υπάρχουν άλλες επιλογές. Πάντως έγινε αναφορά ότι για τώρα δεν είναι εύκολη η αντιγραφή και επικόλληση του κειμένου μέσα από το νέο API.

Έπειτα, ο Federico έκανε το μεσημεριανό keynote με τίτλο How Much Faster? περιγράφοντας τις στρατηγικές βελτιστοποίησης του λογισμικού ώστε να μην υπάρχει παράξενα κολλήματα κατά τη χρήση (ζητήματα ροής από την παρουσίαση της Kathy). Υπάρχει ένα σημαντικό θέμα στην ανάλυση πακέτων λογισμικού όπως Evolution και Firefox για τη βελτιστοποίηση της χρήσης μνήμης και της διαδραστικότητάς τους.
O Glynn Foster παρουσίασε το πακέτο DTrace που επιτρέπει τον έλεγχο της λειτουργίας λογισμικού (χρειάζεται αλλαγές στον πυρήνα). Το DTrace είναι διαθέσιμο σε Solaris και FreeBSD. Είναι αρκετά καλό να το χρησιμοποιήσει κάποιος για την κατανόηση των προβλημάτων μνήμης/ταχύτητας των πακέτων ελεύθερου λογισμικού.

Την επόμενη μέρα, ο Lluis Sanchez παρουσίασε το MonoDevelop και τα νεώτερά του χαρακτηριστικά. Το MonoDevelop επιτρέπει την εύκολη δημιουργία εφαρμογών σε Mono αλλά και για άλλες γλώσσες.

Ο Jim Gettys παρουσίασε το έργο OLPC και αναφέρθηκε στις πληροφορίες που μπορεί να βρει κάποιος και από το www.laptop.org. Έβγαλα φωτογραφίες με τις διαφάνειες και θα τις βάλω κάπου σύντομα.

Ο Lluis Villa έκλεισε το συνέδριο GUADEC με μια πολύ δυνατή παρουσίαση. Ο Lluis ήταν bugmaster στο bugzilla.gnome.org και έχει προσφέρει αρκετά. Τώρα ξεκινά πτυχίο για δικηγόρος με αποτέλεσμα να είναι εκτός της σκηνής για τα επόμενα 4 χρόνια. Χρησιμοποίησε το στοιχείο αυτό για να αναφερθεί στο 2010 και σε τι πιστεύει να έχει γίνει μέχρι τότε. Το μήνυμά του ήταν ότι GNOME is about people.
Οι επόμενες δύο μέρες ήταν της μορφής After Hours workshop.

Υπήρξε μια συζήτηση για το OLPC από τον Jim Gettys. Έγινε αναφορά στην τοπικοποίηση και στα τυχόν προβλήματα καθώς και στο ζήτημα της ανάγκης hinting στις γραμματοσειρές.

Ακόμα, έγινε μια συζήτηση για το θέμα των γραμματοσειρών στη διανομή Fedora. Όπως είναι τώρα, όταν κάποιος εγκαταστήσει ελληνικά, έχει ένα αποτέλεσμα που μοιάζει με αυτό το χάλι. Ο λόγος για τον οποίο δεν έχει μπει άμεσα η γραμματοσειρά DejaVu στη διανομή Fedora είναι διότι η γραμματοσειρά αυτή περιλαμβάνει αραβικούς χαρακτήρες και μπορεί εν δυνάμει να δημιουργήσει πρόβλημα στους χρήστες από αραβικές χώρες. Ωστόσο, το ίδιο ζήτημα το έχουμε στα ελληνικά, και η πραγματική λύση είναι η επέκταση του υποσυστήματος fontconfig για να επιτρέπει τη μη-χρήση χαρακτήρων σε συγκεκριμένες γραμματοσειρές μέσω του αρχείου ρυθμίσεων /etc/fonts/fonts.conf

Ο Keith Package δήλωσε ότι θα δεχτεί επίρραμμα (patch) για την προσθήκη της νέας λειτουργίας, που θα απενεργοποιεί μια και καλή περιοχές χαρακτήρως σε συγκεκριμένες γραμματοσειρές. Κάτι τέτοιο είναι καλό για τα ελληνικά. Από την πλευρά του, οι Nicholas και Jay (sun.com) ετοίμασαν ένα επίρραμμα που υλοποιεί κάτι παραπλήσιο αλλά επιτρέπει εκείνους τους κακούς χαρακτήρες να είναι χρησιμοποιήσιμοι με απευθείας επιλογή. Κάτι τέτοιο ίσως είναι πιο θεμιτό διότι για π.χ. το κοινό που γράφει CJK και θέλουν τα ελληνικά που υπάρχουν στις γραμματοσειρές τους.

Ο Behdad από την πλευρά του δήλωσε ότι θα δεχτεί την DejaVu LGC. Τώρα είμαστε στο σημείο να κλείσει το ζήτημα με την επιλογή μιας ή και των δύο επιλογών.

Έκανα μια παρουσίαση για το θέμα της γραφής στο GNOME και συγκεκριμένα ότι είναι θεμιτό (desirable) να υπάρχει η δυνατότητα να μπορούν οι χρήστες να γράφουν ακόμα περισσότερους χαρακτήρες που υποστηρίζει το Unicode και οι γραμματοσειρές.

Η επιστροφή ήταν θεαματική. Προλάβαμε το αεροπλάνο με περιθώριο ~10 λεπτά. Το μέρος (venue) ήταν πολύ όμορφο και υπήρξε παραλία αρκετά κοντά...

Ένας από τους προσκεκλημένους ήταν από την Μογγολία. Του δώρισαν ένα βιβλίο για το Mono (εκείνο το μπλε βιβλίο) και έβαλε και τον Miguel να το υπογράψει :)
Το επόμενο Guadec θα γίνει στο Birmingham, στο H.B. Όσοι είστε στην Αγγλία αξίζει να πάτε.

9Jun/061

How to easily modify a program in your Ubuntu?

Suppose we want to change the functionality of an Ubuntu application but we do not want to go into all the trouble of finding the source code, installing in /usr/local/, breaking dependencies with original versions and so on.

Let's change Character Map (gucharmap), and specifically change the default font size from 20pt to 14pt, so that when you start it there is more space in the character window. Currently Character Map does not offer an option to save this setting.

We get the source code of Character Map,

# apt-get source gucharmap

Then,

cd gucharmap-1.4.4/

and now we edit the file gucharmap/main.c

We know what to edit because we visited the GNOME CVS Website, at http://cvs.gnome.org/viewcvs/gucharmap/

and we examined the logs for the file http://cvs.gnome.org/viewcvs/gucharmap/gucharmap/main.c?view=log

which show that for Revision 1.69, the following change took place,

Log:

2004-02-01  Noah Levitt

* gucharmap/gucharmap-table.c: Improve square size.

* gucharmap/main.c: Increase default font size.

When we click on the link Diff to previous 1.68 of the above page, we pinpoint the change,

version 1.68, Sun Feb 1 03:46:21 2004 UTC version 1.69, Mon Feb 2 00:48:05 2004 UTC
Line 93 main (gint argc, gchar **argv)
Line 93 main (gint argc, gchar **argv)

gint default_size = PANGO_PIXELS (1.5 * pango_font_description_get_size (window->style->font_desc));

gint default_size = PANGO_PIXELS (2.0 * pango_font_description_get_size (window->style->font_desc));

The change in the multiplier (from 1.5 to 2.0) changes the font size from 15pt to 20pt.

20pt is too big for us, therefore we edit the file gucharmap/main.c and change the 2.0 to 1.4 (14pt).
At this point we can compile the package using the command line

$ dpkg-buildpackage -rfakeroot -uc -b

dpkg-buildpackage: source package is gucharmap
dpkg-buildpackage: source version is 1:1.4.4-1ubuntu1
dpkg-buildpackage: source changed by Sebastien Bacher
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean

..........

At this point it is possible that you will get an error that an essential package is missing. The above command line will name the missing files, therefore you can simply install by

# apt-get install package-name

In case you do not have the basic compiler packages, you would need to install the build-essential meta-package. Do

# apt-get install build-essential

Finally, after the dpkg-buildpackage command completes, it will create one or more .deb packages in the directory above gucharmap.

# cd ..

# ls -l *.deb

gucharmap_1.4.4-1ubuntu1_i386.deb

libgucharmap4_1.4.4-1ubuntu1_i386.deb

libgucharmap4-dev_1.4.4-1ubuntu1_i386.deb
#

You can now install them (over the original packages) by running

# dpkg -i gucharmap_1.4.4-1ubuntu1_i386.deb libgucharmap4_1.4.4-1ubuntu1_i386.deb libgucharmap4-dev_1.4.4-1ubuntu1_i386.deb

Now we start the Character Map from Applications/Accessories/ and we get the default character size of 14pt!

Is there something we should pay attention on top of this? Yes, we should investigate the GNOME Bugzilla in case there is relevant work on this issue. We visit

http://bugzilla.gnome.org/

and specifically we click on the link Browse.

There, we select the package gucharmap (how do we know that Character Map is gucharmap? We either click on Help/About in Character Map which shows the internal name, or we run ps ax at a Applications/Accessories/Terminal while Character Map is running; the name gucharmap will pop up at the end of the long list.).

gucharmap is under the Desktop heading in the Browse list; or click on this direct link of bug reports on gucharmap.
If you start perusing the gucharmap bugs list, you will notice Bug #140414, titled remember settings. This report describes a superset of the problem we tried to solve above. That is, the bug report asks to enable Character Map to use the GNOME configuration database (gconf) so that it saves/remembers the user settings. However, this specific bug report is still pending.

The correct way to solve the configuration settings issue of gucharmap is to implement what is described in Bug #140414. If you have Ubuntu 6.06, you most likely have a very recent version of the source code of gucharmap. Therefore, the differences would be rather minimal. You can give it a go and try to get the gconf functionality in place.

You compile, install and test. If it works, you can make a patch of your changes; visit another directory and download a fresh copy of the source code using the apt-get source packagename command. Rename gucharmap-1.4.4 to gucharmap-1.4.4.ORIGINAL

# mv gucharmap-1.4.4 gucharmap-1.4.4.ORIGINAL

and make sure you clean the original gucharmap-1.4.4/ directory from compiled files (enter the directory were you did the source code changes and run make clean).

Finally, create a diff file,

# diff -ur ~/tmp/gucharmap-1.4.4.ORIGINAL ~/gucharmap-1.4.4/ > remember-settings.patch

In ideal terms, it is preferable if you could produce a patch for the latest version of gucharmap. That is, the version of gucharmap you get from http://cvs.gnome.org/viewcvs/gucharmap/. By doing so, the developers will love you because they will be able to simply apply the patch and limit the burden of adding the feature. Indeed, if it is too much effort to get a build system running, you can start off with simple patches and if you feel you are doing well with it, make the extra mile to have a build system. More on this in a future post.

3May/062

Ελληνικό λεξικό Magenta για Linux

Η Magenta άρχισε να διαθέτει έκδοση για Linux του αγγλο-ελληνικού -ελληνοαγγλικού λεξικού Χρυσή Έκδοση 2006.

Συγκεκριμένα,

H ΧΡΥΣΗ ΕΚΔΟΣΗ 2006 για υπολογιστές με λειτουργικό σύστημα Linux, είναι το πρώτο από μία σειρά λεξικών που η ΜΑΤΖΕΝΤΑ διαθέτει ή θα διαθέσει. Αν και το πρώτο σε Linux, είναι αποτέλεσμα συμπυκνωμένης εμπειρίας από το 1994, και στο περιεχόμενο αλλά και στο λογισμικό.

Το περιεχόμενο είναι αυτό της ΧΡΥΣΗΣ ΕΚΔΟΣΗΣ που πρωτοεκδόθηκε σε Windows βασισμένο στη λεξικογραφική εργασίας του Παναγιώτη Τσαμπουνάρα, διακεκριμένου λεξικογράφου.

Ο αριθμός των λημμάτων υπερβαίνει 395.000 και ο όγκος τους μπορεί να μετρηθεί σε περισσότερες από 1.650.000 (ένα εκατομμύριο εξακόσιες πενήντα χιλιάδες) λέξεις.

Πηγή: http://www.magenta.gr/gr/lexicon_gold_linux/

Μπορείτε να δείτε τις εκδόσεις για δοκιμή του λεξικού που είναι διαθέσιμες σε πακέτα .deb, .rpm αλλά και .tar.gz. Όταν εγκαταστήσετε την έκδοση για δοκιμή, έχετε τη δυνατότητα να χρησιμοποιήσετε το λεξικό για περιορισμένο χρόνο και αν σας ταιριάζει να το αγοράσετε μέσω Διαδικτύου.

Το λεξικό περιλαμβάνει νέους όρους Πληροφορικής όπως για παράδειγμα download.
Είναι πολύ σημαντικό να υπάρχει εμπορικό λογισμικό που να βασίζεται σε ελεύθερες τεχνολογίες. Το λεξικό βασίζεται στο GTK+ 2.0 (GNOME Developer Platform). Είδα ότι υπάρχει η δυνατότητα για αλλάξεις άμεσα με μια επιλογή τη γλώσσα του γραφικού περιβάλλοντος μεταξύ ελληνικών και αγγλικών. Κάτι τέτοιο φάνηκε δύσκολο σε συζητήσεις στη λίστα GTK+ του GNOME. Είναι ενδιαφέρον το πως υλοποιήθηκε :) .

Να υπενθυμήσουμε ότι η Magenta δώρησε ως ελεύθερο λογισμικό 5 οικογένειες ελληνικών γραμματοσειρών, τις MgOpen. Οι γραμματοσειρές αυτές συμπεριλαμβάνονται στο Ubuntu 5.10 και Ubuntu 6.06
Συγχαρητήρια στη Magenta για τη προσπάθεια αυτή!

Ενημέρωση: Η Magenta προσφέρει ακόμα και μια ανοιχτή εγκυκλοπαίδια, τη LivePedia. Βασίζεται στο λογισμικό MediaWiki που στηρίζει και τη Wikipedia.

Ενημέρωση #2 (21Μαϊ06): Δείτε το άρθρο στο techteam.gr για τη συνεργασία Magenta και EEXI.

20Mar/060

Looking for sponsorship for GUADEC ’06

The GNOME User's and Developer's European Conference is a annual event for GNOME users and developers, and this is the seventh year it runs. We, as Greek localisation team, did not have the chance to attend this event yet. If you know of any sponsoring opportunity, please contact us at team at gnome dot gr.

This year, the event takes place near Barcelona, between the 24th-30th June, 2006.

9Mar/062

Taxis and security

It is quite encouraging that citizens taxed in Greece are able to file their tax reports through the Web, at the Taxis Website. Sadly, it has been reported that standard-compliant Web browsers are not supported by the Taxis Website. If you are affected, do complain about it! If you file taxes and you are affected, file a report.
Let's see some more issues.

A. The main login page is not configured properly with regards to the autocomplete feature found in modern browsers; as is, your username and password get saved by default in your browser. If your computer is stolen or a trojan horse gets installed on your computer, your tax details are gone! :(

The Web developer should modify the HTML code from

< span class=“textblue2″>< b>user name: b>span>
< input type=“text” name=“username” maxlength=“40″ size=“15″ value=“testing”>
< P>< span class=“textblue2″>< B>password:B>span>
< input type=“password” name=“password” maxlength=“40″ size=“17″ value=“testing”>

to

< span class=“textblue2″>< b>user name: b>span>
< input type=“text” name=“username” autocomplete=“off” maxlength=“40″...
< P>< span class=“textblue2″>< B>password:B>span>
< input type=“password” name=“password” autocomplete=“off” maxlength=“40″...

B. The page http://webtax.gsis.gr/taxisnet/login.do claims that users are protected by Verisign (SSL/TLS). Quite sadly, the intent has probably been that users will connect through the proper URL, at https://webtax.gsis.gr/taxisnet/login.do. Dear Taxis, you should place an HTTP redirection to move all users to the SSL/TLS-protected URL. You are in breach of your Verisign license!

The image “http://static.flickr.com/55/110197352_d60be48ab3_o.png” cannot be displayed, because it contains errors.

I will follow on the above report here.

Actually, it would be much better if the web server is SSL/TLS only (no plain HTTP version available). The web server should be configured at any access to a URL under http://webtax.gsis.gr/... should redirect to https://webtax.gsis.gr/.
C. What is worst of all, the website provides content in the 8859-7 8-bit legacy encoding. It is much better to convert to Unicode and UTF-8. I do not know if users have to write text in Greek for their tax forms...
I don't file taxes so I am not sure if there are more issues once you logon.

Update: The http://webtax.gsis.gr/taxisnet/login.do URL does not work anymore (it forwards to another Website which is down). I did not hear back from Verisign; it's possible that the two events are linked together.

16Feb/061

Ανατομία ενός γράμματος

Με ενδιαφέρον είδα μια συζήτηση (τίτλος upgrade σε ubuntu 5.10 = προβλήματα με τα ελληνικά) στη λίστα συνδρομητών Linux-greek-users για το θέμα της υποστήριξης γραφής ελληνικών σε ελεύθερο λογισμικό.
Ωστόσο, μετά από λίγα γράμματα, στάλθηκε

Switch to our mobile site