Seit wir für UCS 3.0 die erste Cool Solution veröffentlicht haben, sind fast 10 Jahre vergangen: Am 25. November 2011 um 8:02 Uhr haben wir eine neue Seite im Univention-Wiki angelegt, welche die Cool Solutions für die verschiedenen Versionen von Univention Corporate Server sammelt. Seitdem ist viel passiert: Viele Anleitungen sind inzwischen auf Englisch und nicht länger auf Deutsch verfügbar, und im Univention-Forum gibt es eine eigene Abteilung für die Cool Solutions.
Auch hinter den Kulissen hat sich etwas getan: 2015 hat unser Professional Services-Team die Code-Verwaltung mit Subversion (SVN) durch Git ersetzt. Das verteilte Versionskontrollsystem Git war und ist für uns die richtige Wahl, und so lag es irgendwann nahe, die UCS-Entwicklung auch auf der GitHub-Plattform bereitzustellen. Auch die Cool Solutions haben nun seit November 2020 ihr eigenes GitHub-Repository.
Was genau bedeutet das für Sie? Und wie profitieren Sie von der Veröffentlichung unter GitHub? Dieser Artikel stellt unsere Cool Solutions vor, gibt eine kurze GitHub-Einführung und zeigt, wie Sie diese Plattform nutzen können, um selbst Änderungen und Erweiterungen für die Cool Solutions an uns zu übermitteln.
Was sind eigentlich Univention Cool Solutions?
Cool Solutions (auf Deutsch „coole Lösungen“) erweitern unsere Univention-Produkte. Eine Cool Solution kann ein HOWTO und damit einfach nur eine Beschreibung samt Tipps und Tricks sein. Genauso gut kann es sich aber um ein Skript oder eine komplexere Anwendung handeln, die wir häufig als fertiges Paket veröffentlichen. Die Lösungen ergänzen UCS also um sinnvolle und praktische Funktionen, die oft, aber nicht immer, im Rahmen von Kundenprojekten entstanden sind und von uns dokumentiert wurden.
Cool Solutions richten sich an technisch versierte Anwender*innen und Admins. Die Lösungen gehören nicht zum offiziellen Produktumfang und werden auch nicht in unseren Handbüchern beschrieben. Auch für die dazugehörigen Pakete aus dem gleichnamigen Repository gibt es keinen Support-Anspruch, und der Einsatz erfolgt auf eigene Verantwortung.
Unterstützung und Hilfe für die Cool Solutions
Was also können Sie tun, wenn Sie Fragen zu einer Cool Solution haben oder auf ein Problem mit einem Paket oder Skript stoßen? Ein guter Anlaufpunkt ist das bereits erwähnte Forum, das Sie unter https://help.univention.com/ erreichen. Hier diskutieren andere UCS-Nutzer, aber auch unsere Entwickler und Support-Mitarbeiter. Das Forum hat Such- und Filterfunktionen und wie erwähnt ein eigenes Board, das sich ausschließlich um die Cool Solutions dreht.
Tipp: Sollte die Community keine Antwort haben, oder sind Sie nicht sicher, ob eine Empfehlung zu Ihrer Infrastruktur passt, dann wenden Sie sich am besten an Ihren Ansprechpartner oder -partnerin aus unserem Professional-Services-Team.
Seit November 2020 stellen wir alle Cool Solutions unter GitHub bereit; das umfasst nicht nur den Quellcode, sondern auch Installationsbeschreibungen und Konfigurationsdateien. So kann die Community die Lösungen erweitern und verbessern, egal, ob Univention-Mitarbeiter, Kunde oder Partner. HOWTOs veröffentlichen wir in der entsprechenden Kategorie in unserem Forum; sie können ggf. um notwendige Pakete ergänzt werden.
GitHub kurz erklärt
GitHub ist eine Plattform zur Versionsverwaltung für Software-Entwicklungsprojekte, die 2008 vom gleichnamigen Unternehmen aus San Francisco gegründet wurde. Seit 2018 gehört GitHub zu Microsoft. Der Name verrät es eigentlich schon: Dreh- und Angelpunkt ist die Versionsverwaltung Git, die sich perfekt zum gemeinsamen Arbeiten an Software eignet. Auch das kollaborative Entwickeln komplexer Anwendungen mit Hunderten oder Tausenden von Entwicklern ist kein Problem.
GitHub ist das Zuhause vieler Open-Source-Projekte: Hier arbeiten Entwickler unter anderem an Ruby on Rails, jQuery und am Linux-Kernel. Auch Univention hat ein Repository auf GitHub, hierhin spiegeln wir die Entwicklung von UCS und UCS@school, verschiedene Connectoren und Client-Anwendungen. Alle Arbeitsschritte können sowohl mit Git (grafisch oder auf der Kommandozeile) oder über das GitHub-Webinterface erfolgen; zusätzlich gibt es Apps für Android und iOS. Die Registrierung eines GitHub-Accounts ist kostenlos; zusätzlich gibt es verschiedene Bezahlvarianten mit zusätzlichen Features, Extraspeicher und Support.
Kleines GitHub-Glossar
Begriff | Erklärung |
Repository/ Repo | Hier liegen sämtliche Dateien für ein Software-Projekt. Ein Repository ist eine Art Datenbank, die Informationen über die unterschiedlichen Versionen eines Projektes enthält; Git verwendet das Verzeichnis .git dafür. Unter GitHub gibt es öffentliche und private Repositorys, die nicht einsehbar für andere Nutzer sind. |
Clonen | Eine exakte Kopie des Repositories, die ein Entwickler anlegt, bevor er mit der Arbeit beginnt |
Branch | Ein Repository kann mehrere Versionen einer Software enthalten, etwa eine Testversion im Betastadium und eine stabile Ausgabe für den Produktiveinsatz. Jede Version stellt einen Branch („Ast“) innerhalb des Repos dar, die parallel weiterentwickelt werden können. |
Fork | Jeder kann einen solchen Ableger eines Repositorys erstellen, sofern die Lizenz der Software dies zulässt. Im eigenen Fork können Entwickler nach Belieben Änderungen vornehmen. Anschließend können sie entscheiden, ob sie die neue Version per Pull Request dem ursprünglichen Projekt zuführen oder eine eigenständige Variante verbreiten. |
Pull/ Pull Request | Wer eine neue Funktion implementiert oder einen Bug gefixt hat, kann eine Bitte an den Administrator (also den Verantwortlichen des Repos) schicken, diese Änderungen in den Code zu integrieren. Der Admin kann nach einem solchen Pull Request den Code prüfen und entscheiden, ob er den Pull durchführt oder nicht. |
Commit | So heißt das Einreichen einer neuen Version eines Branches. Nachdem also Entwickler etwas Neues fertiggestellt haben, übermitteln sie diese Änderungen in einem Commit. Zusätzlich beschreibt eine kurze Commit-Meldung, was geändert wurde. |
Merge | So heißt das Übernehmen von Änderungen aus einem anderen Branch. In der Regel kann die Versionsverwaltung das automatisch erledigen; entsteht ein Konflikt, ist das manuelle Eingreifen eines Admins erforderlich. |
Wenn Sie Ihre eigenen Ideen einbringen möchten, reichen Sie am besten einen Pull Request ein. Beachten Sie bitte, dass wir folgende Kriterien für die Implementierung festlegen:
- Es darf kein Fork eines bestehenden Produktpaketes sein.
- Es dürfen nur stabile APIs eines Produktes verwendet werden.
- Wenn eine Änderung der Konfiguration enthalten ist, die zukünftige Updates gefährden könnte, muss das klar in der Dokumentation gekennzeichnet sein.
Aktuell führen wir die Code-Änderungen von Hand durch – wir planen aber, einen Automatismus zu etablieren, der die Pakete automatisch prüft, baut, testet und freigibt.
Kein Support, aber eine prima Wissenssammlung
Auch wenn die Cool Solutions nicht offiziell unterstützt werden und es keinen Support-Anspruch gibt, sind die Erweiterungen einen Blick wert. Nutzen Sie gerne das Forum, um sich mit anderen auszutauschen. Wenn Sie Ihre eigenen Tipps und Tricks einbringen möchten, dann ist unser GitHub-Repository der beste Weg. Welche Erfahrungen haben Sie mit den Cool Solutions gesammelt? Ich freue mich auf Ihr Feedback!