Inside-Informationen über Pokefans: was bei uns so unter der Haube läuft. Kurioses, Interessantes oder auch einfach nur Einblicke in das, was wir so den lieben langen Tag machen.

Zum Inhalt | Zum Menü | Zur Suche

Pokefans wird neu - und offen!

Pokefans existiert nun seit über 7 Jahren. In dieser Zeit hat sich einiges getan. War am Anfang der Funktionsumfang noch relativ überschaubar - als einzige große Systeme existierten damals Pokedex und Artikelsystem - kamen recht bald weitere größere Systeme dazu, z.B. die Tauschbörse oder das Fanart-System.

Mit dem ersten Serverumzug 2008 und der Umbenennung von Pokemon-Inside zu Pokefans wurde auch ein programmiertechnischer Neustart vorgenommen; mit dem Ziel alles ins neue System zu übernehmen. Trotzdem läuft dieses System - wenn auch grundlegend entschlackt - bis heute weiter. Diese Codebasis datiert zurück bis 2006, ist also unter heutigen Gesichtspunkten ziemlich veraltet und läuft auch nur noch mit einiger Magie auf unserem Server. Auch um das "neue" System ist es nicht wesentlich besser bestellt. Im laufe der Zeit wurde die API mehrmals umgeschmissen, sodass unterschiedliche Teile der Seite komplett unterschiedlich funktionieren - mangels Testcases und Manpower wurde die alte API aber nie wirklich abgeschafft, und bevor alles portiert war wurde die API wieder entsorgt, sodass die unterschiedlichen APIs schlussendlich explodierten.

Vielleicht wird der ein- oder andere jetzt anmerken, dass man von all dem nichts gemerkt hat. Dann freut mich das natürlich. Aber sichtbar war es durchaus - die verschiedenen Pokedex-Layouts und Informationsstände vor der Pokedex-Vereinheitlichung waren z.B. eine direkte Konsequenz daraus. Auch für ein Web, in dem immer mehr Clientseitig passiert, war das System nicht ausgelegt.

Was also tun? Die Lösung ist eigentlich sehr naheliegend: neu schreiben.

Damit wir uns die Arbeit erleichtern und uns auf das konzentrieren, was eigentlich wichtig ist - nämlich unsere Anwendung - war relativ schnell klar, dass wir auf Standardtechnologien setzen wollen. Nun hat die Wahl eines Frameworks aber zwangsläufig zur Konsequenz, dass man sich vorher über die zu verwendende Programmiersprache einig wird. Relativ schnell war klar, dass eine komplett neue Lösung nicht mehr auf php aufbaut - der Hauptgrund war hier übrigens, dass php immer noch kein vernünftiges Unicode-Handling hat, und sich auch nicht abzeichnet, dass da in naher Zukunft was passiert. Oh, und das oder das natürlich.

Was bleibt uns also übrig - von den populäreren Sprachen?

  • NodeJS: Damit kennt sich keiner von uns so wirklich aus. Und javascript ist nur marginal besser als php. Damit das wirklich einsetzbar wird, landet man dann aber erst recht wieder bei irgendeiner Sprache, die zu JS kompiliert (z.B. Dart) und das ist IMO so grausam wie es sich anhört.
  • Python: Es gibt zwar Django und Flask, aber wirklich gute Möglichkeiten, da Refactoring zu betreiben, gibt's nicht.
  • ASP.NET: Läuft unter Mono recht gut. Und mit der neuen Version wird's dann auch direkt unter Linux unterstützt.
  • Java/JSP: Nimmt sich nicht viel zu ASP.NET, außer dass Java eine kaputte Standardlibrary hat, und von den Sprachfeatures C# weit hinterher ist.

Insofern: Tschüss PHP, hallo ASP.NET! Damit war dann auch die Frameworkfrage geklärt - ASP.NET MVC regelt. Genauer gesagt bauen wir jetzt auf diesen Technologien auf:

  • ASP.NET Identity
  • ASP.NET MVC5
  • OWIN
  • Unity Dependency Injection
  • EntityFramework 6 Code First
  • MariaDB (MySQL-Fork) als Datenbank-Backend
  • NUnit als Unit-Testing-Framework

Vielleicht fragt sich jetzt der eine oder andere "Das ist ja alles schön und gut, aber warum erzählst du uns das so genau?" Nun: jeder soll mitmachen können. Wir haben uns entschlossen, den Code unter AGPL zu veröffentlichen - das heißt: jeder darf ihn runterladen, laufen lassen, verändern, muss aber selbst immer den Quellcode bereitstellen, selbst wenn es nur als Dienst irgendwo gehostet wird. Demnächst stellen wir den Code auf Github - wenn das soweit ist, werden wir es natürlich hier ankündigen. Da gibt's dann auch die Informationen zum Workflow und wie man richtig beiträgt.

Cheers, Delirium

PS: Und wer jetzt irgendwas nicht verstanden hat und genauer erklärt haben möchte... schreibt's in die Kommentare! *nachuntenzeig*

Kommentare

1. Am Mittwoch, 20. Mai 2015, 14:29 von Sebin Nyshkim

Eevee's Blogpost zu PHP (und in einem Anflug von Wahnsinn meine Idee das ins Deutsche zu übersetzen xD) hat mich auch so weit wie möglich von der Sprache weggetrieben, wie es nur geht. Bei privaten Projekten kann man sich sicher noch so leicht für etwas angenehmeres wie ASP.NET entscheiden, aber im beruflichen Umfeld kann man das bestimmt nicht so einfach, weil PHP (unverständlicherweise) zum Status quo avanciert ist.

Nach ein paar Zitaten von Rasmus Lerdorf (http://en.wikiquote.org/wiki/Rasmus...) dreht sich einem dann noch komplett der Magen um und man fängt an sich zu fragen wie so ein Vollpfosten eine der am meisten eingesetzten Web-Sprachen etablieren konnte.

Freue mich schon auf das neue Pokefans! Ihr seid mit Abstand das beste Nachschlagewerk in DACH, auf das ich nicht verzichten wollen würde. Da können alle Lösungsbücher einpacken ;)

2. Am Mittwoch, 20. Mai 2015, 15:46 von Delirium

Naja, einfach ist so eine Sache. Wir haben eine teilweise 9 Jahre alte Codebase, die wir auch nicht über Nacht abschalten können. Allerdings wollen wir die ältesten Teile zuerst entsorgen und dann den Rest Schritt für Schritt auf ASP.NET portieren. Wichtig ist dabei auch Phalanger, mit dem wir php auf der .NET / mono-VM laufen lassen können. Das führt dazu, dass wir die alten Teile unsere neue API benutzen lassen können - so müssen wir am alten Zeug weniger Ändern.

Trotzdem gibt es ein Subset an Minimalkomponenten, das bei der initialen Umstellung dabei sein muss - und das CMS gehört dazu.

3. Am Donnerstag, 21. Mai 2015, 19:26 von Yusel

Wäre es dann theoretisch irgendwann mal denkbar, dass nicht nur Quellcode überarbeitet werden kann, sondern technisch interessierte Mitglieder auch ganze Anwendungen schreiben können? Beispielsweise verbesserte Verwaltungssysteme oder zusätzliche Systeme für Sachen wie Orteprojekt, wo die Admins eher weniger Zeit für haben :x

4. Am Freitag, 22. Mai 2015, 00:31 von Birne94

Die Mitarbeit am Code schließt natürlich nicht nur Bug-Fixes oder ähnliches ein, sondern es können auch neue Features hinzugefügt werden.

Allerdings wäre es an dieser Stelle wichtig, dass dies vorher mit der Administration abgesprochen wird. Am Ende ist vielleicht ein ähnliches Projekt bereits in Planung oder es passt nicht in das Konzept von Pokefans, sodass die Arbeit umsonst war.

Ansonsten sollte der hinzugefügt Code an dem bestehenden orientiert und ausreichend getestet sein. Auch wenn wir vor der Übernahme in den master-Branch diesen noch einmal detailliert prüfen werden sollte er durch den Entwickler bereits optimiert worden sein. Code, der nicht den Qualitätsansprüchen entspricht, wird mit Sicherheit nicht in das bestehende Projekt übernommen.

Weitere Hinweise dazu werden in Form von READMEs folgen, wenn das Projekt auf github veröffentlicht wird.

5. Am Freitag, 22. Mai 2015, 17:24 von The Libertine

@Yusel: Im Prinzip ist das sogar Sinn er Sache, denn nur für ein paar Mini-Änderungen würden wir uns diesen Open Source Aufwand auch gar nicht betreiben - da würde das OpenSource Projekt wohl mehr Zeit kosten als wir dadurch einsparen. Trotzdem würde ich nicht erwarten, dass hier vor nächstem Jahren die Grundlagen dafür ausreichend ausgereift sind (das ganze kann natürlich niemand auf der grünen Wiese bauen, sondern viele Komponenten wie User-Anbindung, Daten-Anbindung, usw. müssen zuerst von uns zentral erschaffen, getestet und dokumentiert werden). Es werden aber sowieso die meisten Interessenten auch erst einmal Zeit brauchen, um mit C# auf ausreichend hohem Niveau zu programmieren.

Kommentar eintragen

Kommentare können mit einfacher Wiki-Syntax formatiert werden.

Folgende haben zum gleichen Thema veröffentlicht

Trackback-URL : http://inside.pokefans.net/index.php?trackback/4

Die Kommentare dieses Eintrags als Atom-Feed abonnieren