====== Entwicklerrichtlinien ======
* Code wird sauber kommentiert
* guter Code braucht keine Kommentare, aber ...
* ... trotzdem sollte der Shit natürlich beim Darüberlesen verständlich sein.
* geforkter und verbesserter Code wird upstream geschickt
* in regelmäßigen Abständen Pull Requests!
===== Code =====
* Code-[[http://de.wikipedia.org/wiki/Smell_%28Programmierung%29|Smells]] werden gefälligst vermieden, ihr n00bs.
* **Einrückung** mit doppelten Leerzeichen
* Die Tabulator-Taste ist böse!
* bei bestehenden Projekten von Drittanbietern wird sich natürlich an deren Richtlinien gehalten, falls existent.
* **Öffnende und schließende Klammern** werden nicht weggelassen!
* auch nicht, wenn bspw. ein if-Statement aus nur einer Zeile besteht.
* **Variablen** haben englische Namen, die aus mindestens drei Buchstaben bestehen.
* der erste Buchstabe ist kleingeschrieben, jeder Wort//anfang// wird mit einem Großbuchstaben versehen
* der Variablenname entspricht der Verwendung
* Beispiel: iKunde customerID
* Abkürzungen werden vermieden
* Beispiel: tblKd customerTable
==== spezielle Dateien im Quellverzeichnis ====
=== DEVELOPMENT.wiki ===
* Entwicklungs-Roadmap in chronologischer Reihenfolge (0.1, 0.1.2, 0.3, 1.0, ...)
* Im Wurzelverzeichnis
* Formatiert in DokuWiki-Syntax
* beinhaltet Abschnitte //TODO// und //FIXME//
* Beispiel [[org:development.wiki]]
=== CHANGELOG.wiki ===
* wie DEVELOPMENT.wiki, nur umgekehrt chronologisch sortiert (..., 1.0, 0.3, 0.1.2, 0.1)
* Beinhaltet auch einen Upgrade-Abschnitt für inkompatible API-Änderungen und Upgradehinweise
* Beispiel [[org:changelog.wiki]]
=== README.wiki ===
* natürlich auch formatiert in DokuWiki-Syntax
* beinhaltet mehrere Abschnitte:
- Beschreibung, was der Quellcode tut (evtl. Motivation)
- Installationsanleitung
- Adressen, bei denen man Hilfe bekommt (eMail, IRC, Jabber, ...)
- Richtlinien zur Mitarbeit (wohin kommt mein verbesserter Code? Kann ich bezahlen, um Feature X zu bekommen?)
- Liste der Leute, die zum Projekt beigetragen haben
- Links zu Konkurrenzprojekten und Beschreibung, warum diese ein Haufen Scheiße sind
* sollte nach Möglichkeit //vor// dem Quellcode geschrieben werden
* Beispiel [[org:readme.wiki]]
=== LICENSE.txt ===
* Ist wohl selbsterklärend
* Kann auch nach der jeweiligen Lizenz (GPLv3.TXT, CC-BY-SA_4.TXT) benannt werden
==== Versionierung ====
Versionierung nach [[http://semver.org/|SemVer-Schema]], Zusammenfassung folgt:
* Bei einer Versionsnummer **MAJOR.MINOR.PATCH** wird erhöht:
* MAJOR, wenn man inkompatible API-Änderungen vornimmt
* MINOR, wenn man Funktionalität in einer abwärtskompatiblen Art und Weise hinzufügt
* PATCH, wenn man abwärtskompatible Bugfixes durchführt
* Zusätzliche Labels für pre-Release und build-Metadaten sind als Suffix zum MAJOR.MINOR.PATCH-Format zu sehen.
* Beispiel: 0.1.14-schnitzel
=== FAQ ===
* Wie gehe ich mit **Revisionen in der 0.y.z-Entwicklungsphase** um?
* am Einfachsten startet man mit 0.1.0 und erhöht die MINOR-Version für jedes Dev-Release.
* Woher weiß ich, wann ich die **1.0.0** veröffentliche?
* Wenn der Code in einer Produktivumgebung eingesetzt wird,
* eine stabile API vorhanden ist
* oder man sich über Abwärtskompatibilität Gedanken macht.
===== Präsentation =====
* Jedes Projekt braucht eine Homepage!
* Wir haben dev.crunchweb.org für Code, der noch nicht flügge ist.
* Projekte sollten mit ihrem eindeutigen Namen als Subdomain von crunchweb.org angelegt werden