Hier erkennt man übrigens schon in Ansätzen, wie man ein solches Projekt recht gut zugrunde richten kann.
Das Projekt zielt darauf ab, ein kleines Forum zu sein. Diesem wird es momentan gerecht, es beschränkt sich auf die Grundfunktionen (Thread erstellen/ Beiträge schreiben) und geringfügige administrative Funktionen.
Und jetzt kommt die Flut an Features, die man im nachhinein hinzufügt. Es fängt an mit BBCodes, danach kommen Forenbetreuer dazu, Userprofile, die Möglichkeit seine Beiträge zu editieren, Blogs für jeden User, Bildergalerien, ein Rennommee-System, ein WYSIWYG-Editor, Ajax, eine Version für PDAs, verschiedene Sprachen und und und…
Ein großes Problem bei solchen Projekten ist es, dass die Grundidee zwar da ist, aber man darauf hofft, dass sich im Laufe der Zeit alles rauskristallisiert. Der Grundgedanke ist "ein kleines Forum", dann wird schon bunt drauf losgecodet.
Das geht dann anfangs noch gut, bis man anfängt rumzupfuschen. Hier ein kleines Fix, da wird was umgangen und eine kleine Inkonsistenz macht den Braten nicht fett. Aber irgendwann hat man einen riesen Haufen Code, keinen Durchblick mehr und keine Möglichkeit mehr, den Code wieder richtigzustellen.
Besser:
Vorher genau Gedanken machen, was man alles einbauen Will:
- Login? Admins? Betreuer? Rechtemanagement? Formatierung?
Alles muss fein säuberlich zusammengestellt werden und vorallem in _schriftlicher_ Form vorliegen [nicht nur im Kopf des Entwicklers].
Dann macht man sich über den Aufbau des Projektes Gedanken.
- Baut man alles auf OOP auf? Wie werden Templates realisiert? Wie ist die Aufteilung in verschiedene Dateien?
Erst nach diesem Schritt kann man wirklich anfangen, eine erste Zeile Code zu schreiben. Wenn dann das ganze Forum funktioniert, sollten neue Features nur noch sehr spärlich eingebaut werden und sich das weitere Programmieren um Verbesserungen kümmern:
- Wie sicher sind Captchas? Gibt es Bugs? Kann man sich Administratorrechte erklauen? Wo kann man noch etwas an der Performance verbessern?
Dazu kommt noch, dass man sich schon zu Anfang des Projekts um die [wiki]Versionsverwaltung[/wiki] kümmern sollte. Wenn man in einer neuen Version rumpfuscht, kann man dann immernoch auf die alte zurückgreifen. Gleiches gilt für diejenige Person, welche das Forum nutzt - wenn in einer neuen Version sehr viel verhunzt wurde, bleibt immernoch die Möglichkeit die alte weiterzuverwenden.
Ich habe selber einmal vor knapp 3 Jahren versucht ein Forum aufzubauen. Vorher habe ich nicht viel darüber nachgedacht, wie genau alles funktionieren soll und habe gehofft, dass alles von alleine kommt. Das Ergebnis nach einer Woche war eine einzige 22KB große Datei voller Code, in der man garkeinen Durchblick mehr hat. Alles wurde in tausende verschiedene Abfragen verkapselt; Dauernd kamen neue Features dazu, auch wenn die bestehenden noch nicht richtig funktioniert haben. Dementsprechend ist das Projekt auch sehr schnell zum Stillstand gekommen.
Ebenso habe ich vor knapp einem Jahr versucht Klassen zur Arithmetik mit beliebiger Genauigkeit in C++ zu implementieren [ähnlich zu GMP]; Das Klassendesign war nicht durchdacht und auch hier bin ich nicht sonderlich weit gekommen.