Ἀφοῦ δὲν εἶχα σήμερα ἐνδιαφέροντα βιβλία νὰ διαβάσω, οὔτε ἐνδιαφέρουσες ταινίες νὰ δῶ, ἀποφάσισα νὰ ψάξω τὸ πιὸ συναρπαστικὸ περιεχόμενο ποὺ μπορεῖ κανεὶς νὰ βρεῖ στὸ διαδίκτυο. Κατέληξα νὰ διαβάζω τὶς λίστες ἀλληλογραφίας τοῦ πυρήνα Linux, ἀλλὰ ἐκεῖνες οἱ συζητήσεις φαίνονταν 18+, ὁπότε καταστάλαξα στὴν συγκριτικὰ κόσμια emacs-devel.

Γιὰ ὅσους δὲν γνωρίζουν, ἡ emacs-devel εἶναι ἡ κύρια λίστα συζήτησης ἀνάπτυξης γιὰ τὸν GNU Ἤμαξ — ὅπου λαμβάνονται ἀποφάσεις σχεδίασης, ἐξετάζονται διορθώσεις, καὶ περιστασιακὰ ὅπου ἄνθρωποι ξοδεύουν 200 μηνύματα ἐπιχειρηματολογώντας γιὰ λογισμικὸ ἐλέγχου ἐκδόσεων. Αὐτὴ εἶναι ἡ ἱστορία αὐτοῦ τοῦ τελευταίου.

2008: «Αὐτὴ ἡ ἐρώτηση ἔχει τελειώσει καὶ ἀποφασιστεῖ»

Τὸν Μάρτιο τοῦ 2008, ὁ Ἤμαξ μετέβαινε ἀπὸ CVS (ναί, CVS) σὲ κάτι πιὸ «μοντέρνο». Οἱ δύο διεκδικητὲς ἦταν τὸ Git καὶ τὸ Bazaar.

  • Git, δημιουργημένο ἀπὸ τὸν Linus Torvalds γιὰ τὸν πυρήνα Linux.
  • Τὸ Bazaar ἦταν ἔργο GNU, συντηρούμενο ἀπὸ τὴν Canonical

Ξέσπασε νῆμα 236 μηνυμάτων στὴν emacs-devel. Ὁ κόσμος ἔκανε μετρήσεις ἐπιδόσεων καὶ στὰ δύο ἐργαλεῖα. Τὰ ἀποτελέσματα ἦταν κραυγαλέα. Ὁ Andreas Schwab, ἕνας ἀπὸ τοὺς βασικοὺς προγραμματιστές, ἀνέφερε τὴν πρώτη του ἐντύπωση:

My first impression is that bzr is slow, so slow that it is completely unusable. How can it come that a simple bzr log takes more than a minute to even start? Even cvs log is instantaneous in comparison, although it has to request the log from the server.

Ὁ David Kastrup τὸ βρῆκε ἐξίσου αἰνιγματικό:

I find this surprising: “git log” is pretty much instantaneous, and git recalculates a code piece’s history in the process. In contrast, one has to tell Bazaar when one copies or moves or renames files, so it should have the information available right away.

Οἱ πραγματικοὶ ἀριθμοί:

  • git log | head -1 0.012 δευτερόλεπτα. Ἡ ἴδια ἐντολὴ μὲ Bazaar πῆρε 21.5 δευτερόλεπτα.
  • Καταχώριση ἀλλαγῆς ἑνὸς ἀρχείου: 0.08 δευτερόλεπτα μὲ Git, 17 δευτερόλεπτα μὲ Bazaar.

Οἱ μετρήσεις ἐπιδόσεων συνέχιζαν νὰ ἔρχονται. Ὁ Stefan Monnier, ὁ κύριος συντηρητής, ἔβαλε χαμηλὰ τὸν πῆχυ:

I don’t care if Bzr is slower or faster than Git, but in order to switch to Bzr, we need it to be ‘fast enough’. Currently it is not. At the very least the ‘bzr diff’ should not take more than a couple seconds.

Ἐν τῷ μεταξύ, ὁ Jonathan Lange, πραγματικὸς προγραμματιστὴς Bazaar ἀπὸ τὴν Canonical, ἦταν στὸ νῆμα κάνοντας τεχνικὴ ὑποστήριξη.

Ἡ προτεινόμενη ροὴ ἐργασίας του γιὰ τὴν ἀρχικὴ λήψη τοῦ ἀντιγράφου ἐργασίας:

An even better way to do the initial download is this:

$ wget http://bzr.notengoamigos.org/emacs.tar.gz

$ tar xzf emacs.tar.gz

$ bzr init-repo emacs-bzr

$ cd emacs-bzr

$ bzr branch ../emacs trunk

$ cd trunk

$ bzr pull –remember http://bzr.notengoamigos.org/emacs/trunk/

Σύγκρινέ το μὲ git clone!

Κάποιος στὸ νῆμα τελικὰ ρώτησε τὸ προφανές:

To the emacs maintainers and decision makers: What more information is required to convince bzr is not the right tool at the present moment?

Ἡ ἀπάντηση τοῦ Richard Stallman:

This decision is not a decision for the present moment. It is a long term decision. So it would be better to wait a few months while Bzr developers improve it, than to make some other “temporary” decision that would probably be hard to reverse.

Καὶ σὲ περίπτωση ποὺ κάποιος ἔχασε τὸ νόημα, σὲ ξεχωριστὸ μήνυμα:

This question is over and decided. We will use GNU Bzr, because it is a GNU package.

Ὅταν κάποιος ἐπεσήμανε ὅτι αὐτὴ ἡ πολιτικὴ ἀπόφαση «σάρωνε ὅλα τὰ τεχνικὰ ἐπιχειρήματα», ὁ RMS ἀπάντησε:

The rule that GNU packages should support each other helps make the GNU system as a whole work better.

Κάποιος ρώτησε τὴν προφανῆ συνέχεια: «Γιατί ἁπλῶς δὲν κάνουμε τὸ Git μέρος τοῦ συστήματος GNU;»

RMS:

We could include it in the GNU system, but its developers are not likely to want to make it a GNU package.

Γιὰ νὰ εἴμαστε δίκαιοι μὲ τὸν RMS, ὑπάρχει ἐδῶ μία πραγματικὴ ἀρχή. Ἂν τὸ ἔργο GNU δὲν χρησιμοποιεῖ τὰ δικά του ἐργαλεῖα, στέλνει τὸ μήνυμα ὅτι ἐκεῖνα τὰ ἐργαλεῖα δὲν εἶναι ἀρκετὰ καλά, κάτι ποὺ ὑπονομεύει ὅλη τὴν ἰδέα ἑνὸς αὐτάρκους οἰκοσυστήματος ἐλεύθερου λογισμικοῦ. Ἔκανε αὐτὸ τὸ ἐπιχείρημα ἐπὶ δεκαετίες, καὶ εἶχε ὑπηρετήσει καλὰ τὸ ἔργο σὲ πολλὲς ἄλλες περιπτώσεις. Τὸ πρόβλημα δὲν ἦταν ἡ ἀρχή. Τὸ πρόβλημα ἦταν ὅτι τὸ Bazaar δὲν μποροῦσε νὰ ἀνταποκριθεῖ σ’ αὐτήν.

Τὸ νῆμα τῶν 236 μηνυμάτων, οἱ μετρήσεις ἐπιδόσεων, οἱ λύσεις τοῦ ὑπαλλήλου τῆς Canonical· τίποτα ἀπὸ αὐτὰ δὲν ἄλλαξε τὸ ἀποτέλεσμα. Ἡ ἀπόφαση ἦταν πολιτική, καὶ ἡ πολιτικὴ πλευρὰ εἶχε κριθῆ.

2008-2012: Τὰ μακροχρόνια ἐπακόλουθα

Ὁ ὑπόλοιπος κόσμος πέρασε στὸ Git. Τὸ GitHub ξεκίνησε τὸ 2008 καὶ ἐγνώρισε ἐκρηκτικὴ ἀνάπτυξη. Οἱ συνεισφέροντες τοῦ Ἤμαξ, ἐν τῷ μεταξύ, ἔπρεπε νὰ μάθουν Bazaar, ἕνα ἐργαλεῖο ποὺ δὲν χρησιμοποιοῦσαν πουθενὰ ἀλλοῦ, ἁπλῶς γιὰ νὰ ὑποβάλουν διορθώσεις.

Νήματα ὅπως «Help me unstick my bzr, please» καὶ «Can NOT bzr the emacs repos (may be bzr has a memory leak)» ἔγιναν τακτικὰ φαινόμενα.

Ἔπειτα τὸ 2012, ἡ Canonical ἀπέλυσε τὴν ὁμάδα ἀνάπτυξης τοῦ Bazaar.

2013

Τὸν Μάρτιο τοῦ 2013, ἕναν χρόνο μετὰ τὴ διακοπὴ ἀνάπτυξης τοῦ Bazaar, ὁ John Wiegley δημοσίευσε αὐτὸ ποὺ ὅλοι ἤθελαν νὰ ποῦν:

We have often debated the merits of Git vs. Bazaar, and which one the GNU project should use for Emacs development. I think now is an appropriate time to revisit this decision.

My main reason for bringing this up again is that Bazaar development has effectively stalled. There are major bugs which have been in their bug-tracker for years now – bugs affecting Emacs development, such as the ELPA repository – which have been ignored all this time.

So, to Richard as the undisputed Czar of all things Emacs: can we now, pretty please, switch to Git?

Ἀκολούθησαν 200 μηνύματα.

Ἡ πρώτη ἀπάντηση τοῦ RMS:

The maintainer says he is fixing some bugs, and I asked him just yesterday to fix the ELPA branch bug. I’d like to give him a reasonable time to do this.

Τὸ σφάλμα ἦταν 1.5 ἐτῶν. Ὁ Dmitry Gutov τὸ ἐπεσήμανε:

Isn’t this a bit late? The bug is 1.5 years old. Was he not aware of it before?

Ἔπειτα ὁ RMS ἔδειξε τὰ χαρτιά του:

I am trying to determine whether Bzr is effectively maintained or not. I’d rather get a Yes answer than a No answer.

Αὐτὸ εἶναι ἀξιοσημείωτα εἰλικρινὲς νὰ τὸ πεῖς δημόσια. Δὲν ἔκρυβε τὴν προτίμησή του. Πίστευε γνήσια στὴν ἀρχὴ ὅτι τὰ ἔργα GNU ὑποστηρίζουν τὸ ἕνα τὸ ἄλλο, καὶ ἤλπιζε ὅτι ἡ πραγματικότητα θὰ συνεργαζόταν.

Joakim Verona, μακροχρόνιος χρήστης Bazaar καὶ συνεισφέρων Ἤμαξ, περιέγραψε τὴν πραγματικὴ κατάσταση:

I have done my best to be a constructive user of the tool, and I have had many technical difficulties. When I try to find solutions to the issues I notice the following:

  • The bzr community is very helpful. This is good.
  • There are many well known bugs. There are also many well known patches for these, some of them provided by Emacs developers. They never enter upstream. By “never” I mean years. This is bad.

RMS ἀπάντησε:

I don’t have time to read the Bzr mailing list. Or any development mailing list. The only such list I am on is this one. You might as well tell me to fly to the moon as tell me to read something on the Bzr list.

Καὶ ὅταν ρωτήθηκε ἂν οἱ χρήστες τοῦ Bazaar θὰ ἔπρεπε νὰ ἔχουν λόγο στὸ ἂν τὸ Bazaar συντηρεῖται ἐπαρκῶς:

When I have to decide whether a maintainer is doing an adequate job or needs to be replaced, I pay attention to whatever relevant information I get. However, to give users “a say” in the decision seems improper, so I don’t do that.

Ὁ Karl Fogel, βετεράνος προγραμματιστὴς ἀνοιχτοῦ κώδικα (συγγραφέας τοῦ Producing Open Source Software καὶ ἕνας ἀπὸ τοὺς ἀρχικοὺς προγραμματιστὲς τοῦ Subversion), ἔδωσε τὴν ὀξύτερη κριτικὴ στὸ νῆμα:

Well, really, you don’t have time to pay close enough attention to Bzr development to competently decide whether it’s still a good choice for Emacs. That’s fine – no one has time to do every important thing, and you do many other important things.

But then why do you think you still have the time & mental bandwidth to make this decision well? Why not delegate it to the Emacs maintainers on the grounds that you no longer have time to do a good job of this evaluation?

Ἐπεσήμανε ὅτι τὸ νὰ ρωτᾶς ἕναν ἄνθρωπο γιὰ ἕνα σφάλμα δὲν ἀποτελεῖ ἀξιόπιστο δείκτη τῆς ὑγείας ἑνὸς ἔργου, καὶ ὅτι ἄλλοι στὸ νῆμα εἶχαν ἤδη κάνει πιὸ διεξοδικὴ ἔρευνα ἀπὸ ὅση μποροῦσε ὁ RMS, δεδομένων τῶν χρονικῶν του περιορισμῶν.

Ἡ ἀπάντηση τοῦ RMS:

Because more than Emacs is at stake here.

Μία γραμμή, ἀλλὰ εἶναι ὁ πυρήνας τῆς κοσμοθεωρίας του. Ἂν ἡ ναυαρχίδα τῶν ἔργων GNU ἐγκαταλείψει ἕνα ἐργαλεῖο GNU, τί σῆμα στέλνει σὲ κάθε ἄλλο πακέτο GNU; Δὲν εἶχε ἄδικο γιὰ τὰ διακυβεύματα. Εἶχε ἄδικο γιὰ τὸ ἐργαλεῖο.

Ὁ Karl πίεσε ἄλλη μία φορά:

You should either devote enough time to evaluating Bzr’s maintenance state to get a reliable answer, or delegate to someone who can do so. Instead, you’re asking the maintainers to rely on your investigation… yet you clearly don’t have time to do a good job. This is a poor use of everyone’s time.

RMS:

I already have a plan for how to proceed on this, and I am doing it.

Χωρὶς λεπτομέρειες. Χωρὶς χρονοδιάγραμμα. Χωρὶς ἀνάθεση. Ἐμπιστευτεῖτε με.

Ἐν τῷ μεταξύ, ὁ Stefan Monnier δημοσίευσε ἀκριβῶς ἕνα οὐσιῶδες μήνυμα σὲ ὅλο τὸ νῆμα τῶν 200 μηνυμάτων:

Just like I didn’t fight Richard’s choice of Bazaar, I don’t care very much whether we keep using Bazaar or we change to Git, Monotone, Darcs, Mercurial, OpenCM, Fossil, younameit.

The only thing I care for now is to move away from Bazaar for the ’elpa’ branch because Bazaar can’t handle it properly.

Ὁ Leo Liu συνόψισε αὐτὸ ποὺ σκέφτονταν ὅλοι:

Most GNU projects aren’t using BZR as you might be aware.

While helping BZR fixing bugs might be a gain for BZR, it is a loss as a whole for GNU. Volunteers spend their spare time on GNU projects and if 20% of that time is taken up by wrestling with BZR, it becomes costly to the point discouraging people from joining.

For the greater good of GNU, move off BZR seems like the only sound choice.

Τὸ νῆμα τελείωσε χωρὶς σαφῆ ἐπίλυση. Ὁ RMS εἶχε σχέδιο. Δούλευε πάνω του. Τὰ 200 μηνύματα δὲν παρήγαγαν ἀπόφαση, ἀλλὰ ἔκαναν τὴ θέση τῆς κοινότητας ἀναμφισβήτητη.

2013: Ὁ κλάδος ELPA παύει νὰ λειτουργεῖ

Ἀργότερα ἐκείνη τὴ χρονιά, ὁ Stefan ἔκανε τὴν πρακτικὴ κίνηση ποὺ ἔθεσε τὸ σκηνικὸ γιὰ ὅλα ὅσα ἀκολούθησαν. Ὁ κλάδος ELPA δὲν λειτουργοῦσε στὸ Bazaar, ἐξαιτίας σφάλματος ποὺ προκαλοῦσε κατάρρευση κατὰ τὴ λήψη τοῦ ἀντιγράφου ἐργασίας, χωρὶς νὰ ἔχει μείνει κανείς νὰ τὸ διορθώσει. Ὁ Stefan τὸ μετακίνησε στὸ Git, καὶ ἡ ἀνακοίνωσή του ἔδειξε ἀκριβῶς τὸ εἶδος προσεκτικῆς ἡγεσίας ποὺ εἶχε κρατήσει τὴν ἀνάπτυξη τοῦ Ἤμαξ νὰ τρέχει μέσα ἀπὸ ὅλα αὐτά:

I’m not terribly happy about this change, since it means we’ll be using two different tools (Git for ’elpa’ and Bzr for ’trunk’), but I really see no other way out.

I don’t want this to be a discussion about the merits/pitfalls of Git vs Bzr, and this is not an occasion to discuss the use of Git for the ’trunk’ either.

Ἤξερε ἀκριβῶς τί σκέφτονταν ὅλοι «ἂν τὸ Git εἶναι ἀρκετὰ καλὸ γιὰ ELPA, γιατί ὄχι γιὰ trunk;» καὶ τὸ πρόλαβε. Ἕνα πρόβλημα τὴ φορά.

2014: Ὁ ESR πατάει τὸ κουμπί

Μέχρι τὸν Αὔγουστο τοῦ 2014, ὁ Eric S. Raymond εἶχε ἕτοιμα τὰ σενάρια μετατροπῆς.

Εἶχε δουλέψει ἥσυχα:

You haven’t heard much about it because the hard work is all done. I have the scripts ready to go and need only about eight hours’ notice before pushing the button.

Ἡ πραγματικὴ μετάβαση ἔγινε τὸν Νοέμβριο τοῦ 2014. Στὶς 13 Νοεμβρίου, ὁ ESR δημοσίευσε ἕνα μήνυμα ἕξι λέξεων:

Commits are open. Have at it.

Τὸ ὁποῖο κάποιοι μάλιστα χαρακτήρισαν ἡρωικό.

Ἕξι χρόνια συζήτησης, 236 μηνύματα στὸ νῆμα τοῦ 2008, 200 μηνύματα στὸ νῆμα τοῦ 2013, χρόνια ἥσυχης συντήρησης τοῦ Stefan, ἀμέτρητες ἱκεσίες «help me unstick my bzr», ἕνα νεκρὸ σύστημα ἐλέγχου ἐκδόσεων, καὶ τελείωσε μὲ ἕξι λέξεις.

Τὰ ἐπακόλουθα

Οἱ μέρες μετὰ τὴ μετάβαση ἦταν ἐκπαιδευτικές. Οἱ μισοὶ ἀπὸ τοὺς βασικοὺς συνεισφέροντες δὲν εἶχαν ποτὲ χρησιμοποιήσει Git:

  • «This Is The Git Help Mailing List»
  • «git pull fails with merge conflicts. How can this possibly happen?»
  • «A simple git workflow for the rest of us»
  • «need help adjusting workflow to git»
  • «Good book on Git»
  • «Obscure error/warning/information message from git pull» (124 μηνύματα)

Αὐτοὶ ἦταν ἄνθρωποι ποὺ ἀνέπτυσσαν ἕναν ἀπὸ τοὺς πιὸ σημαντικοὺς ἐπεξεργαστὲς κειμένου στὸν κόσμο ἐπὶ χρόνια, ρωτώντας βασικὲς ἐρωτήσεις Git, γιατί εἶχαν κολλήσει στὸ Bazaar ἐνῶ ὁ ὑπόλοιπος κόσμος προχωροῦσε.

Τί bzr σάγκα! Ὁπωσδήποτε καλύτερη ἀπὸ ὁποιαδήποτε ταινία θὰ μποροῦσα νὰ εἶχα δεῖ ἀπόψε.