Donnerstag, 29. Oktober 2015

Open Source

LibreOffice hatte ich ja schon vorgestellt, und zwar u.a. hier LibreOffice und hier Sparen. Und ich hatte vorgeschlagen, daß sich die politischen Parteien in dieser Stadt damit beschäftigen sollten.

LibreOffice fällt in die Kategorie Open Source, und zu diesem Begriff möchte ich hier einiges schreiben und Beispiele für solche Projekte angeben. Und unweigerlich werde ich dabei am Ende zum Thema Auto kommen, man vergleicht ja gerne die IT mit Autos.

Der Begriff Open Source steht für offene Quellen. Bei Software bedeutet dies, daß man sich das Programm (=die Quelle) holen und anschauen kann, ohne dafür eine Genehmigung oder sonst irgendetwas einholen zu müssen. Und natürlich kann man diese Quellen auch ändern, wenn man dies will. Ich erschrecke Sie mal: am Beispiel LibreOffice sehen die Quellen so aus (ist nur ein kleiner Ausschnitt):
Quelle: http://opengrok.libreoffice.org/xref/core/onlineupdate/source/libmar/tool/mar.c#122
      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4  * License, v. 2.0. If a copy of the MPL was not distributed with this
      5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include <stdio.h>
      8 #include <stdlib.h>
      9 #include <string.h>
     10 #include "mar.h"
     11 #include "mar_cmdline.h"
     12 
     13 #ifdef WNT
     14 #include <windows.h>
     15 #include <direct.h>
     16 #define chdir _chdir
     17 #else
     18 #include <unistd.h>
     19 #endif
     20 
     21 #define MOZ_APP_VERSION "5" /* Dummy value; replace or remove in the
     22                                future */
     23 #define MAR_CHANNEL_ID "LOOnlineUpdater" /* Dummy value; replace or
     24                                             remove in the future */
     25 
     26 #if !defined(NO_SIGN_VERIFY) && (!defined(WNT) || defined(MAR_NSS))
     27 #include "cert.h"
     28 #include "pk11pub.h"
     29 int NSSInitCryptoContext(const char *NSSConfigDir);
     30 #endif
     31 
     32 int mar_repackage_and_sign(const char *NSSConfigDir,
     33                            const char * const *certNames,
     34                            uint32_t certCount,
     35                            const char *src,
     36                            const char * dest);
     37 
     38 static void print_version(void) {
     39   printf("Version: %s\n", MOZ_APP_VERSION);
     40   printf("Default Channel ID: %s\n", MAR_CHANNEL_ID);
     41 }
     42 
     43 static void print_usage(void) {
     44   printf("usage:\n");
     45   printf("Create a MAR file:\n");
     46   printf("  mar [-H MARChannelID] [-V ProductVersion] [-C workingDir] "
     47          "-c archive.mar [files...]\n");
     48 
     49   printf("Extract a MAR file:\n");
     50   printf("  mar [-C workingDir] -x archive.mar\n");
     51 #ifndef NO_SIGN_VERIFY
     52   printf("Sign a MAR file:\n");
     53   printf("  mar [-C workingDir] -d NSSConfigDir -n certname -s "
     54          "archive.mar out_signed_archive.mar\n");
     55 
     56   printf("Strip a MAR signature:\n");
     57   printf("  mar [-C workingDir] -r "
     58          "signed_input_archive.mar output_archive.mar\n");
     59 
     60   printf("Extract a MAR signature:\n");
     61   printf("  mar [-C workingDir] -n(i) -X "
     62          "signed_input_archive.mar base_64_encoded_signature_file\n");
     63 
     64   printf("Import a MAR signature:\n");
     65   printf("  mar [-C workingDir] -n(i) -I "
     66          "signed_input_archive.mar base_64_encoded_signature_file "
     67          "changed_signed_output.mar\n");
     68   printf("(i) is the index of the certificate to extract\n");
     69 #if defined(MACOSX) || (defined(WNT) && !defined(MAR_NSS))
     70   printf("Verify a MAR file:\n");
     71   printf("  mar [-C workingDir] -D DERFilePath -v signed_archive.mar\n");
     72   printf("At most %d signature certificate DER files are specified by "
     73          "-D0 DERFilePath1 -D1 DERFilePath2, ...\n", MAX_SIGNATURES);
     74 #else
     75   printf("Verify a MAR file:\n");
     76   printf("  mar [-C workingDir] -d NSSConfigDir -n certname "
     77          "-v signed_archive.mar\n");
     78   printf("At most %d signature certificate names are specified by "
     79          "-n0 certName -n1 certName2, ...\n", MAX_SIGNATURES);
     80 #endif
     81   printf("At most %d verification certificate names are specified by "
     82          "-n0 certName -n1 certName2, ...\n", MAX_SIGNATURES);
     83 #endif
     84   printf("Print information on a MAR file:\n");
     85   printf("  mar -t archive.mar\n");
     86 
     87   printf("Print detailed information on a MAR file including signatures:\n");
     88   printf("  mar -T archive.mar\n");
     89 
     90   printf("Refresh the product information block of a MAR file:\n");
     91   printf("  mar [-H MARChannelID] [-V ProductVersion] [-C workingDir] "
     92          "-i unsigned_archive_to_refresh.mar\n");
     93 
     94   printf("Print executable version:\n");
     95   printf("  mar --version\n");
     96   printf("This program does not handle unicode file paths properly\n");
     97 }
     98 
Sie finden, daß dies verrückt aussieht? Da stimme ich Ihnen zu. Es erfordert etliche Monate Einarbeitungszeit, bis man ein Programm mit dem Umfang von LibreOffice versteht. Aber das müssen Sie ja nicht machen. Es ist jedoch ein Zeichen des Vertrauens, daß die Entwickler des Programms jedermann in das Programm hineinsehen lassen und zwar jederzeit und ohne eine Genehmigung. So werden Fehler leichter gefunden und es ist schwierig, in diesem Programmcode Schweinereien1) zu verstecken. Das Gegenstück zu Open Source ist die geschlossene Software, sogenannte proprietäre Software. Dort werden die Quellen eines Programms als Firmengeheimnis betrachtet und die Weitergabe dieser Quellen ist eine strafbare Handlung. MS Office ist ein solches Produkt, und dort sehen die Quellen des Programms vermutlich ähnlich wie im Kasten dargestellt aus, aber da ist der Programmcode geheim und somit kann kein Externer reinschauen.

Open Source-Projekte leben von der Beteiligung von Freiwilligen, aber nicht nur von diesen, es gibt auch Projekte, in denen die Entwickler für diese Arbeit bezahlt werden und dies hauptberuflich machen. Ich will in diesem Text einige Beispiele für Projekte au dem Bereich Open Source geben, nicht nur solche aus dem Software-Bereich. Und meine Aussage lautet: Open Source ist keine Spielwiese von ein paar Bastlern und Programmierern, abwertend Nerds genannt. Open Source hat eine wirtschaftliche Bedeutung. Mit meinen Beispielen will ich zeigen, welche Bedeutung diese Open Source-Projekte haben. Und ich fange mal mit einem Projekt an, das nichts mit Software und Programmieren zu tun hat2).

Beispiel 1: Wikipedia

Die Wikipedia kennen Sie sicherlich, falls nicht, schauen Sie sich das doch mal an. Eine Enzyklopädie des Wissens, wie man es früher im Bücherregal stehen hatte. Nun, an der Wikipedia fehlt die Goldprägung und der feine Einband, aber dafür ist diese Enzyklopädie kostenlos nutzbar und auch aktueller, da die Texte auf einem Computer liegen und leichter geändert werden kann als ein Buch im Bücherregal. Und damit komme ich zu einem Vorteil und einem Nachteil dieses Projekts.

Vorteil: die Texte können leicht geändert werden, und zwar von jeder beliebigen Person. Sofern Sie Wissen auf einem bestimmten Gebiet haben und Sie dieses Gebiet nicht in der Wikipedia finden, dann schreiben Sie doch bitte Ihr Wissen in einen entsprechenden Artikel und tragen diesen in der Wikipedia ein.

Nachteil: die Texte können leicht geändert werden. Also wenn Sie dort einen Artikel eingestellt haben und jemand ist mit Ihrer Meinung nicht einverstanden, dann kann dieser jemand hingehen und Ihren Artikel ändern. Das kann eine Verbesserung sein, aber auch eine Verschlechterung. Das kann aber auch Vandalismus sein, manchen Menschen machen solche Sachen ja Spaß3). Und es gibt Firmen, die als Dienstleistung anbieten, die Einträge in Wikipedia 4) zu überprüfen und im Sinne des Auftraggebers zu korrigieren.

Positiv ist zu vermerken, daß diese Enzyklopädie sehr viele Themen aufgreift und vernünftig darstellt, auch wenn es Negativbeispiele gibt (glücklicherweise nicht so viele). Und bei der Wikipedia kann man sich die Inhalte in Teilen oder komplett herunterladen; und da dies über 3GB an Daten sind kann dies etwas dauern, je nach Leistungsfähigkeit Ihres Internetanschlusses.

Beispiel 2: Apache

Jetzt wechsel ich mal zum Thema Software: Apache ist ein Stück Software, ein Webserver, der als Open Source-Projekt entwickelt wird. Dieses Produkt Apache sagt Ihnen vermutlich nichts, aber Sie sind damit schon in Berührung gekommen. Wenn Sie in Ihrem Browser (also Internet Explorer, Firefox, Chrome, Safari, ...) eine Zeile der Form eingeben: www.zdf.de, dann landen Sie auf irgendeinem Weg bei einem Server, der vom ZDF mit Inhalten gefüllt wird. Genauer landen Sie bei einem Stück Software, das Ihre Anfrage entgegennimmt und die Antwort zusammenstellt, um sie an Sie zurückzusenden. Und beim ZDF ist dies die Software Apache (bei ARD übrigens genauso, bei vielen Firmen ist das so).

Neben Apache gibt es noch weitere Programme mit ähnlichem Leistungsumfang, aber wie wichtig ist speziell dieses Programm Apache? Antwort: sehr wichtig! Man kann Firmen, die die Verteilung von einzelnen Produkten in Märkten bestimmen, nach den Marktanteilen der einzelnen Produkte befragen. Jede Firma ermittelt zwar eine andere Zahl5), aber der Anteil von Apache an den Webservern liegt bei allen diesen Firmen zwishen 50% und 60%. Alle anderen Produkte teilen sich den Rest von 40% bis 50%. Und Microsoft? Microsoft besitzt ebenfalls ein entsprechendes Produkt, das an 3. Stelle der Marktanteile steht, aber beständig abnimmt.

Und den Programmcode von Apache können Sie herunterladen und auf Ihrem PC dann einsehen.


Halbzeit meiner Erläuterungen und somit Zeit für eine Zigarettenpause, die gibt es auch für Nichtraucher. Und zur Untermalung der Pause verlinke ich mal auf ein Stück Musik: Apache. Das Stück hat aber nur zufällig den gleichen Namen.


Weiter geht es mit dem nächsten Projekt.

Beispiel 3: OpenStreetMap

Ich wechsle wieder den Bereich und präsentiere ein Beispiel, das nichts mit Software-Entwicklung zu tun hat: OpenStreetMap. Hier finden Sie Karten von fast jedem Winkel dieser Erde zur freien Verwendung. Und wenn Sie für Ihr Navi neue Karten brauchen und sich über die Preise für das Update ärgern, dann achten Sie bei Ihrem nächsten Navi doch mal darauf, daß dieses Navi die Karten von OpenStreetMap verwendet, die gibt es nämlich kostenlos6). Sollten Sie sich über die Informationen in dieser Karte ärgern bzw. die dargestellten Informationen nach Ihrer Meinung falsch sein, dann beteiligen Sie sich doch an diesem Projekt, denn OpenStreetMap lebt von der Beteiligung der Bürger an der Erfassung der Informationen, die zu dieser Karte führen.

Und auch die Daten von OpenStreetMap können Sie herunterladen und einsehen: downloading data. Die Datenmenge ist aber grösser als bei Wikipedia.

Beispiel 4: Linux

Für das nächste Beispiel wechsle ich wieder zurück in den Bereich Software und präsentiere Ihnen Linux. Linux ist ein Betriebssystem, also ein Stück Software, das einen Computer verwaltet. Dazu könnte ich so viel schreiben, da mache ich mal einen eigenen Beitrag dazu. Und diesen Text hier erstelle ich auch unter Linux7).

Linux lebt auch vom Mitmachen vieler und hat somit den Ruf einer Bastler-Software. Das ist vielleicht vor 20 Jahren mal so gewesen, schon lange arbeiten Profis daran. Eine Mitarbeit an diesem Projekt ist möglich, aber da müssen Sie schon gestandener Software-Entwickler sein, um dort mithalten zu können. Das trau ich mir nicht zu. Ich zeige mal zwei Beispiele für den Einsatz von Linux:
Und für alle Computer zwischen diesen beiden genannten Extremen gibt es das Betriebssystem Linux.

Hier können Sie den Programmcode des Linux-Kerns herunterladen.


Wirtschaftliche Bedeutung

Open Source hat eine immense wirtschaftliche Bedeutung, die nur geschätzt werden kann und mehrere Milliarden US-$ groß sein dürfte. Glauben Sie nicht? In den USA gibt es ein Unternehmen mit Namen Red Hat, das sein Geld mit Software aus dem Bereich Open Source verdient und damit im laufenden Geschäftsjahr einen Umsatz von 2 Milliarden US-$ überschreiten dürfte.8). Und das ist nur ein Unternehmen, das sein Geld mit Open Source verdient.

Produkte aus dem Bereich Open Source werden in vielen Firmen eingesetzt, u.a. bei der Deutschen Bahn, die in grossem Umfang Linux einsetzt. Ein weiteres Unternehmen ist Daimler, das in seinen Automobilen viele Produkte aus dem Bereich Open Source verwendet. Bei Produkten aus diesem Bereich muß vielfach angegeben werden, wenn sie von einem Unternehmen verwendet werden. Und so hat das Unternehmen Daimler für die Autos der Marke Mercedes eine Liste der verwendeten Produkte aus dem Open Source-Bereich veröffentlicht: Lizenzen zu Open Source-Produkten. Bitte beachten Sie, daß diese Liste einen Umfang von ca. 350 Seiten hat.

Mercedes macht Werbung für ihre Autos mit dem Satz "das beste oder nichts" und verwendet in ihren Produkten sehr viele Komponenten aus dem Bereich Open Source, diese können also nicht schlecht sein.


Nachtrag9)

Die Stadt Wiesbaden verwendet einige hier erwähnte Produkte aus dem Bereich Open Source. Sieht man sich einmal diese Seite www.wiesbaden.de an, so stellt man fest:
  • es handelt sich um einen Computer, der Linux als Betriebssystem verwendet
  • die Version von Linux heisst CentOS10), sie baut auf einer entsprechenden Version der Firma RedHat auf
  • als Webserver dient Apache
Sie sehen, einige der hier in diesem Text beschriebenen Produkte haben bereits ihren Weg nach Wiesbaden gefunden.



Anmerkungen:
1) Sie können sich unter Schweinereien im Bereich Software nichts vorstellen? Nun, ich könnte mit solch einem Stück Software Ihre Passwörter bei der Eingabe mitschreiben und ganz heimlich an einen Server im Ausland senden. Ja, sowas geht. Bei proprietärer Software ist dies extrem schwierig zu finden, bei Software aus dem Bereich Open Source findet man so etwas leichter. Auch au diesem Grund empfehle ich Open Source.
2) so ganz stimmt dies natürlich nicht, denn auch solche Projekte benötigen Software zur Verwaltung der Inhalte, zur Suche nach Schlagworten etc. Aber im beschriebenen Beispiel ist der Inhalt natürlich von grösserem Interesse.
3) der nicht ganz unbekannte Herr zu Guttenberg hat von seinen Eltern eine lange Liste von Vornamen erhalten. Irgendein Scherzkeks hat in diese Liste einen weiteren Vornamen eingefügt, was längere Zeit nicht auffiel. Da Wikipedia quelloffen ist kann halt jeder einen Text ändern, auch solch ein Scherzkeks; ich würde diese Tat als Vandalismus bezeichnen. Irgendwann fiel dies mal auf und wurde dann geändert.
4) und bei Facebook und bei Google+ und .....
damit der Auftraggeber in möglichst gutem Licht erscheint
5) die Marktanteile der verschiedenen Webserver finden Sie über diese Suche
6) das Navi in meinem Smartphone verwendet Karten von OpenStreetMap, ebenfalls das Navi für mein Fahrrad.
7) bei mir hier ist dies aktuell Ubuntu 14.04
8) Umsatz Red Hat:
2013 1,33 Mrd. US-$
2014 1,55 Mrd. US-$
2015 1,79 Mrd. US-$
2016 (geschätzt) >2 Mrd. US-$
Red Hat zählt das Geschäftsjahr bis zum Februar eines Jahres, das Geschäftsjahr 2016 endet somit im Februar 2016.
9) eingefügt am 9. Nobember 2015
10) hier findet man eine Beschreibung dieser Linux-Distribution: Wikipedia-Artikel zu CentOS, und hier finden Sie die Seite des Projekts CentOS