VorwortAusgangslage und Motivation für ClansuiteIm Rahmen meiner Tätigkeit als Webmaster und Organisator des im Sommer 1999 gegründeten Counter-Strike Teams "knd-squad", verwendete ich in den vergangenen 7 Jahren verschiedenste Clanscripte, die jeweils von mir stark angepasst wurden, um den Clan besser verwalten zu können und einigen Administrationsaufwand einzusparen. Angefangen von Revolutionary-Girls Intern, dem späteren Gamers-Intern bis zum Clanportal von Martin Weitzel aka triggertg, Roland Ernst's Clanmanger-Pro, Hajo Piepereit's bxcp und Michael Gruber's webspell. Doch auch diverse unvollständig gebliebene Neuansätze wurden von mir aufmerksam verfolgt, so z.B. Cagret's mygosuclan und Arpad Borsos Swatinemz CMS.
Im Laufe der Zeit begann ich, die aus meiner Sicht nützlichen Änderungen, Ideen und Vorschläge in den verschiedenen Communities dieser Clanscripte auszubreiten und hoffte auf Feedback, Integration, Zuarbeit oder gar Zusammenarbeit. Jedoch waren die meisten Communities nur wenig organisiert und viel zu sehr auf unnützliche Dinge fokusiert, anstatt in der Entwicklung der "wichtigen" Änderungen mitzuhelfen oder einfache Benutzeranfragen zu beantworten. Jeder kochte sein eigenes Clan-CMS-Süppchen, wie man so schön sagt - und das mag auch gut sein, schließlich belebt Konkurrenz das Geschäft, fördert neue Ideen und kurbelt, kurz gesagt, den Innovationstrieb des Unternehmers an.
Ich implementierte meine Vorstellungen so gut es eben ging, erreichte jedoch relativ schnell die Grenzen dieser Clanscripte. Es fehlten einfach zu oft grundlegende Funktionen, während man sich mit fehlerhaftem Grunddesign rumschlagen musste. Umgangssprachlich würde man wohl formulieren, dass ich mit den bestehenden Systemen nicht zu Rande kam.
Und so konnten sich einige meiner Ideen einfach nicht umsetzen lassen und andere fristeten ab dato ihr Leben auf meinem Notizblock.
An diesem Punkt angelangt, wäre man einfacherweise auf ein professionelles CMS umgestiegen und hätte dieses um einige Module erweitert.
Doch am Ende entschloss ich mich dazu, ein eigenes, speziell auf den E-Sport Bereich fokusiertes CMS zu erstellen. Clansuite war geboren.
Mein Entschluss lässt sich auf den Spaß am PHP-Coden, den enormen Lernfaktor bei der Erstellung eines CMS und die Lust, etwas eigenes auf die Beine zu stellen zurückführen.
Mein Ziel ist, ein einfach zu handhabendes, community-getragenes, freies CMS bzw. Portal System zu erstellen, welches auf die grundlegendsten Bedürfnisse der Verwaltung von E-Sport Teams, Sportmannschaften und Vereinen Rücksicht nimmt und dabei neuere Webtechnologien einsetzt.
Ich möchte darauf verzichten, unzählige positive und hervorhebenswürdige Eigenschaften unter einen hochtrabenden Begriff wie Entwicklungsphilosophie bei der Programmierung dieses CMS zu subsumieren. Für mich und meine Arbeit an diesem Projekt gelten vielmehr folgende Leitlinien: Einfachheit, Übersichtlichkeit, Anpassbarkeit bei nachvollziehbarer und solider Dokumentation.
Projektgeschichte & EntwicklertagebuchHerbst 2005 - Mai 2006Die Planungsphase mündet in die Umsetzung eines organisatorischen Rahmens für die Entwicklung.
Es wird die GPL als Lizenz bestimmt, denn Clansuite soll Open-Source sein.
Als Entwicklungsort des Projekts diente zunächst das CVS bei Sourceforge, später erfolgte dann der Wechsel zum schnelleren und SVN bietenden GNA-Host. Zahlreiche mir bis dahin unbekannte gebliebene CMS und Clanscripte werden getestet und grob auf Funktionen und Aufbau geprüft. Meine ToDo-Liste füllt sich.
Nebenher schlage ich im Forum des bxcp Clanscripts einige Features vor und komme prompt mit dem Chefentwickler Hajo ins Gespräch. Es schließen sich unzahlige ICQ-Chats über mehrere Monate an. Hajo schlägt darin eine Zusammenarbeit vor. Ich berichte über mein Fortkommen im Bezug auf Clansuite. Wir breiten Ideen aus und kommen in einigen Belangen recht schnell auf einen gemeinsamen Nenner. Jedoch findet der von mir bis dahin entwickelte Source keinen Gefallen, denn ich verwende durchgehend ein Classes-Konzept und beziehe auch 3th-Party Classes mit in die Entwicklung ein. Hajo's Bxcp-Script basiert bis zu diesem Zeitpunkt rein auf Funktionen, demnach steht die Verwendung von Classes im Widerspruch dazu. Und so steht natürlich auch der Verwendung von 3th-Party-Classes ein gesundes Mißtrauen gegenüber, man möchte doch lieber alles aus eigener Hand erschaffen wissen und die Kontrolle über alle Schnittstellen und Funktionanlitäten haben.
Dennoch schlägt er eine gemeinsame Neuentwicklung unter dem Namen Clansphere vor. Angedacht ist, die schon erarbeiteten Bausteine aus beiden Scripten wieder zum Einsatz kommen zu lassen.
Clansuite bekommt mit Smarty eine neue Templateengine. Das alte, durch Philipp v. Criegern erstellte und schon seit längerer Zeit nicht mehr weiterentwickelte System namens SmarterTemplate fliegt raus (
http://www.phpclasses.org/browse/package/1032.html).Die Umstellung war innerhalb von ein paar Stunden erledigt, denn die Engines stellten sich als relativ artverwand dar und folgten auch den gleichen Template-Konstruktionsprinzipien. So sind beide modular aufgebaut und verfügen über ein Caching System. Dennoch mussten zahlreiche kleinere Änderungen an den einzelen Templatefiles und am Core vorgenommen werden. (PS: Das SmarterTemplate-System wurde aufgrund der enormen Performance im Sommer 2006 auf Sourceforge wiederbelebt, schlief jedoch nach einiges Bugfixes mangels Interesse und Nutzung wieder ein.) Der Umstieg auf Smarty stellte sich, obwohl die Classes recht monolithisch daherkommen, als guter Schritt dar, denn man konnte auf eine bestehende und große Community bauen.
Bis Ende Mai 2006 stand das System mit funktionsfähigem News-Modul und Gästebuch.
Dem Core fehlte jedoch immernoch das bereits detailliert ausgearbeitete Rechtesystems.
Juni 2006Eine Zusammenarbeit zwischen Hajo und mir soll nun doch stattfinden. Der Projektname soll "Clansphere" lauten, denn Hajo hat diesen bereits auf bxcp als Nachfolgeversion beworben. Ich stimme unter dem Vorbehalt einer Open-Source-Entwicklung zu.
Hajo macht mich im Rahmen unserer Ideen-Gesprächsrunden mit Florian Wolf aka xsign.dll bekannt. Florian hatte zuvor zahlreiche Sicherheitslücken am bxcp entdeckt und entsprechende Bug-Meldungen mit Patches an Hajo gesandt und wollte seine Kenntnisse im Sicherheitsbereich von Anfang an in ein neues CMS einfließen lassen.
Das Projekt wird bei GNA unter dem Namen "clansphere" gehostet. Eingetragene Entwickler sind xsign, hajo und vain.
Die gemeinsamen Schritte und Aufgaben besprechen wir im Clansuite Board, welches mir bis dato lediglich als Ideenablage diente.
Es folgen detaillierte Ausführungen zu bestimmten Core-Classes und Modulen analog zu dem bereits im SVN befindlichen Source. Die Aufgabenzuweisungen erfolgen mittels der GNA-Entwicklertools.
Wir beginnen bei Null - gefolgt von zahlreichen Commits in das Clansphere SVN.
Florian stampft innerhalb von 2 Tagen und nur kurzer Sichtung meines Clansuite Codes eine Basis für Clansphere aus dem Boden und macht den "Initial Commit".
Es wird am Core geschraubt. Smarty wird wieder implementiert, Fehlerbehandlung, Eingabefilter, Mailer und Captcha eingebaut.
Hajo möchte seine Arbeit vom bxcp einfließen lassen und die Aufgabe übertragen bekommen, den PDO basierten Db-Layer zu erstellen. Die schnell begonnene Entwicklung kommt jedoch ins Stocken, denn der Db-Layer kommt nicht.
Mitte Juni erstellen wir den Layer selbst. Hajo fühlt sich übergangen und vor vollendete Tatsachen gestellt, als er ein gefülltes GNA-SVN vorfindet. Wir können das nicht nachvollziehen und fordern zur Zusammenarbeit auf. Ein Code-Commit erfolgt jedoch nicht.
Wir beschließen erstmal ohne Hajo weiterzumachen, da er immo nicht an einer produktiven Zusammenarbeit interessiert zu sein scheint. Auch treten Meinungsverschiedenheiten im Bezug auf die Open-Source-Lizenz und den von Beginn an offen verfügbaren Source auf.
Den von Hajo beworbenen Projektnamen "Clansphere" möchten wir nicht streitig machen und moven den bis dahin entwickelten Sourcecode in ein neues SVN-Repository namens "Clansuite". Mein Source landet im Branch als "Clansuite-Pre".
Die Entwicklung wird nun im 2 Mann (xsign, vain) Dauerbetrieb fortgesetzt.
Juli 2006Der Adminbereich bekommt ein db-basiertes Javascript Menü, welches sich alsbald als große Hilfe bei der Aufgabenverwaltung herausstellen sollte, denn die eingetragenen Menüpunkte bilden die zu entwerfenden Funktionen und Classen ab. Wir versuchen uns an Pflichten- und Lastenheften, Todo-Lösungen ala Mantis, PhpBugtracker, Flyspray und Bugzilla werden begutachtet. Flyspray begleitet seither unseren Weg, auch als später der Aufgabenverwaltung bei GNA die größere Rolle zukommt.
Der Modulmanager geht ins SVN.
Ein Grafiker wird gesucht.
15. Juli 2006 - Clansuite.com geht Online.
Es erfolgt der Umzug der alten Seite und des Boards, die bis dato als Untersteiten meines Clans gehostet waren.
Die Erstellung der internen Online-Demoversion von Clansuite wird automatisiert.
Dazu wird die letzte SVN Version manuell per Update-Skript bzw. per zeitgesteuertem Cronjob aus dem SVN auf den Webserver geholt. Die Demoversion repräsentiert nahezu immer den aktuellen Entwicklungszustand, er kann also "live" verfolgt werden.
August 200616. August 2006 - Wir freuen uns, mit Björn Spiegel aka Freq77, einen neuen Mitentwickler gefunden zu haben. Auf gute Zusammenarbeit.
Freq77 commitet das Modul Shoutbox.
21. August 2006 - Die Google Group ClanSuite.com wird ins Leben gerufen und ein RSS/Atom Feed zur Verfügung gestellt. Im IRC füllt sich langsam aber sicher der Channel #clansuite mit einigen Bots. Der Public CounterStrike Source Server beschert uns tägliche Besucher auf der Website. Der Google PageRank beginnt in die Höhe zu schießen und selbst laut Statistik kommen die meisten Besucher von dem Schlagwort "BXCP 0.3" auf die Clansuite Seite. Der Rank für das Stichwort "ClanSuite" beträgt endlich Platz 1. Die ersten Eggdrops werden auf dem Rootserver installiert.
25. August - clansuite.net, clansuite.org gehen online - Verhandlungen über clansuite.de
September 2006Anfang September wird das Rechtesystem basierend auf Usern, Gruppen, Rechten und Areas implementiert.
Ebenso werden die Kategorien verwaltbar und damit Zuordnungen möglich.
Die Module Shoutbox und Filebrowser haben den Bedarf einer einheitlichen und wiederverwendbaren Ajax-Lösung aufgezeigt.
Es wurden verschiedene Ajax-Bibliothek bzw. Frameworks angesehen und auch probeweise implementiert. Das im Clansuite-Pre Kategorienmanager eingesetzte Sajax findet keine Wiederverwendung. Die Wahl fiel auf die Ajax-Bibliothek "Prototype", welche im Zusammenspiel mit "Behaviour" overhead-freie, schlanke Templates entstehen lässt und durch Effekt-Bibliotheken ergänzt werden kann.
Es entsteht das Modul Serverliste. Hierfür wurde die nicht mehr gepflegte Gameserver-Query Schnittstelle "gsQuery" geforked.
Innerhalb dieses Projekts wird sie unter dem Namen "csQuery" weiterentwickelt und steht als Bibliothek separat zum Download.
Oktober 2006Es wird eine Entwicklungspause zum Semesteranfang eingelegt.
Der Corebereich Modulverwaltung wird dahingehend überarbeitet, neben Modulen auch dazugehörige Submodule zu unterstützen.
Das Modul StaticPages erhält eine Overview Funktion, um den Überblick über sämtliche, bereits erstellten statischen Seiten zu gewähren.
November 2006Die Überarbeitung der Modulverwaltung im Hinblick auf Ajax-Funktionalität zieh sich in die Länge.
Nebenher entsteht das Modul Users-on-Googlemap, welches die Benutzeraddressen auf der Google-Weltkarte anzeigt.
Der Installer wird begonnen.
Dezember 2006Am 8. Dezember 2006 verzeichnet das Projekt 13 registrierte User im Board und 3797 Besucher auf der Projektwebseite seit April 2006.
Januar 2007Arbeiten am Modul News und der Paginierung.
Modifikation des Webinstallers. Import/Export von Modulen verfeinert.
Settings Verwaltung erstellt und mit fluchendem Getobe weiterprogrammiert *g*.
Clansuite.com verzeichnet mittlerweile täglich im Schnitt 50 Besucher, welches wohl hauptsächlich durch die guten Rankings in den Suchmaschinen herbeigeführt wird.
Die Hilfe wurde ajaxified.
Februar 2007News-Paginierung als Beispiel für die anderen Module abgeschlossen.
Settings-Verwaltung verfeinert.
Kleinere Xhtml Fixes(unclosed tags, etc.), vorallem am Menü. Fckeditor updated.
9. Februar 2007 - Umfangreicher Commit der "Leer"-Module: articles, download, forum, gallery, guestbook, messaging, replays
Static Modul verschoben und in StaticPages umbenannt.
Erweiterung des Tablegrid auf User-Profildaten.
Arbeiten am Messaging Modul.
13. Februar 2007 - Wir begrüßen Tino 'vyper' Goratsch als neuen Entwickler im Team.
Vyper submittete sogleich zahlreiche xhtml Fixes und arbeitet an einem neuen standardkonformen Template namens "accessible".
TrailStop hinzugefügt um zu verhindern, das der trail beim wrapped-tpl ergänzt wird.
*_ROOT Defines in ROOT_* umbenannt - um die logische Struktur der Verzeichnisse besser abzubilden.
16. Februar 2007 - Maintenance Modus hinzugefügt. Anschließende Restrukturierung der index.php um die Output-Differenzierungen (Maintenance, Admin, Login, Normal, Wrapped) abzubilden.
Die Debug Console wird überarbeitet. Das Modul Static wird zu Staticpages umbenannt.
Das Adminmenü mit Icons ist nun wider xhtml-konform und erhalt das zusätzliche Attribut "right_to_view", um zu bestimmen, ob ein Link für den Nutzer sichtbar ist oder nicht.
Die User-Profilverwaltung wird erweitert.
20. Februar 2007 - Einige Webserver-Statusinformationen werden integriert. So stehen ab jetzt die Funktionen {memusage} {serverload} und {gzipcheck} zur Verfügung.
23. Februar 2007 - Nachdem testweise die brandaktuelle Version des SmartyDoc Plugins verwendet wurde, kehren wir aus Overhead und Performance Gründen zu einer älteren Version zurück. Meine Optimierungsvorschläge teile ich dennoch den Mitgliedern des Smarty-Forums Boots und Brettz9, der das Plugin geforkt hat und nunmehr für die weitere Entwicklung zuständig ist, mit. Einige der Feature aus diesem neuen Plugin, wie zB die docraw movements aus sub-templates in den Head des wrapper-templates werden per hand in die alte Version eingepatcht.
Der Plugin-Test zeigte uns ebenfalls Validierungs-Probleme im Bereich der Dokumentenübermittlung im Falle von xml/xhtml doctypes an. Wir einigten uns daraufhin, den Doctype nicht zu übermitteln (d.h. der Browser wird nicht in diesen Interpretationsmodus gezwungen), jedoch annährend xhtml 1.0 zu entwickeln.
Dadurch obliegt die eigentliche Validierungsaufgabe dem Enduser. Dies scheint auch das gängige Verfahren bei anderen CMS zu sein, da die korrekte Übermittlung des Doctypes nicht auch zur korrekten Interpretation auf den verschiedenen Browsern führt.
26. Februar 2007 - Es wird eine Klasse für den BBCode ergänzt. Damit stehen nun Textformatierungen zur verfügung. Die Klasse kann durch den User ergänzt werden. Desweiteren einigen wir uns darauf, anstatt eines eigenen BB-Codes für das Element (code), eine eigenständige 3th-Party-Class einzusetzen. Die Wahl fiel dabei auf GeShi. Somit steht Code-Highlighting für zahlreiche Programmier- und Scriptsprachen zur Verfügung.
März 2007Anfang März - der Webinstaller wird nochmals überarbeitet.
Am 16. März 2007 verzeichnet das Projekt 11 registrierte User im Board und 11434 Besucher auf der Projektwebseite seit April 2006.
19. März 2007 - Nach längerer Zeit der Inaktivität verlässt Björn Spiegel aka freq77/firstlord das Entwicklerteam. Er möchte eigene Projektideen verwirklichen bzw. sich anderen Hobbys widmen. Rotor hingegen erklärte sich erneut bereit an einem Public bzw. Admin Template zu arbeiten, man darf also gespannt sein.
20. März 2007 - Meine Vorschläge zur Optimierung des SmartyDoc Plugins fanden Zuspruch bei den Entwicklern. Nach einigem Gedankenaustausch über die Fortentwicklung, betreue ich in Zusammenarbeit mit Brett Zamir das SmartyDocB Plugin als eigenständigen Fork auf Sourceforge.
Den Anfang meiner Arbeit bildeten umfangreiche PHPDocumentor-Style Kommentierungsarbeiten und einige Code-Style Änderung in Richtung Pear-Coding-Style Syntax, sowie eine Reduzierung der Größe des 1-File Multi-Plugins durch aufteilung in mehrere Dateien. Die Arbeiten an Clansuite gehen ebenfalls im Bereich Kommentierung weiter, so werden die Comments schrittweise auf die besagte phpdoc Formatierung umgestellt, um die automatische Developerdokumentation zu ermöglichen.
24./25. März 2007 - Die Dokumentation zu SmartyDocB steht nun unter
http://smartydocb.sourceforge.net/docs/documentation.xml bereit.
Zwischendurch und ganz nebenbei wurde die 3th Party Software aktualisiert: Smarty liegt nunmehr in Version 2.6.18 vor. Und Vyper aktualisierte auch den WYSIWYG-FCKeditor auf die Version 2.4.1 vom 20.März 2007. Die angestrebte Aktualisierung der Ajax-Klassen brachte einige Bugs hervor. Scheinbar gibt es nun ein Rekursions-Problem im Zusammenspiel von Prototype und script.aculo.us bzw Prototype und XulMenu. Wir werden sehn, wie die Community das in den Griff bekommt. Und solange bleiben auch alle alten Ajax-Versionen erhalten, in denen diese Fehler nicht auftraten.
Modul News und Gästebuch werden bearbeitet.
28. März - Installer updates
Nach mehreren Anfragen von Entwicklern, haben wir versucht den Installer etwas voranzutreiben. Es fehlt natürlich noch der Multiple Choice um später beim installieren Plugins/Module auszuwählen, aber bei grade mal ein Dutzend Modulen ist das auch (noch) nicht notwendig.