Ruby Core

Jetzt ist die beste Zeit, die weitere Entwicklung von Ruby zu verfolgen, denn Ruby 2.0 ist in Arbeit. Durch das erhöhte Interesse an Ruby, das sich in den letzten Jahren entwickelt hat, besteht ein steigender Bedarf an Talenten, die bei der Verbesserung von Ruby und der Dokumentation seiner Teile mitwirken. Also, womit willst Du anfangen?

Die hier behandelten Themen zur Entwicklung von Ruby sind Folgende:

Subversion zur Entwicklung von Ruby nutzen

Mit dem folgenden Kommandozeilenbefehl kannst du den aktuellsten Quelltext von Ruby über Subversion herunterladen (auschecken):

$ svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby

Das Verzeichnis ruby enthält nun den vollständigen Quelltext der Entwicklerversion Ruby 1.9. Bitte bedenke, dass es sich bei dieser Version um die absolut neuste Variante von Ruby handelt. Sie wird ständig weiterentwickelt und wird erst am Ende des Jahres 2007 offiziell veröffentlicht.

Wenn du Interesse an der Verbesserung von Ruby 1.8 hast, solltest du dir den Branch ruby_1_8 genauer anschauen. Über den folgenden Kommandozeilenbefehl kannst du den Quelltext auschecken:

$ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8

Damit hast du die aktuelle Entwicklerversion des offiziellen Ruby 1.8 Zweiges in das Verzeichnis ruby_1_8 heruntergeladen. Entwickler, die einen Patch für diese Version entwickeln, werden darum gebeten ebenfalls einen Patch für die Entwicklerversion 1.9 zu erstellen. Aufgrund dessen sollten die Versionen 1.8 und 1.9 sich einander ähneln, mit der Ausnahme von Erweiterungen an der Sprache Ruby selbst.

Bei Interesse besteht die Möglichkeit das Ruby-Repository über den Webbrowser zu begutachten.

Für weiterführende Informationen bezüglich Subversion bietet sich die englischsprachige Subversion-FAQ und das ebenfalls englischsprachige Subversion-Buch an.

Mit Git arbeiten

Diejenigen, die Git bevorzugen, können einen Mirror auf GitHub nutzen. Dieser kann von offiziellen Committern und allen Anderen benutzt werden.

Ruby verbessern, Patch für Patch

Rubyforge bietet einen Bug-Tracker für das Melden von Fehlern und Übersenden von Patches an Matz und die Anderen. Die Fehlerreports gehen parallel auch zur Diskussion an die Ruby-Core-Mailingliste, wodurch keine Fehlermeldung unbeachtet bleibt.

Zusammenfassend sind folgende Schritte für das Erstellen eines Patches erforderlich:

  1. Eine Kopie von Ruby 1.8 auschecken. Dabei das Tag ruby_1_8 verwenden.

     $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src \
         co -r ruby_1_8 -d ruby-1.8 ruby
    
  2. Hinzufügen der eigenen Verbesserungen (im Verzeichnis ruby-1.8).
  3. Einen Patch erstellen.

     $ cvs diff > ruby-1.8-changes.patch
    
  4. Abschicken des neuen Patches.

Bitte beachten: Patches sollten als unified diff abgeschickt werden. Wer mehr über das Zusammenführen (Merge) der Patches wissen will, sollte sich die diffutils-Referenz ansehen.

Diskussionen zum Thema Ruby-Entwicklung werden in der Ruby-Core-Mailingliste gebündelt. Wer herausfinden will, ob sein Patch Sinn macht oder nur eine Diskussion über die Zukunft von Ruby anfangen will, sollte nicht zögern an Bord zu kommen. Es wird an dieser Stelle davor gewarnt, Off-Topic Diskussionen zu führen, da diese in der Liste nicht akzeptiert werden. Es sollte klar kommuniziert und aussagekräftige Überschriften verwendet werden. Schließlich wird hier der Erfinder von Ruby angesprochen, daher lasst uns ein wenig Respekt haben.

Es sollte klar sein, dass das Kernteam in Japan lebt. Obwohl die meisten sehr gut Englisch sprechen, gibt es aber auch noch einen signifikanten Unterschied in der Zeitzone zu beachten. Es existieren übrigens auch komplett japanischsprachige Listen neben den englischen Pendants. Man sollte nur die Ruhe bewahren, wenn eine Antwort nicht sofort zurückkommt. Notfalls kann die gleiche Anfrage ein paar Tage später nochmal gestellt werden.

Regeln für Core-Entwickler

Allgemein sollten Entwickler von Ruby mit den Quelltexten und dem Entwicklungstil des Teams vertraut sein. Zum besseren Verständnis sollten die folgenden Richtlinien beim Einchecken ins CVS beachtet werden:

  • Alle Änderungen sollten im ChangeLog gemäß den GNU-Konventionen erfasst werden. (Viele Core-Entwickler von Ruby nutzen den add-log Modus von Emacs: C-x 4 a.)
  • Der Check-in Zeitstempel sollte in Japan Standard Time (UTC+9) angegeben werden.
  • Die Punkte im ChangeLog sollten als Kommentar beim Einchecken verwendet werden. Dieser Kommentar wird automatisch nach einem Commit an die Ruby-CVS-Liste gemailt.
  • K&R-Funktionsdeklarationen werden überall im Ruby-Quelltext verwendet.
  • Bitte keine C++-Kommentare (//) verwenden. Das Ruby-Wartungsteam bevorzugt stattdessen die Mehrzeilenkommentare von Standard-C (/* .. */).