Practical UPnP in Linux
UPnP is a set of protocols that allow the automatic configuration of devices. One of those protocols, the Internet Gateway Device (IGD) protocol, allows software to configure routers for NAT traversal without user-intervention. In other words, with UPnP/IGD, the long and error-prone manual configuration for port-forwarding can be done automatically.
When tasks are done automatically, they are less visible to the user, and users are not comfortable that they are in charge of the process.
For the case of UPnP/IGD, we look into the open-source (LGPL) GUPnP library and the companion tool gupnp-universal-cp. You can install these from source (pick the packages gssdp, gupnp, gupnp-tools, and install in this order), or just install the package gupnp-tools from your package manager (for Debian and Ubuntu, these packages reside in Debian unstable).
Once you have installed the tool, you can start it from Application→Programming→UPnP Universal Control Point. This tool can be used for all things UPnP, however we focus on IGD here.
Once we start the UPnP Universal Control Point, we get the above screen. The tool sends discovery requests to the local network for UPnP-capable devices, and automatically the list gets populated. In the screenshot you can see that a router has been detected, and general information is shown.
If your router does not appear in the list and you are sure that UPnP is enabled on the device, then you might have hit on a known bug, Bug 1078 – Some devices may not work due to User-Agent field in requests. In this case, you need to make a minor edit in the source code and recompile.
You can easily distinguish the functions that allow to perform port-forwarding. The one we have highlighted can be used to list the details of the currently active port-forwarding rulers. We right-click and select Invoke, which leads us to…
We just pressed the Invoke button, and since there was a rule with Index 0, the details get filled in for us. Here we can see that Skype has opened a port-forwarding rule for us; when someone from the Internet is connected to port 18210 of this router, the network connection is mapped to the local system with IP address 192.168.1.67. In the mapping description it shows that Skype was the program that set this rule.
You would normally increase the Mapping Index and click on Invoke, in order to see any additional port mappings. Skype generally opens a few more ports, so there is more to see.
For all the shortcommings, UPnP/IGD is an important network configuration protocol. Due to the lack of an open-source library, applications had to implement UPnP support from scratch. Now with GUPnP, it is much easier to write UPnP-enabled applications.
UPnP/IGD is very important for applications such as Ekiga, Pidgin (file transfers!), Empathy, XChat (for DCC). This has to be done in order to raise the bar in terms of connectivity, and so that it Just works.
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.

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.
Επιστροφή από 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.
![]()
Ο 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. Όσοι είστε στην Αγγλία αξίζει να πάτε.







