Karopapier goes Open Source
Lang wird ja schon immer mal wieder gebettelt, dass man doch bei Karopapier mitprogrammieren dürfte…
Ich habe bisher immer abgeblockt, weil ich keinem den alten Sourcecode zumuten will.
Und eigentlich wird sich daran auch nicht viel ändern, dafür ist der alte Code zu dreckig, zu schlecht, zu unsicher und auch zu peinlich.
Viel ordentlich wäre ja, das ganze richtig neu zu machen und ggf Ideen oder Schnipsel aus dem alten Code zu verwenden, sofern das geht.
Meine Versuche, Karopapier in den letzten Jahren immer mal wieder neu zu schreiben oder umzuschreiben sind ja alle ziemlich im Sande verlaufen. Erste Versuche, es mit dem PHP Framework Symfony 1.4 neu zu schreiben haben uns eine einigermaßen verwendbare API und ein paar Seiten (karopapier.de/dran, karopapier.de/blocker, karopapier.de/user/settings) gebracht, aber so richtig gut war das auch nicht.
Im letzten Jahr hab ich immer mal wieder einen weiteren Anlauf gestartet, auf Basis des zukunftsträchtigeren und ständig weiterentwickelten PHP Frameworks Symfony2 (bzw. 3, 4, …
http://symfony.com/doc/current/contributing/community/releases.html#schedule) neu zu starten.
Und das läuft ja jetzt auch tatsächlich Parallel. Der größte Teil der Anfragen an Karopapier.de im Browser wird von der uralten Codebasis beantwortet, insbesondere auch das Ausführen der Züge (move.php).
Ein Teil der Anfragen und besonders die Aufrufe der API (was z.B. 2.karopapier.de oder ullis App macht) beantwortet symfony 1.4 (veraltet) und nur ein paar wenige ganz neue Seiten bzw. Services im Hintergrund (z.B. das erstellen der Spiel-Thumbnails) läuft auf Basis des neuen Codes.
ABER: Das lässt sich erweitern und ändern. Ziel ist, Schritt für Schritt alten Code durch neuen zu ersetzen und immer mehr Anfragen mit neuem, ordentlichem, sicherem und getestetem Code zu erledigen.
Daher habe ich meinen neuen Symfony Code nun unter https://github.com/karopapier/Karopapier zur Verfügung gestellt und werde weiterhin darin arbeiten, um Karopapier jeden Tag ein bisschen besser zu machen.
Und da darf dann auch gerne mitgearbeitet werden, sofern man sich den Anforderungen gewachsen sieht, denn ich will keine Quick&Dirty Hacks mehr drin haben, sondern ein ordentliches Projekt, das sich an gängigen „Best Practices“ (http://symfony.com/doc/current/best_practices/index.html) orientiert.
Durch die Verknüpfung der ganzen Code-Teile ist es heute schon möglich, im Uralt-Code einen Service der neuen Code-Basis aufzurufen. D.h. ganz knallhart: Wenn der „MoveService“ fertig ist, kann man diesen theoretisch in allen Stellen (auch im alten Code) aufrufen und Züge nur noch von dieser Stelle aus machen.
Einfacher wäre aber kurzfristig z.B. erst mal ein ChatService (an dem ich gerade arbeite), um die 27 verschiedenen Chats zu vereinheitlichen.
Wer sich jetzt also bemüßigt fühlt, tatsächlich beitragen zu wollen, vielleicht auch ein bisschen Symfony zu lernen und somit Karo und mir zu helfen, der möge dies tun.
Sinnvoll wäre sicherlich, zu koordinieren, wer was wie machen will. Nicht dass was entsteht, was nicht ins Bild passt oder so.
Und vermutlich bietet es sich auch an, Fragen der Zusammenarbeit irgendwie gemeinsam zu klären.
Schauen wir einfach mal, wie es sich entwickelt – und wenn ich weiter alleine wurschdel, auch OK – aber schöner wäre ja vielleicht ein kleines Team, das sich vielleicht auch mal per Online-Sprach-Dienst abspricht oder sogar zu einem Hackathon trifft, wie es ja auch schon vorgeschlagen wurde.