Nun, die Schlange wurde entfesselt und schlägt sich recht gut, die Benutzer sind am testen und das Webteam am fixen. Zeit genug mal die Mittagspause zu nutzen und die Benutzer über den Unterbau sowie den Grund von Inyoka zu informieren.
Die Bibliotheken
Wir benutzen für Inyoka viele Open Source Projekte, um das Rad nicht ständig neu erfinden zu müssen. Das ist ja der große Vorteil von Open Source und einer der Gründe warum wir Inyoka Ende des Jahres ebenfalls als Open Source Projekt weiterführen werden.
Deshalb benutzen wir unter anderen folgende Bibliotheken, um einzelne Teile Inyokas abdecken zu können:
Und um Inyoka auf unseren Servern laufen zu lassen und der Öffentlichkeit zur Verfügung zu stellen, kommen MySQL für die Datenbank, Apache für das Ausliefern von dynamischen, sowie Lighttpd für das Ausliefern von statischen Inhalten zum einsatz.
Als Caching-System benutzen wir Memcached
Und zu guter letzt sei erwähnt, das all das nun mit einer einzigen Programmiersprache umgesetzt wurde: Python!
Warum eigentlich Inyoka?
Der Grund, warum wir uns vor gut einem halben Jahr dazu entschlossen haben Ubuntuusers.de auf eine neue Softwarebasis zu stellen, ist relativ leicht genannt: Das aktuelle System ist ein riesiges Gefrickel.
Das Wiki wurde mithilfe von MoinMoin umgesetzt, das Forum läuft bekanntermaßen mit phpBB in Version 2 und das Portal sowie Ikhaya sind Eigenentwicklungen die in Python mithilfe von Django umgesetzt wurden.
Das phpBB ist stark modifiziert, wodurch das patchen von Sicherheitslücken nach offiziellen Patches relativ schwer wurde. Das Benutzersystem hat seine Ursprünge in phpBB, das Wiki, Ikhaya und das Portal haben ein ">Django umgesetzt wurden.
Das phpBB ist stark modifiziert, wodurch das patchen von Sicherheitslücken nach offiziellen Patches relativ schwer wurde. Das Benutzersystem hat seine Ursprünge in phpBB, das Wiki, Ikhaya und das Portal haben ein "eingefrickeltes" Benutzersystem das auf jenes vom Forum zurückgreift.
Das ist der Grund, warum wir den Entschluss gefasst haben: Hier muss was neues, einheitliches her!Der Werdegang
Armin hat daraufhin angefangen, einen neuen Branch im SVN anzulegen und damit begonnen die Grundstrukturen zu schaffen. Schnell wuchs Inyoka heran, schnell zeigten sich vergleichbar klare Strukturen. Die damalige Grundlage bestand nur aus Django und Jinja. Jinja haben wir von Anfang an als Template Engine benutzt, da es A) auf den Django-Templates basiert und B) sowohl schneller als auch angenehmer zu benutzen ist. Weiterhin ist mit Armin der Entwickler von gar zwei Biblitheken, unter anderem Jinja, bei uns an Bord.
Schnell zeigten sich aber auch die Grenzen von Django. Django ist hervorragend für sog. CRUD-Applikationen (Create Read Update Delete) geeignet. Das in Django integrierte Admin-Interface ist großartig jedoch für die Masse an Datensätzen wie Ubuntuusers.de zu verwalten hat nahezu ungeeignet. Mal braucht nur mal zu versuchen, einen von 50.000 Benutzern aus einer Drop-Down-Liste auszuwählen. Daher wussten wir relativ schnell, das wir hier selber Hand an legen müssen und Patches für Django basteln müssen. Das wurde jedoch erstmal nach hinten gestellt, da wir uns vorerst darauf konzentrieren mussten Inyoka als solches wachsen zu lassen.
Mit einer klaren Aufgabenverteilung ging es also ans Werk, die erste Version des Wiki wurde in nahezu einer Woche hochgezogen, das Forum wuchs gemächlich und das Portal ebenso. Unseren Pastebin sowie teile von Ikhaya konnten wir aus dem aktuellen System übernehmen. Auch der Planet war nahezu fertig. Die drei Teile wurden also erstmal in Angriff genommen.
Nun, wir schreiben, schreiben, schreiben, diskutieren, schreiben und schreiben...
Bis Ende Januar das gesamte Webteam ein produktives Wochenende in Nürnberg eingelegt hat (großen Dank nochmal an smurfix für die Bleibe!), um einen klaren Zeitplan zu bestimmen und um Inyoka ein großes Stück nach vorn zu bringen. Neben vielen Späßen im IRC, essen und dem stark zu kurz gekommenen schlafen, haben wir nahezu 8.000 Codezeilen geändert/gelöscht oder neu geschrieben. In gerade mal zwei Tagen! Zu diesem Zeitpunkt haben wir bereits ordentlich an der Grundlegenden Struktur geschraubt. Das Django-Admin-Panel wurde durch eine komplette Eigenentwicklung abgelößt, das Wiki war fast fertig, ebenso das Forum. Portal, Ikhaya und Pastebin waren es schon vorher nahezu. Nun stand eine klare Roadmap sowie viele kleine neue Features und Bufixes und wir konnten mit gutem Gewissen gen 9. März gehen.
Am 9. März haben wir dann die Betaphase gestartet und am 1. April soll dann unsere Schlange (zulu Inyoka) produktiv an den Start gehen.Was-Wofür?
Nachfolgend eine kleine Zusammenfassung, wofür wir welche Biblitheken genau nutzen sowie kleine Erläuterungen über Probleme bzw. guten Erfahrungen mit diesen.- Django
- Django haben wir für nahezu alles, mit Ausnahme der Template Engine, genutzt. Je mehr wir schrieben, desto mehr probleme traten auf. Kein Subdomain-Support, für uns zu unflexibles ORM, das Adminpanel skaliert nicht in unseren Dimensionen sowie andere kleine Problemchen die uns immer mehr fluchen ließen. Daher nutzen wir zur Zeit eigentlich nur noch das ORM und die newforms von Django. Mit ersterem sind wir mehr als unzufrieden, weshalb schon jetzt einige wenige Teile mithilfe von SQLAlchemy realisiert haben. Dazu gehört unteranderem das optimieren von SQL-Queries, Djangos select_related() ist buggy, weswegen wir große Probleme hatten die Anzahl der Queries drastisch zu senken. Django wird bis Ende des Jahres komplett durch die Kombination Werkzeug, Jinja und SQLAlchemy abgelößt.
- Jinja
- Jinja, die kleine sandboxed Template Engine aus dem Hause Ronacher die schnell und angenehm zu benutzen ist. Ausschlagende Argumente sie zu benutzen :=)
- Werkzeug
- Werkzeug ist ein kleines Toolkit um WSGI-Applikationen zu entwickeln. Es ist anders als Django kein ganzes Framework sondern wirklich nur eine Zusammenstellung aus Routing-System, Request/Response-Handling sowie anderen unterstützen Utilities. Wir nutzen es aktuell fürs Dispatching sowie für unsere eigenen Utilities.
- Pygments
- Pygments ist diese kleine Syntax-Highlightning Library aus dem Hause von Georg Brandl. Wir nutzen es um Quelltexte hervorzuheben, hauptsächlich für unseren Pastebin.
- Xapian
- Xapian ist eine sehr flexible Such-Engine, welche es uns erstmals ermöglicht Forum, Wiki und Ikhaya zusammen zu durchsuchen.
- jQuery
- Diese kleine Javascript-Library fügt Inyoka viele kleine nützliche Verschönerungen hinzu. Nichts desto trotz ist Inyoka komplett auch ohne aktiviertem Javascript nutzbar. Ebenfalls eine großartige Neuigkeit!
- Universal Feed Parser
- Diese Bibliothek ermöglicht es uns, andere Feeds zu importieren und in unseren Planeten darzustellen.
- Tango!
- Alle unsere Icons basieren auf denen von Tango bzw. sind nahezu kompatibel mit den Tango-Richtlinien.
Das soll jetzt erstmal ein kleiner Überblick über das neue System hinter Ubuntuusers.de sein, weiteres wird sicherlich in nächster Zeit folgen.