Aus der Redaktion

Verstärken Sie unsere Software­­entwicklung

Wir suchen eine hoch spezialisierte Person, die unser Team ergänzt. Und uns hilft, die Republik und ihre Software zu optimieren, zu verbessern und zum Glänzen zu bringen.

Von Anna Traussnig, Patrick Recher, Patrick Venetz und Thomas Preusse, 29.04.2020, Update: 04.05.2020

Journalismus kostet. Dass Sie diesen Beitrag trotzdem lesen können, verdanken Sie den rund 27’000 Leserinnen, die die Republik schon finanzieren. Wenn auch Sie unabhängigen Journalismus möglich machen wollen: Kommen Sie an Bord!

Die Republik ist ein digitales Magazin. Sie aufzubauen, heisst auch: sie zu programmieren. Stück für Stück haben wir ein System entwickelt, um die Republik zu etablieren, zu finanzieren und täglich zu publizieren. Wir haben ein grosses Crowdfunding lanciert, Konzepte erstellt und Codes geschrieben, alles Open Source. Soeben haben wir die grösste Kampagne seit dem Start der Publikation erfolgreich absolviert. Und lernen dabei immer dazu.

Heute sind insgesamt 40 Personen bei der Republik angestellt, die sich 30,4 Vollzeit­stellen teilen. Das IT-Team besteht zurzeit aus 4 Mitarbeitenden und ist damit unterbesetzt. Eine Person hat soeben auf Anfang Juni zugesagt – eine zweite suchen wir noch. Mehr dazu später.

Wie die Republik gebaut ist

Von Anfang an war klar, dass wir grösst­mögliche Kontrolle über die Software wollten. Das heisst, wir wollten weder fixfertige Lösungen einkaufen noch uns von einem Dienst­leister vollständig abhängig machen. Deshalb haben wir auf Open-Source-Software gesetzt, frei verfügbare Bausteine ausgewählt und damit eine einzigartige Republik gebaut.

Ich will es genau wissen: Unsere wichtigsten Bausteine

  • JavaScript, die Programmier­sprache des Web­browsers und seit 2009 auch gut einsetzbar für Web­server mit node.js. Dass wir vor allem auf eine Programmier­sprache setzen, gestaltet die Zusammen­arbeit im Team besonders einfach.

  • React, ein Grund­gerüst für User-Interface-Komponenten. Die von Facebook entwickelte Software­bibliothek ist seit 2013 Open Source und ermöglicht es uns, schnell moderne Benutzer­oberflächen zu implementieren.

  • Next.js, das React-Framework für Web­seiten. Es löst komplexe Probleme wie Server-Side Rendering, Routing und Code Splitting auf erfreulich einfache Art.

  • GraphQL, eine moderne Abfrage­sprache, welche eine effiziente und einfache Kommunikation zwischen Front-End und Back-End ermöglicht.

  • Apollo, eine Sammlung von Software­bibliotheken, welche GraphQL in JavaScript fürs Back-End und fürs Front-End implementieren.

  • PostgreSQL, das Herzstück, in dem die meisten Daten abgespeichert werden. Die Soft­ware wird seit 1996 stetig weiter­entwickelt und ist schlicht und einfach die coolste SQL-Datenbank. Wir nutzen sie ganz klassisch mit Transactions und Referential Integrity sowie MongoDB-Style mit JSON-Feldern.

  • ElasticSearch, darin indexieren wir alle Dokumente und Daten, um diese auf Anfrage schnell zu finden und auszuliefern.

  • Git, die Versions­verwaltungs-Software, mit der wir unseren Code sowie alle Republik-Beiträge verwalten. Sie erlaubt es uns, alle Arbeits­schritte sauber zu speichern und nachzuvollziehen

  • Slate, ein React-Framework, um Web-Editoren zu bauen.

Das Kernprinzip: Alles, was wir verwenden, muss Open Source sein. Damit bewahren wir unsere Gestaltungs­freiheit und Unabhängigkeit. Manche Open-Source-Projekte unterstützen wir auch, finanziell zum Beispiel React-pdf – damit generieren wir die PDFs der Beiträge.

Gleichzeitig sind wir pragmatisch: Für die Versions­verwaltungs-Software Git nutzen wir das proprietäre GitHub, welches die Infra­struktur skalierbar und kosten­günstig betreibt. Unser grosses E-Mail-Volumen bewältigen wir mit MailChimp und Mandrill. Und für eine eigene Bank hatten wir auch noch keine Zeit – die Zahlungen werden von Stripe, Postfinance und PayPal verarbeitet.

Die Back-Ends

Hinweis für Laien: Ein Back-End ist ein Server, der im Hintergrund agiert. In unserem Fall ist er zuständig für die sichere und effiziente Verarbeitung von Daten.

Unser Monorepo orbiting/backends besteht aus rund 63’000 Zeilen Code und wird in drei Varianten betrieben: Republik-Back-End, Publikator-Back-End und Assets-Back-End. Kern­kompetenzen: alles für republik.ch, Dokumenten­verarbeitung und Bild­verarbeitung.

Eine API-Abfrage für einen Beitrag.

Mitten in der Nacht – wenn fast nichts läuft – bedeutet das für das Republik-Back-End 5 Anfragen pro Sekunde. Der Höhepunkt beträgt an einem regulären Tag 20 bis 50 Anfragen pro Sekunde. Geht wirklich die Post ab, haben wir schon Spitzen von 500 bis 800 Anfragen pro Sekunde gemessen.

Viel essenzieller als die absoluten Anfrage­spitzen ist jedoch die Verarbeitung der Kunden­daten und Zahlungen. Bereits 2017 hat das Back-End 3,7 Millionen Franken verarbeitet, vergangenes Jahr waren es 4,7 Millionen, und langfristig sollen es mindestens 5,9 Millionen pro Jahr werden, um die Republik selbst­tragend zu finanzieren.

Die Front-Ends

Hinweis für Laien: Ein Front-End ist zuständig für das, was Sie am Bild­schirm sehen. Aus den Daten von einem Back-End baut es eine bedienbare Oberfläche.

«Ein Interface, das so vollkommen unauffällig funktionieren soll wie in einem englischen Schloss der Butler», so beschrieb Constantin Seibt 2017 seinen Anspruch an das Front-End.

Unser grösstes Front-End ist orbiting/republik-frontend mit rund 66’000 Zeilen Code. Dazu kommen publikator-frontend mit 23’000 und republik-admin-frontend mit 10’000 Zeilen Code. Kern­kompetenzen: alles für republik.ch, Dokumenten­editor und Kunden­verwaltung.

Startseite für die Öffentlichkeit.
Unser Editor «Publikator».
Die Kunden­verwaltung.

Alle drei halten sich an unseren Living Style Guide orbiting/styleguide. Seit März 2017 entwickeln wir einen eigenen Styleguide mit 31’000 Zeilen Code und implementieren alle essenziellen Elemente unserer Webseiten als React-Komponenten. Vom einfachen Eingabefeld bis zur Visualisierung von Europa als Choroplethenkarte. Aktuelle Version: 9.15.0 – die 461. Version.

Unser Prozess

Vor dem Start der Republik im Januar 2018 hat sich die gesamte Belegschaft – damals 10 Personen – jeweils am Dienstag in einem Raum versammelt und alles ausdiskutiert, bis Konsens herrschte.

Heute, mit einer wesentlich grösseren Belegschaft, fahren wir mehrspurig:

  • der Initiativen-Prozess, wenn gerade keine grosse Kampagne läuft: Hier kann die gesamte Belegschaft quartals­weise Initiativen einreichen. Beispiel: «Wir sollten die Such­funktion verbessern.» Die Initiativen werden anschliessend eingeschätzt und in einem repräsentativen Gremium besprochen und priorisiert.

  • Teilnahme am Redaktions­prozess: Auch die Mitglieder des IT-Teams verfassen redaktionelle Beiträge. Wir bringen unsere Kompetenzen und Fähigkeiten ein und tragen zum Inhalt des Magazins aktiv bei. Gleichzeitig schärfen wir damit unser Verständnis für das Produkt und für den Journalismus.

Dazu kommt eine ausgiebigere wöchentliche Sitzung des Software-Teams. Technisch steht der Pull Request im Zentrum, dazu kommen GitHub Issues und die Pflege eines Trello Boards. Unsere Prozesse sind kein Selbst­zweck – wir versuchen sie stetig zu verbessern sowie neuen Gegeben­heiten und Möglichkeiten anzupassen.

Wo der Schuh drückt

Im Moment ist das IT-Team mit 4 Personen unterbesetzt – wir möchten um 2 Personen wachsen. Einmal im Front-End und einmal im Back-End. Für das Front-End haben wir bereits jemanden gefunden. Wir freuen uns, diesen Neuzugang bald kommunizieren zu können.

Jetzt suchen wir vor allem noch eine Person für das Back-End. Das folgende Profil soll aber fliessend verstanden werden. Wichtig sind ein Interesse an und Erfahrung mit der bereits eingesetzten Technologie und natürlich die Motivation für die Republik.

Im Back-End beim Mitgliedschaftsmodell
Das heutige Modell läuft, aber wir haben inzwischen viel dazugelernt und wollen noch besser und flexibler werden. Die heutigen Abstraktionen stammen grösstenteils aus dem Crowd­funding von 2017 und benötigen inzwischen eine Revision. Zum Beispiel für Up- und Downgrades oder auch potenzielle Services-Features wie Abo-Pausierungen. Ausserdem stehen Erweiterungen im Zahlungs­modell an – zum Beispiel ein weiterer Zahlungs­anbieter für Monatsabos.

Idealprofil: Feuer und Flamme für die kniffligen Details eines Mitgliedschafts­modells, für den Journalismus und die Republik. Erfahrung mit node.js und PostgreSQL. Ein Herz für den Einzelfall und für die Privat­sphäre unserer Verlegerinnen und Besucher. Und gute kommunikative Fähigkeiten, um mit dem Community-Support und der Finanz­abteilung die richtigen Lösungen zu erarbeiten.

Was wir bieten

Haben wir Ihr Interesse geweckt?
Schreiben Sie uns eine E-Mail an bewerbung@republik.ch, oder schicken Sie uns einen Pull Request und beweisen Sie uns Ihre Motivation und Ihre Fähigkeiten.

Wichtige Links

Wenn Sie weiterhin unabhängigen Journalismus wie diesen lesen wollen, handeln Sie jetzt: Kommen Sie an Bord!