staging.inyokaproject.org

Inyoka – Der lange Weg zum Open-Source-Projekt

ubuntuusers.png

Schon seit sechs Jahren läuft Inyoka produktiv auf ubuntuusers.de. Die Veröffentlichung unter einer Open-Source-Lizenz ist schon sehr lange angekündigt, doch passiert ist dies bisher noch nicht. Der Artikel soll zeigen, woran es hängt und was man dafür tun kann, damit es besser wird.

Was ist Inyoka?

Das gesamte ubuntuusers.de-Portal läuft auf einer Python-Web-Anwendung namens Inyoka. Es unterteilt sich in die folgenden unterschiedlichen Komponenten: Forum, Wiki, News, Planet und Paste-Service.

Ziel der Entwicklung war es, eine Portalsoftware aus einem Guss zu haben. So haben wir über die gesamte Plattform hinweg ein Single-Sign-On verfügbar und auch die Syntax lässt sich problemlos zwischen den unterschiedlichen Bestandteilen übertragen.

Inyoka baut zu großen Teilen auf dem Python-Web-Framework Django 🇬🇧 auf, zusätzlich gibt es noch einige weitere externe Abhängigkeiten für Internationalisierung oder Benachrichtigungen über XMPP (Jabber). Eine unvollständige Übersicht mit verwendeten Programmen und Bibliotheken findet sich unter ubuntuusers.de/inyoka.

Die Entstehung Inyokas

In der Anfangsphase von ubuntuusers.de lief eine Kombination aus DokuWiki, welches später durch MoinMoin ersetzt wurde, phpBB als Forum und das ein oder andere Python-Modul, etwa für Ikhaya. Um spezielle Funktionen, wie etwa die Ubuntu-Versionsauswahl im Forum nutzen zu können oder eine zentrale Anmeldung zu realisieren, gab es in diesen unabhängigen Teilen weitreichende Anpassungen. Durch diese Anpassungen war jedes Update auf eine neuere Version ein Glücksspiel, was besonders im Hinblick auf Sicherheitsupdates problematisch war. So kam es dazu, dass Major-Updates von phpBB ausgelassen wurden. Der Unterschied zwischen der eingesetzten Version mit vielen Bugfix-Backports und der offiziellen Version wurde immer größer.

Die ersten Überlegungen zu einer neuen, eigenen Portalsoftware sind daraufhin am Teamtreffen 2007 in Essen entstanden. Ziel war es, wie schon oben erläutert, eine einheitliche Portalsoftware zu haben, die den ubuntuusers-Anforderungen entspricht.

Aus diesem Grund wurde im Hintergrund hart an Inyoka gearbeitet. Im März 2008 folgte die erste öffentliche Ankündigung von Inyoka. Am 19. Juli 2008 wurde ubuntuusers.de vollständig auf Inyoka umgestellt (siehe auch Krampfadergrafik).

Auch nach der Migration sind noch viele Dinge an Inyoka verändert worden, in der Anfangszeit gab es zum Beispiel viele „interne Serverfehler“ und die Performanz war noch sehr ausbaufähig. In der Software-Architektur gab es zudem viele Umstellungen. Darunter fällt beispielsweise der Wechsel von Django auf SQLAlchemy und wieder zurück. Django ORM entsprach anfangs noch nicht den Anforderungen von ubuntuusers.de. Diese größeren Probleme wurden nach und nach behoben, zusätzlich wurden immer wieder neue Features, welche meist aus Team oder Anwenderanforderungen entstanden sind, implementiert oder verbessert.

Der Weg zur Open-Source-Veröffentlichung

inyoka_logo-420px.png
Inyoka-Logo

Unser erster OSS-Plan (Bild) war 2008 zu optimistisch. Das Webteam hat den Aufwand deutlich unterschätzt, eine speziell für ein Portal entwickelte Software auch für andere anpassbar zu machen. Neben zahlreichen Funktionserweiterungen kamen auch immer wieder zeitliche Engpässe dazwischen, alle wichtigen Punkte zu erledigen. Damit sich die Veröffentlichung nicht noch weiter verzögert (es sind nun ja schon sechs Jahre), wurden die wichtigsten drei zwingend zu erledigenden Punkte herausgesucht, bevor Inyoka unter einer Open-Source-Lizenz veröffentlicht werden kann.

  • Dies wäre zum einen die Authentifizierung, bei der sichergestellt werden muss, dass unautorisierte Nutzer nicht auf geschützte Bereiche zugreifen dürfen. Bisher ist nicht völlig sichergestellt, dass es in diesem Punkt keine offenen Lücken gibt. Und Inyoka soll nicht veröffentlicht werden, bevor die vollständige Integrität des Portals gewährleistet ist.

  • Weiterhin fehlt ein Webdesign (Standard-Template), das mit Inyoka ausgeliefert wird. Dies ist unter anderem deshalb wichtig, um optische „ubuntuusers.de-Kopien“ zu vermeiden. Daneben ist das ubuntuusers.de-Template logischerweise sehr auf das ubuntuusers.de-Portal angepasst und weniger für andere potenzielle Inyoka-Betreiber geeignet. Das heißt, es muss noch ein eigenständiges Design für Inyoka geschaffen werden, welches nicht auf dem ubuntuusers.de-Template basiert. Erste rudimentäre Arbeiten gab es hier bereits.

  • Der letzte Punkte ist die Suche. Diese funktioniert zum jetzigen Zeitpunkt eher rudimentär und die Funktionsweise ist bescheiden. Zusätzlich gibt es auch noch lizenzrechtliche Gründe, die eine Freigabe der Suche zusammen mit Inyoka verhindern, weshalb die aktuelle Suche entfernt beziehungsweise ersetzt werden muss.

Bei der Entwicklung mithelfen

Das Webteam besteht auf den ersten Blick aus fünf Mitgliedern. Zu beachten ist jedoch, dass Webteam und Serverteam zusammen ein einziges Team bilden. Aktuell gibt es daher keinen Entwickler im Webteam, der sich um Inyoka kümmert. Hierzu hat der Weggang einiger Entwickler aus unterschiedlichen privaten und beruflichen Gründen in den letzten Monaten geführt.

Aus diesem Grund sucht das ubuntuusers-Team Unterstützung bei Authentifizierung, Suche und Design, damit Inyoka als Open Source veröffentlicht werden kann. Für die Teilnahme gibt es aber einige Bedingungen:

  • Der Code darf vor dem Open-Source-Release nicht weitergegeben werden. Auch wenn man Zugriff darauf hat, ist es wegen der obigen Punkte verboten, den Code vorab zu veröffentlichen. Gleichzeitig möchten wir Schaden von dieser Plattform abwenden, welcher gegebenenfalls durch noch unbekannte Lücken entsteht.

  • Es ist nicht erlaubt, eine produktive Instanz von Inyoka vor der Veröffentlichung laufen zu lassen.

  • Hauptsächliches Ziel ist es, die oben genannten, offenen Punkte zu erledigen. Wenn hierfür Fehlerbehebungen notwendig sind, können diese natürlich erledigt werden. Neue Features sollen aber nicht entwickelt werden.

  • Das Webteam hat aufgrund der beschränkten Entwicklerzahl nur begrenzt Zeit, sich um die Einarbeitung neuer Entwickler zu kümmern. Aus diesem Grund gibt es eine Anleitung zum Starten einer Development-Instanz, die an die interessierten Entwickler verteilt wird.

  • Für die Entwicklung von Inyoka kommt die BSD 3-Clause-Lizenz 🇬🇧 zum Einsatz, der jeder Mitentwickler zustimmen muss.

Anforderungen

Wichtig ist, dass alle, die sich an der Entwicklung von Inyoka beteiligen möchte, die passenden Anforderungen mitbringen. Für die Entwicklung des Web-Designs sind gute Kenntnisse in HTML und CSS Voraussetzung. JavaScript-Kenntnisse wären darüber hinaus auch durchaus sinnvoll.

Für die Untersuchung der Authentifizierung benötigt man eher Erfahrung in Python und dem Django-Framework. Essentiell ist hier, dass man den vorhandenen Quellcode versteht.

Für die Entwicklung einer neuer Suche benötigt man in allen Bereichen Erfahrung.

Der Quellcode von Inyoka liegt auf GitHub. Für die Software-Entwicklung wird daher auch Git als Versionsverwaltung genutzt. Git-Kenntnisse sind sinnvoll, diese kann man sich notfalls auch während der Entwicklung an Inyoka aneignen.

Dass jeder Mensch unterschiedlich gute Kenntnisse besitzt, beispielsweise gute Kenntnisse in HTML, CSS und JavaScript hat, dafür nur rudimentäre in Python, sollte kein Hindernis sein. Daher möchten wir alle ermuntern, lieber nachzufragen, ob die persönlichen Kenntnisse reichen oder nicht. Denn alle haben mal klein angefangen – so etwa auch das damalige Entwickler-Team von Inyoka.

Selbstverständlich müssen alle, die mitmachen möchten, vertrauenswürdig sein und die oben genannten Bedingungen respektieren. Wichtig ist auch, dass alle Entwickler motiviert sind, sich in bisher unbekannte Teile einer Software einzuarbeiten.

Ziel des Aufrufs

Das Ziel des Aufrufs ist es, die oben genannten drei Punkte zusammen mit (hoffentlich vielen neuen) Entwicklern abzuarbeiten und Inyoka für ein Open-Source-Release bereit zu machen. Es ist dabei nicht erforderlich, dass man für die Teilnahme an der Entwicklung ins Webteam eintreten muss. Wenn sich aus der Arbeit natürlich dennoch das ein oder andere neue Webteammitglied findet, wäre das sehr schön. Vor allem wäre es wünschenswert, wenn sich ein fähiges Team bildet, welches langfristig an Inyoka weiterentwickeln möchte.

Kontakt

Das Webteam freut sich auf Interessenten und somit potenzielle neue Entwickler. Bitte schickt Eure kurze Beschreibung mit Euren Fähigkeiten und Kenntnissen an encbladexp bzw. inyoka@stefan-betz.net. Dieser wird dann, soweit die Voraussetzungen erfüllt sind, alles Notwendige für den Zugriff in die Wege leiten. Für Fragen zur Bewerbung kann man sich auch an die Entwickler im IRC auf chat.freenode.net im Raum #ubuntuusers-webteam wenden.

Veröffentlicht von Dee | 15. August 2014 12:10 | Kategorie: ubuntuusers | # Fehler im Artikel melden

clocker

Avatar von clocker
1 15. August 2014 12:30

Danke für den Überblick und aktuellen Stand. Ein wenig HTML/CSS krieg ich noch hin aber beim Rest hörts auf ☺

trick17

Avatar von trick17
2 15. August 2014 12:47

Danke auch für den Überblick und aktuellen Stand.

die wichtigsten drei zwingend zu erledigenden Punkte [...], bevor Inyoka unter einer Open-Source-Lizenz veröffentlicht werden kann.

Punkt 3:

gibt es auch noch lizenzrechtliche Gründe, die eine Freigabe der Suche zusammen mit Inyoka verhindern, weshalb die aktuelle Suche entfernt beziehungsweise ersetzt werden muss.

Verstehe ich (noch) nicht. Was für "lizenzrechtliche Gründe" gibt es denn mit der aktuell verwendeten Suche?

encbladexp

Ehemaliger

Avatar von encbladexp
3 15. August 2014 12:52

@2: tl;dr: Inkompatible Lizenzen die eine gemeinsame Veröffentlichung rechtlich problematisch/unmöglich machen. Also brauchen wir entweder eine neue Suche, oder aber die vorhandene wird komplett entfernt.

Im Idealfall findet die neue Suche dann auch schon das gesuchte, ein ehemaliger Kollege vom Webteam hat hier schon gute Vorarbeit geleistet. Aber Suchfunktionen sind ein sehr komplexes Thema.

mfg Stefan Betz

borish

4 15. August 2014 21:23

Andere Nutzer können aber nur dann etwas mit dem Release anfangen, wenn es dafür Dokumentation, Support und regelmäßige Bugfixes gibt, was weiteren Aufwand bedeutet.

encbladexp

Ehemaliger

Avatar von encbladexp
5 15. August 2014 21:40

Das ist auch unser Ziel für eine OSS Version, dazu gehört natürlich auch Dokumentation, ein Ansprechpartner bei Problemen und regelmäßige Updates.

Wir wollen nicht einfach ein .tar.gz oder ein git Repository in die Welt setzen und dann nie wieder drauf schauen, sondern wir wollen eine lebende Plattform schaffen die auch von anderen großen Communities verwendet werden kann.

Das wichtigste ist aber nach wie vor der Betrieb dieser Plattform, unser oberstes Ziel mit Inyoka war es eine Wartbare Software für unsere eigenen Anforderungen zu haben. Dieses Ziel haben wir dank vieler guter Entwickler erreicht, jetzt geht es darum sanft den nächsten Schritt zu machen.

mfg Stefan Betz

Scoutman

Avatar von Scoutman
6 16. August 2014 01:16

Zuerst mal ein großes Danke für diesen Artikel. Somit hat man mal einen Überblick über dieses Projekt und den aktuellen Stand.

Da ich selbst in der Webentwicklung tätig bin und auch mit Django arbeite, war dieses Projekt immer sehr interessant. Das was zu sehen ist, hat mich im Umfang und Funktionalität immer sehr beeindruckt. Das es bis heute noch nicht Veröffentlicht wurde finde ich zwar schade aber bei den oben genannten Punkten vollkommen verständlich. Wenn meine Zeit es zulassen würde, hätte ich mich schon länger als Entwickler beworben aber leider... :-/ Am meisten interessiert bin ich ja am Forum, da es scheinbar nichts vergleichbares gibt, was mit Django geschrieben wurde. Sollte alles irgendwann doch noch Open-Source werden, sehe ich sehr viel Potenzial in diesem Projekt. Wünsche dem Team jedenfalls weiterhin alles Gute dafür!!

Pascal18

Avatar von Pascal18
7 16. August 2014 01:27

Interessant einmal zu sehen was denn noch offen ist. HTML, CSS und ein bischen Javascript kann ich noch auch PHP, da ich aber selber noch eine Seite betreibe wäre die Zeit ein knackpunkt und daher ist es mir leider nicht möglich mitzuwirken ☹

redknight

Moderator & Supporter

Avatar von redknight
8 16. August 2014 08:39

@7: Es gibt ja auch "Einmalaufgaben" wie das Erstellen eines Templates 😉 Sobald das einmal steht, muss man dafür ja nicht mehr wirklich Zeit investieren.

Quassy

Avatar von Quassy
9 16. August 2014 10:20

Vor dem wirklichen Erstellen eines Templates mit HTML/CSS/JS wäre es ja auch denkbar einen Grafikdesign-Contest für das Webdesign abzuhalten, da würden dann allein Kenntnisse mit Grafiksoftware und etwas künstlerisches Talent ausreichen und man könnte eine Diskussion starten, wie sich potentielle Anwender das Design überhaupt vorstellen. Den grundlegenden Designprozess kann man ja eh wesentlich offener gestalten, da kaum Einblick in den eigentlichen Code benötigt wird.

Pascal18

Avatar von Pascal18
10 16. August 2014 10:37

@9 Finde ich eine gute Idee ☺

@8 Einmalige Aufgaben wären evtl. noch denkbar und ich würde sie auch sehr gerne übernehmen sofern möglich ☺

juifeng

11 16. August 2014 11:54

Super, vielen Dank für das Update!

Zum Thema "Template": Wäre es vielleicht eine Idee, das bisher wohl rudimentär vorhandene Standard-Template bereits unter BSD zu veröffentlichen? Wäre ja nur temporär, hier würde also tatsächlich ein tarball genügen. Dann könnte sich jeder, der meint, ausreichend Ahnung zu haben, daran austoben und das Webteam sucht sich dann die passenden Teile aus, falls welche entstehen. Ich z.B. habe zwar HTML/CSS/Javascript-Kenntnisse, die sind aber eher auf dem Stand von vor 5 Jahren oder so. Also dass man ein Layout nicht mehr über <table> aufzieht habe ich zwar noch mitbekommen, aber seitdem hat sich vermutlich bei CSS viel verändert, da sollte also dann jemand anderes mal drüber schauen. Dazu kommt, dass ich überhaupt nicht designen kann, nur fertige Designs in HTML "übersetzen" wenn es nach etwas aussehen soll. Mit Teamwork und anhand des Beispieltemplates könnte da vielleicht schon was brauchbares entstehen. Falls das Basistemplate noch nicht so weit gediehen ist, dass daraus ersichtlich wird, welche Variablen und django template tags auf der Seite untergebracht werden sollen, könnte man auch darüber nachdenken, das Ubuntuusers-Template zu "entkernen" (quasi durch sed oder ein Pythonscript jagen und alles, was nach HTML aussieht, rauswerfen), so dass nur noch die {}-Inhalte und evtl. der normale Text übrig bleiben, und das Ergebnis veröffentlichen. Wäre natürlich umständlicher für das unterbesetzte Team und die Ergebnisse werden wohl auch nicht so richtig einsatzfertig sein, weil die Verwendung der Variablen dann nicht so ganz klar ist.

Zum Thema Sicherheit: Das ist ein wichtiger Punkt und für mich sehr verständlich, dass ihr das vorher klären möchtet. Muss man Django gut kennen, um ein Review durchzuführen? Python habe ich zwar schon benutzt, aber nur für Kommandozeilentools. Natürlich könnte ich auch nicht versprechen, dass ich jeden Fehler finden würde. Wenn es aber darum geht, sicherzustellen, dass auf jeder relevanten "Django-Seite/Funktion/Methode/…" (entsprechend korrekten Ausdruck einsetzen) quasi ein "checkCredentials()" untergebracht ist, könnte ich wohl trotzdem durchschauen? Und wenn die "checkCredentials()" selbst auf Fehler untersucht werden soll, wäre ich wohl auch nicht vollkommen hilflos. Aber Security-Fachmann bin ich eben auch nicht. Falls die 2 zusätzlichen Augen helfen würden, wäre ich aber bereit da etwas Zeit zu investieren…

Die Suche ist dann wohl ein Thema, bei dem man Ahnung von Django und geeigneten Suchalgorithmen haben sollte, um die Datenbank sinnvoll zu verwenden. Da bin ich raus und wäre dafür, entweder mit einem relativ naiven Suchersatz (was man halt gerade auf die Beine stellen kann) oder ohne Ersatz zu veröffentlichen. Ein Inyoka ohne Suche ist besser als gar kein Inyoka für uns. ☺

encbladexp

Ehemaliger

Avatar von encbladexp
12 16. August 2014 15:06

Authentifizierung und Suche sind die komplexeren Themengebiete, dazu benötigt man viel Zeit sich in neues einzuarbeiten und man sollte schon die ganzen magischen Dinge an Python verstehen. Dazu gehören auch Bitmasken und der ganze schräge Kram aus der IT.

Das aktuelle Template zu veröffentlichen steht nicht zur Diskussion, es handelt sich dabei einfach um unsere CI (wenn man es so nennen will), und die möchten wir gerne behalten. Aktuell sind auch ständig Leute in #ubuntuusers-webteam, ist vielleicht einfacher als komplexere Dinge hier in den Kommentaren zu klären.

mfg Stefan Betz

axt

13 16. August 2014 15:10

@12:

Lagert doch die Diskussion in einen Thread im Forum aus!

juifeng

14 16. August 2014 15:23

Mit dem schrägen IT-Kram habe ich an sich keine Schwierigkeiten, aber halt keinerlei Erfahrung mit Django.. Vermutlich bin ich also ein wenig geeigneter Kandidat für Punkte 2 und 3.

Und mein Vorschlag für Punkt 1 bezog sich ja nicht auf das aktuelle Template, schon klar, dass das privat bleibt, sondern nur auf das im Artikel angesprochene Ersatz-"Veröffentlichungs"-Template, das wohl schon teilweise begonnen wurde. Falls das nicht als Arbeitsgrundlage ausreicht, dann nur eine automatisch aus dem Ubuntuusers-Template generierte Übersicht der jeweils auf einer Seite unterzubringenden Variablen (und wie diese in Schleifen und Bedingungen verpackt werden müssen, damit z.B. ein Forenthread korrekt angezeigt wird).

encbladexp

Ehemaliger

Avatar von encbladexp
15 16. August 2014 15:33

@14: Wir haben die Erfahrung gemacht das in dieser Größenordnung kaum noch sinnvoll am Template gearbeitet werden kann wenn man keine laufende Software vor sich hat. Abgesehen davon wäre es aber natürlich möglich ein OSS Template ab einem gewissen Entwicklungsstand für die Allgemeinheit getrennt von Inyoka freizuschalten. Das macht IMHO dann Sinn wenn man sich auf eine der vielen möglichen Techniken (Bootstrap vs. Foundation vs. …) geeinigt hat, ich geb das gerne mal weiter.

mfg Stefan Betz