Open Source: Eine Erfolgsgeschichte

von Manuel am 16.12.2018 um 20:05 Uhr

Willkommen zurück! Bevor wir in ein paar Beiträgen mit den richtig technischen Themen beginnen, will ich noch ein paar allgemeine Themen behandeln. Das erste davon ist das Thema Open Source. Natürlich nicht ganz ohne Hintergedanken, denn viele Beiträge auf Next Direction werden in irgendeiner Weise damit zu tun haben. Ich werde immer wieder Bibliotheken und Frameworks vorstellen, die aus der Open Source Szene stammen. Auch für die Entwicklung eigener Projekte, die ich vorstellen möchte, verwende ich oft frei verfügbare Programme.

Definition Open Source
Unter Open Source Software verstehe ich Software, deren Quellcode von jedem eingesehen werden kann. Sehr oft wird dieser auf Plattformen wie GitHub oder GitLab veröffentlicht. Mit Open Source verbinden viele auch das Wort kostenlos, was in den meisten Fällen natürlich uneingeschränkt gilt.

Die nächsten Abschnitte möchte ich dazu nutzen, verschiedene Aspekte der Open Source Szene zu beleuchten und auch Vor- und Nachteile davon möchte ich euch natürlich nicht verschweigen.

Rückblick

Gerade in der heutigen Zeit nimmt Open Source Software einen hohen Stellenwert ein. Es gibt eine große Anzahl hochqualitativer Software, die frei und in diesem Fall auch kostenlos verfügbar ist. Wenn man zurück in die Vergangenheit blickt, dann ist für mich das prominenteste Beispiel nach wie vor Linux. Ein Betriebssystem, das von Anfang an mit dem Gedanken der Quelloffenheit entwickelt wurde und bis Heute wird.
Unter dem Begriff Linux verstehen unterschiedliche Leute oft unterschiedliche Dinge. Für mich ist Linux im wesentlichen der Kern des Betriebssystems welcher gemeinhin auch als Kernel bezeichnet wird. Auf diesem Kern aufbauend, entwickeln dann viele Communities und auch Firmen ihre Derivate wie Debian oder Ubuntu.
Obwohl uns Linux schon einige Jahrzehnte begleitet, hat es sich bisher zumindest auf Desktop Systemen immer noch nicht so richtig durchsetzen können. Wenn man MacOS als UNIX Derivat dazurechnen will, dann findet man aber doch eine respektable Verbreitung vor.
Anders sieht das ganze auf Servern aus, hier stellt Linux wohl den Löwenanteil. Das lässt sich vorallem darauf zurückführen, dass auf Servern oft keine grafischen Oberflächen nötig sind und diese Systeme daher extrem niedrige Anforderungen an die verwendete Hardware haben. Auch hohe Lizenzkosten wie bei anderen Plattformen üblich gibt es hier nicht.

Es gibt natürlich noch andere prominente Vertreter, die uns schon viele Jahre begleiten. Beispiele die mir spontan einfallen sind Open- bzw. LibreOffice und Gimp, ein freies Programm zum Bearbeiten von Grafiken.

Open Source heute

In der heutigen Zeit gibt es kaum noch Softwarearten, die ohne starke Konkurrenz aus dem Open Source Lager auskommen. Egal ob die bereits angesprochenen Betriebssysteme, Textbearbeitungen, Tabellenkalkulationen oder auch Entwicklungsumgebungen, überall könnte ich Beispiele nennen.

Vorallem in den letzten Jahren haben sich dann auch große Konzerne zu einem Strategiewechsel entschieden und sind mittlerweile aktiv an bestehenden Projekten beteiligt oder haben sogar eigene Open Source Anwendungen auf den Markt geworfen.
Allen voran möchte ich hier als erstes Google nennen. Viele mögen die Dominanz des Suchmaschinenherstellers verfluchen, aber wo wäre das Internet ohne die Firma aus Mountain View wenn wir an Android im mobilen Markt oder Chromium im Browsermarkt denken? Wir werden es wohl nie erfahren.
Ich bewundere in den letzten Jahren auch die Offenheit, die Microsoft mittlerweile an den Tag legt. Zuerst wird das Mono Projekt kurz vor dem Aus doch noch gerettet, dann wird eine extrem stabile und flexible Entwicklungsumgebung wie Visual Studio Code für die Allgemeinheit zur Verfügung gestellt und in jüngster Zeit erstaunte mich die Nachricht, auch den eigenen Browser auf eine Open Source Rendering Engine umstellen zu wollen. Dem letzten Punkt werde ich aufgrund der weitreichenden Folgen später noch einen eigenen Beitrag widmen.

Oft entstehen Open Source Projekte heute aus der eigenen Notwendigkeit. Immer mehr Firmen entwickeln für eigene Anforderungen Software, die dann glücklicherweise der Community zur Verfügung gestellt wird. Diese nimmt das Geschenk oft dankend an und hilft fortan bei der Weiterentwicklung oder bringt gute Vorschläge wie die Programme sinnvoll ergänzt werden können. Meiner Meinung nach haben Projekte, die eine Schnittstelle zur Pluginprogrammierung anbieten, in den letzten Jahren die steilsten Aufstiege hingelegt.
Ich möchte hier auch alle ermutigen, die sich selbst nicht als eingefleischte Entwickler bezeichnen. Viele Projekte benötigen anderweitig Hilfe bei Dokumentationen oder auch Übersetzungen. Natürlich sehen viele Projektverantwortliche auch gerne Verbesserungsvorschläge die dann oft aufgenommen und umgesetzt werden.

Neben den eigentlichen Anwendungen gibt es aber auch sehr viele Frameworks, die überwiegend als Open Source Software entwickelt werden und damit als Basis für die eigene Software oder Webanwendung verwendet werden können. Es gibt sogar ganze Plattformen die auf Frameworks basieren und selbst wiederum als Basis für weitere Projekte dienen. Mehr dazu werde ich in einem künftigen Beitrag erzählen.

Monetarisierung

Falls ihr euch jetzt fragt, wie man mit frei verfügbarer Software trotzdem Geld verdienen kann, seid ihr hier genau richtig. Ich werde exemplarisch drei Wege aufzeigen, die mir spontan eingefallen sind und die sich in der Vergangenheit auch bereits bewährt haben.

Supportverträge

Viele Firmen spezialisieren sich darauf, die Einrichtung und Betreuung von Open Source Software für ihre Kunden zu übernehmen. Teilweise bieten die Hersteller aber auch selbst solche Dienste in Form von SaaS an. Oft gibt es dabei auch kostenpflichtige Zusatzfunktionen, was meist als Freemium Modell bezeichnet wird. Es gibt also die Grundversion, die Open Source ist und zusätzliche Plugins, die einen Mehrwert bieten gegen Aufpreis dazu. Meist werden diese Veträge dann monatlich oder jährlich abgerechnet/verlängert. Somit haben solche Firmen bzw. Hersteller eine gewisse Planungssicherheit.
Ein mir bekannter Vertreter dieser Zunft ist vtiger CRM.

Softwareagenturen

Ein weiteres Modell, welches auf Open Source setzt, sind Agenturen, die Anpassungen an Open Source Software vornehmen, um diese Systeme an die Bedürfnisse ihrer Kunden anzupassen. Ein sehr bekannter Kandidat, den Kunden oft über Agenturen anpassen und dann auch verwalten lassen ist Typo3, ein frei verfügbares CMS, das eher kompliziert einzurichten ist. Vor einigen Jahren sind solche Agenturen wie Pilze aus dem Boden gesprießt.

App Stores und Provisionen

Eine weitere Möglichkeit bietet sich an, wenn man ein System entwickelt, das durch Plugins erweiterbar ist. Der Hersteller kann in diesem Fall einen App Store anbieten und in seine Anwendung integrieren. Jeder Verkauf eines kostenpflichtigen Plugins spült dann Geld in die Kassen des Unternehmens. Das ist auch die Haupteinnahmequelle von Google bei Android.

Vorteile von Open Source

Kommen wir nun zu den Vorteilen von Open Source. Ich habe in meinen bisherigen Ausführungen bereits ein paar Punkte kurz angeschnitten. Im Folgenden nun ein paar ausführlichere Worte zu den wichtigsten Vorteilen freier Software.

Lebhafte Community

Es gibt viele Projekte, die eine rege Beteiligung vorweisen können. Es muss nicht immer die Schar an Entwicklern sein, die ein Projekt voran bringt. Auch wenn viele Leute ein Projekt in ihren eigenen Anwendungen verwenden, bringt das z.B. ein zugrunde liegendes Framework weiter, da es immer stabiler wird, mit jeder Version die veröffentlicht wird. Viele Projekte sind auch für Hilfe außerhalb der Entwicklungstätigkeiten dankbar, beispielsweise für Dokumentationen oder Übersetzungen in andere Sprachen. Wenn ihr euch zutraut, bei einem Projekt mitzuarbeiten, schaut am besten mal die Liste der offenen Tickets auf GitHub durch. Viele größere Projekte markieren manchmal auch Tickets, die für Einsteiger in ein Projekt geeignet sind.

Anpassbar

Ein Argument, das auch immer wieder weit vorne angeführt wird, wenn es um freie Software geht, ist die Anpassbarkeit an die eigenen Bedürfnisse. Auch wenn ich immer noch überzeugt bin, dass die wenigsten Firmen wirklich viel am bestehenden Code verändern, bietet sich Unternehmen mit eigenen Entwicklern die Möglichkeit dazu. Bei manchen Projekten ist das einfacher umzusetzen, weil die Macher etwa auf saubere Schnittstellen achten. Andere wiederum sind schwieriger anzupassen und darunter leidet oft auch die Updatefähigkeit wenn neue Versionen veröffentlicht werden. Es lohnt sich daher bevor man mit eigenen Anwendungen startet, ein paar Vergleiche des Codes anzustellen und auch die Dokumentation hilft hier oft schon weiter.

Viele gute Ideen

Wo viele Menschen zusammen kommen, entsteht auch Raum für großartige Ideen. Auch hier kann jeder einzelne einen Beitrag zu seinem auserwählten Projekt leisten. Wenn ihr euch denkt, dass eine Funktion fehlt oder eine weitere Aktion hier und da den Ablauf vereinfachen würde, scheut euch nicht davor ein Ticket bei den Entwicklern einzureichen. Meist wird das sehr positiv aufgenommen und es starten meist ausführliche Diskussionen über Pro und Kontra einer Idee und der möglichen Umsetzungen. Denkt aber auch daran, vorher die Suche zu nutzen, vielleicht hatte jemand schon einmal eine ähnliche Idee und die wurde aus bestimmten Gründen nicht umgesetzt oder auf später verschoben.

Kostenlos für Anwender

Für viele Endanwender ist gerade dieser Punkt mit Sicherheit einer der wichtigsten. Ich habe ihn bewusst weiter hinten in der Liste angeführt, da für mich dieser Fakt nicht so entscheidend ist wie für manch anderen. Ich bin durchaus auch bereit, ein paar Euro zu investieren, wenn ich von einem Projekt überzeugt bin. Ein gutes Beispiel dafür ist FontAwesome. Als Open Source Projekt gestartet, bietet es mittlerweile die Möglichkeit für 60$ eine Pro Version zu erwerben, die wirklich ihr Geld wert ist. Auch schadet es in diesem Fall der Weiterentwicklung wohl nicht und ihr könnt sicher sein, dass es noch einige Zeit rumgeistern wird. Mehr dazu gibt es auch gleich in meinen Ausführungen zu den Nachteilen.

Potentiell sicherer

Weil viele Entwickler rund um den Globus sich den Quellcode der Software anschauen können, ist die Wahrscheinlichkeit sehr hoch, dass nur sehr selten klaffende Lücken im Code zurückbleiben. Und auch wenn dies mal der Fall sein sollte, wie kürzlich mit einem weit verbreiteten Node.js Paket, bekommt man alle wichtigen Informationen um darauf reagieren zu können.

Nachteile von Open Source

Wo Licht ist, ist auch Schatten. Natürlich gibt es auch bei Open Source gewisse Nachteile, die man nicht außer Acht lassen sollte. Ich habe hier einige zusammengestellt, die ich teilweise auch persönlich schon erfahren musste.

Verweiste Projekte

Einer meiner wichtigsten Kritikpunkte an freier Software ist die Tatsache, dass vor allem oft kleinere Projekte vor sich hin dümpeln, bis der Hauptentwickler entweder keine Lust oder aber auch keine Zeit mehr dafür hat. Ein guter Anhaltspunkt um hier einigermaßen auf der sicheren Seite zu sein, ist die Aktivität auf GitHub. Viele Projekte werden dort gehostet und man sieht anhand der Releasefrequenzen und dem Verhältnis von offenen zu geschlossenen Tickets sehr häufig, wie eine Software gepflegt wird. In den seltensten Fällen ist ein Projekt noch aktiv, wenn seit zwei oder drei Jahren nichts mehr passiert ist oder aber fünfmal so viele Tickets offen als geschlossen sind.

Lizenzprobleme

Leider ist gerade in der Open Source Szene ein ziemlich undurchsichtiger Dschungel an möglichen Lizenzen für die einzelnen Projekte entstanden. Sehr häufig gibt es auch Rechtsstreitigkeiten über die Verwendung von freier Software in bestimmten Anwendungen. Dazu kommt, dass manche der verfügbaren Lizenzen oft inkompatibel sind. Ich für meinen Teil werde alles was ich veröffentliche unter die MIT Lizenz stellen. Diese bietet für mich und euch die meisten Freiheiten und darum geht es mir ja, wenn ich Software für die Allgemeinheit zur Verfügung stellen möchte.

Falsche Pferde

Gerade wenn ein Hype neu aufkommt und viele Projekte ihn aufgreifen, kann es natürlich sein, dass man von Anfang an dabei sein will und man auf das falsche Pferd setzt. Oft ist es dann während der eigenen Entwicklung sehr aufwendig die verwendete Software auszutauschen. Hier hilft es meist, den Ansturm zu Beginn abzuwarten und sich erst dann für eine Umsetzung zu entscheiden, wenn sich herauskristallisiert, wer sich durchsetzen wird. Man kann die Zeit häufig nutzen, um die eigenen Ideen weiter auszudefinieren. Damit kann man auch sicherstellen, dass die eigene Idee nicht nach hinten los geht.

Uneinigkeiten

In der Vergangenheit ist es immer wieder passiert, dass sich die Verantwortlichen eines Projekts nicht ganz einig sind über den weiteren Kurs ihres Projekts. Prominente Vertreter waren z.B. Node.js, Open- und LibreOffice oder auch MySQL und MariaDB. Während die letztgenannten zu den wenigen Ausnahmen gehören, ist es häuft so, dass eines der beiden Projekte auf der Strecke bleibt und die Entwicklung stark unter der Auseinandersetzung leidet.

Schwierigere Monetarisierung

Diesen Punkt möchte ich der Vollständigkeit halber erwähnen. Ich habe ja bereits ausführlich über mögliche Wege, um mit freier Software Geld zu verdienen, gesprochen. Mit Spannung werde ich jedenfalls verfolgen, wie sich ExpressionEngine (die Software hinter diesem Blog) entwickeln wird, nachdem es mit der aktuellen Version zur Open Source Schiene gewechselt ist.

Potentiell gefährdet

Natürlich kann die Offenheit des Quellcodes auch Bösewichte anlocken, die versuchen ein Projekt zu kompromittieren. Gerade deshalb ist der Zusammenhalt der Community auch so wichtig. Zusammen sind wir stark!

Fazit

Open Source Software hat einen langen Weg hinter sich und hoffentlich auch vor sich. Ich bin aber davon überzeugt, dass eher mehr als weniger Projekte in Zukunft auf Open Source setzen werden. Ich bin jedenfalls dabei und werde auch meine Entwicklung soweit es mir möglich ist unter einer freien Lizenz veröffentlichen. Ich hoffe ich konnte euch einen kleinen Einblick geben und wünsche mir das sich der ein oder andere nach dem Lesen nun dazu entscheidet, auch an einem Projekt mitzuarbeiten.

Nun will ich euch aber nicht länger aufhalten. Wir lesen uns dann im nächsten Beitrag.