Τὸ jabber.el εἶναι πελάτης XMPP γιὰ Ἤμαξ, γραμμένος ἀρχικὰ τὸ 2003. Ἡ ἀνάπτυξη ἐπιβραδύνθηκε μὲ τὰ χρόνια, ἂν καὶ συνεισφέροντες κρατοῦσαν τὸ πακέτο σὲ λειτουργία σὲ διαδοχικὲς ἐκδόσεις Ἤμαξ.

Ἀνέλαβα ὡς συντηρητὴς μὲ στόχο τὸν ἐκσυγχρονισμὸ τῆς ὑποστήριξης πρωτοκόλλου.

Τώρα, τὸ jabber.el εἶναι ὁ πιὸ XEP-πλήρης κειμενικὸς πελάτης ποὺ ὑπάρχει.

Τί ἄλλαξε

Γιὰ ἐκείνους, ὅπως ἐγώ, ποὺ μετρᾶνε XEP σὰν Pokémon:

  • Κρυπτογράφηση OMEMO (XEP-0384) μέσω δυναμικῆς μονάδας C ποὺ παρέχει διεπαφὴ πρὸς τὸ picomemo
  • Κοινὴ χρήση πολυμέσων OMEMO (XEP-0454)
  • OpenPGP γιὰ XMPP (XEP-0373) μὲ τὸ ἐνσωματωμένο EPG τοῦ Ἤμαξ
  • Stream Management (XEP-0198) μὲ συνέχιση συνεδρίας
  • Message Archive Management (XEP-0313)
  • Message Carbons (XEP-0280)
  • Delivery Receipts (XEP-0184) καὶ Chat Markers (XEP-0333)
  • Message Correction (XEP-0308), Replies (XEP-0461), Moderation (XEP-0424/0425)
  • Chat State Notifications (XEP-0085)
  • Client State Indication (XEP-0352)
  • Blocking Command (XEP-0191)
  • HTTP File Upload (XEP-0363)
  • Direct TLS (XEP-0368) μὲ διπλὴ ἀναζήτηση SRV
  • Real Time Text (XEP-0301)
  • PubSub (XEP-0060)
  • Bookmarks (XEP-0402 μὲ ἐφεδρικὸ XEP-0048)
  • Ἀποθήκευση μηνυμάτων SQLite ἀντὶ ἱστορικοῦ σὲ ἀρχεῖα
  • MUC Self-Ping (XEP-0410)

Σχεδὸν τὰ πιάσαμε ὅλα

Κανένας ἄλλος κειμενικὸς πελάτης XMPP δὲν ἔχει αὐτὸ τὸ ἐπίπεδο κάλυψης πρωτοκόλλου. Τὸ jabber.el τώρα συναγωνίζεται τὰ Dino καὶ Gajim, τοὺς κύριους γραφικοὺς πελάτες.

OMEMO

Τὸ OMEMO ἀπαιτεῖ ὑλοποίηση Signal Protocol. Αὐτὸ σημαίνει C.

Τὸ jabber-omemo-core.c εἶναι 763 γραμμὲς ποὺ διασυνδέουν τὸ picomemo μὲ τὸ API δυναμικῶν μονάδων τοῦ Ἤμαξ. Τὸ στρῶμα Elisp χειρίζεται τὴν ἐνσωμάτωση XMPP: δημοσίευση bundle PubSub, κρυπτογράφηση stanza, διατήρηση συνεδρίας σὲ SQLite, καὶ διαχείριση ἐμπιστοσύνης.

Παρέχει ἐπίσης AES-256-GCM γιὰ κοινὴ χρήση πολυμέσων OMEMO (XEP-0454).

Γιατί Ἤμαξ

Ὁ Ἤμαξ δὲν εἶναι ἁπλῶς ὁ ἐπεξεργαστὴς κειμένου στὸν ὁποῖο γράφω τὸ jabber.el. Εἶναι τὸ περιβάλλον ἐκτέλεσης, τὸ πλαίσιο δοκιμῶν, καὶ ἡ ἐφαρμογή.

Ἀναπτύσσω στὸ ἴδιο περιβάλλον ὅπου συνομιλῶ. Διορθώνω σφάλματα, ἐκτελῶ τὶς ἀλλαγές, καὶ ἡ διόρθωση ἐφαρμόζεται ἀμέσως στὴν τρέχουσα συνεδρία μου. Δευτερόλεπτα, ὄχι λεπτά.

Ὁ Ἤμαξ παρέχει τὰ περισσότερα ἀπὸ ὅσα χρειάζεται ἕνας πελάτης συνομιλίας ἐξ ἀρχῆς: SQLite γιὰ ἀποθήκευση, GnuTLS γιὰ κρυπτογράφηση, EPG γιὰ OpenPGP, EWOC γιὰ ἐμφάνιση λιστῶν, Transient γιὰ μενού.

Ἡ διανομὴ γίνεται μέσω NonGNU ELPA, ποὺ χειρίζεται τὰ πάντα.

Τὸ jabber.el ἐγκαθίσταται ἁπλῶς μὲ M-x package-install RET jabber RET.

Γιατί XMPP

Τὸ XMPP εἶναι τὸ μόνο ὁμοσπονδιακό, ἀνοιχτὸ πρότυπο πρωτόκολλο μηνυμάτων ποὺ λειτουργεῖ στὴν πράξη. Τὸ χρησιμοποιῶ γιὰ ὅλη τὴν καθημερινή μου ἐπικοινωνία. Οἱ φίλοι μου εἶναι σὲ WhatsApp, Discord καὶ IRC — πύλες (gateways) γεφυρώνουν αὐτὰ τὰ δίκτυα διαφανῶς.

Ἕνας πελάτης, μία διεπαφή, κάθε δίκτυο συνομιλίας ποὺ χρειάζομαι.

Περισσότερα γιὰ τὴ διάταξη πυλῶν ποὺ χρησιμοποιῶ σὲ μελλοντικὸ ἄρθρο.

Τί ἀκολουθεῖ

  • XEP-0444 Message Reactions
  • OMEMO 0.8+ (τὸ picomemo ὑποστηρίζει καὶ τὰ δύο· τὸ στρῶμα C εἶναι ἕτοιμο)
  • Ἀναδιάρθρωση roster — ἐπίπεδη, βασισμένη σὲ ἐρωτήματα λίστα ἐπαφῶν ταξινομημένη κατὰ δραστηριότητα