Grundkurs Open-Source-Entwicklung
[caption id="attachment_24542" align="aligncenter" width="420" caption="Foto: Open Sign von David Lofink (Lizenz: CC-BY)"][/caption]Open-Source-Software hat sich aus der Nische befreit und zu einem ernstzunehmenenden Wirtschaftsfaktor entwickelt. Als Entwickler wirst du früher oder später mit quelloffener Software zu tun haben.
Da ist es nicht verkehrt, über die Hintergründe Bescheid zu wissen. Das ist nützlich, wenn du irgendwann bei der Fehlerbehebung oder Erweiterung helfen willst, weil deine Software auf der Dritter aufbaut.
Es ist aber auch eine interessante Lektion über Abläufe und Methoden in verteilten Teams, die deiner Karriere auf die Sprünge helfen kann. Denn meist lassen sich Lösungen aus der Community auf die Organisation von Teams in Unternehmen anwenden.
Hier soll es zunächst darum gehen, ein Gefühl für die Arbeitsweisen zu entwickeln, denn:
Wer sich an der Open-Source-Entwicklung beteiligen möchte, tut also gut daran, zunächst einmal die Gepflogenheiten des jeweiligen Projekts kennenzulernen. [via]
Die Frage ist nur: Wo fängst du am besten an?
Beherrsche dein Handwerk
Die Software-Branche hat sich in vielerlei Hinsicht professionalisiert, auch bei den (erfolgreichen) Hobbyprojekten. Also solltest du das auch.
Beherrsche verteilte Versionsverwaltung (Distributed Version Control System, DVCS). Versionsverwaltung an sich ist die Grundlage für jedes Arbeiten an Software — das solltest du verinnerlicht haben wie das Atmen. Verteilte Versionsverwaltung ist speziell auf die Arbeit in Teams zugeschnitten und wird daher in immer mehr Projekten verwendet. Dabei ist unerheblich, für welche Software du dich entscheidest. Mein Favorit ist Git. Andere bevorzugen Mercurial.
Beherrsche die Kunst der testgetriebenen Entwicklung (Test-Driven Development, TDD). Sie macht dich zu einem besseren Programmierer, denn Tests…
- fördern gutes Software-Design
- erhöhen die Wartbarkeit deiner Programme
- geben Dritten einen guten Überblick in den Funktionsumfang
Sowohl der Umgang mit Versionsverwaltung als auch testgetriebene Entwicklung erfordern natürlich viel Übung. Deshalb:
Starte ein Lieblingsprojekt
Die Amerikaner nennen es treffend „pet project“. Andere müssen nicht unbedingt nützlich oder wichtig finden, was du da tust. Es ist dein Projekt, also mach was daraus. Lerne dabei. Probier Dinge aus. Amüsier dich. Beherrsche dein Handwerk.
Ich würde dir wärmstens ein GitHub-Account empfehlen, um dich mit anderen Entwicklern auszutauschen und Code freizugeben, vor allem bei Verwendung der Programmiersprachen Ruby, Python und Javascript (siehe GitHubs Top Languages)
Organisiere und vermarkte dein Projekt. Dabei hilft natürlich auch:
Vernetze dich
Folge den richtigen Leuten. Twitter erfreut sich unter uns Technikern großer Beliebtheit und ist dafür gut geeignet. Es mag vielleicht eine Weile dauern, bis man sein Netzwerk zusammengestellt hat, aber es ist den Aufwand wert.
Besuch User Groups in deiner Umgebung, um persönlichen Kontakt herzustellen und interessante Leute und Projekte zu finden.
Nimm an Konferenzen teil. Dabei ist der Preis nicht unbedingt ein Qualitätskriterium. Manche Community stellt für einen Bruchteil des Preises großartige Veranstaltungen auf die Beine.
Stell dich darauf ein, gewohntes Terrain zu verlassen. Bis vor kurzem habe ich noch nie einen Chat für technische Diskussionen betreten. Mailinglisten sind nicht (mehr) in allen Teilen der Szene gleich populär. Mach deine Mitarbeit nicht davon abhängig, welches Kommunikationsmittel du gern benutzt.
Aber mach deine Mitarbeit davon abhängig, wie du behandelt wirst:
Bleib, wo du willkommen bist
Ich mag Ruby (und Rails) auch deswegen, weil man offen miteinander umgeht und Diskussionen sachlich und auf hohem Niveau geführt werden. Auch wenn so mancher das anders sieht.
Bleib, wo du dich wohlfühlst — denn das ist der Schlüssel zu großartigen Projekten.