Da Orion ein Open Source-Projekt ist und wir uns in diesem Teil anhand eines weiteren Open Source-Projekts die Integration von Orion mit GitHub anschauen werden, handelt es sich bei diesem Artikel sozusagen um einen „Kombi-Artikel“, der meine beiden Serien hier im TKL (TechKnowLetter) verbindet.

Nachdem wir im letzten Teil unser RPG Programm, das wir mit der neuen Orion IDE erstellt haben, mit Hilfe des integrierten Git Clients versioniert haben, schauen wir uns in diesem Teil an, wie wir solch ein Git Repository mit anderen teilen können.
Wie schon erwähnt, ist Git unter anderem deshalb so erfolgreich, weil es die Daten nicht zentral ablegt und an einen Server gebunden ist, sondern die Repositories verteilt. Das heißt, allen Entwicklern, die an einem Projekt beteiligt sind, stehen immer alle Quellcodes des Projekts zur Verfügung.
Doch schreiten wir direkt zur Tat. Starten Sie Orion wie in Teil 1 und 2 gezeigt und melden Sie sich über die Website Ihrer IBM i über http://192.168.1.1:2025 an.
Das folgende Beispiel funktioniert allerdings nur, wenn Ihre IBM i einen direkten Zugriff auf das Internet hat, denn wir werden jetzt ein Repository von GitHub clonen. GitHub ist ein webbasierter Git Hoster bzw. DER webbasierte Git Hoster und mittlerweile noch viel mehr (https://github.com/). Bei weit über 40 Millionen Nutzern und Repositories von Firmen wie Microsoft und IBM kann man das, denke ich, durchaus so sehen.

Nachdem Sie sich an Orion angemeldet haben, klicken Sie bitte in der linken Menüleiste auf das zweite Symbol von oben, das Git repräsentiert. Sie sollten nun das im letzten Teil angelegte Repository sehen. Wählen Sie das Repository aus und klicken Sie auf die ComboBox. Der folgende Bildschirm erscheint:

Klicken Sie nun unten links auf den Button „Clone Repository“ und geben Sie eine Repository URL ein. Wir nehmen für unser Beispiel das Open Source-Projekt OSSILE (Open Source Software ILE).

Klickt man auf den grünen Button „Clone or download“, so erhält man die URL, die man für Orion braucht: https://github.com/OSSILE/OSSILE.git

Damit ist das Repository auch schon auf Ihre IBM i kopiert und steht bereit.

Überblick ist alles

Wenn Sie nun auf das Editor-Symbol (der Stift oben links) klicken, sehen Sie das Projekt im typischen Verzeichnisbaum aufgelistet.

Schauen Sie sich den Quellcode an und Sie sehen, dass neben RPG- auch C-, CL- und SQL-Quellcode enthalten ist. Hier könnten noch JavaScript und Python dabei sein, was mittlerweile alles zu ein und demselben Projekt gehören kann und immer häufiger auch gehört. Auch fällt beim Durchstöbern der Quellcodes auf, dass bereits jetzt mehrere Autoren ihren Quellcode beigesteuert haben …

Nicht nur Open Source

Bevor wir uns kurz das OSSILE-Projekt anschauen, sei noch angemerkt, dass GitHub, genau wie viele andere Hoster auch, nicht nur für Open Source-Projekte geeignet ist und genutzt wird, sondern für jegliche Art von Projekten.

Open Source-Projekte können bei GitHub kostenlos angelegt und verwaltet werden. Dazu können Sie sich entsprechend auch kostenlos registrieren. Wollen Sie dort private Repositories anlegen, auf die nur Sie und ausgewählte Kollegen Zugriff haben, so müssen Sie sich für eine der Preisrollen entscheiden, die bereits bei 6,65 Euro pro Benutzer und Monat für eine unbegrenzte Anzahl an privaten Repositories beginnen.

Eine Alternative zu GitHub, die ebenfalls in der IBM i-Welt für Open Source-Projekte genutzt wird, ist BitBucket (www.bitbucket.org) von Atlassian – doch dazu bald mehr in meiner Open Source-Serie hier im TKL.

Open Source-Projekte, wie beispielsweise Linux, Git oder die zahlreichen JavaScript Frameworks sind deshalb so erfolgreich, weil sich unzählige Programmierer auf der ganzen Welt daran beteiligen und die Projekte gemeinsam viel schneller erfolgreich machen können.

npmjs.com hat zum Beispiel derzeit mehr als 1,3 Milliarden (!!!) Paketdownloads in der Woche! Auch wenn mit Sicherheit viel Unsinn dabei ist, zeigt es doch die unglaubliche Zahl an Entwicklern, die sich an solchen Projekten beteiligen und diese unterm Strich verbessern. Hier haben IBM und speziell die RPG-Gemeinde einen riesigen Nachholbedarf, denn ich kenne nicht wenige Firmen bzw. Programmierer innerhalb der Firmen, die sich im Laufe der Zeit ihre eigenen RPG Frameworks aufgebaut haben.

Dank modularer Programmierung ist das alles kein Problem und auch in vielen Fällen sehr sinnvoll, allerdings „friemelt“ jeder für sich alleine „im stillen Kämmerlein“ vor sich hin und oft blicken da selbst die Kollegen im eigenen Unternehmen nicht mehr durch.

Da wäre es doch eine tolle Idee, wenn IBM als Schirmherr ein „RPG Framework“ als Open Source-Projekt zum Beispiel über GitHub zur Verfügung stellen würde und viele RPG-Programmierer sich daran beteiligten und ihre eigenen Entwicklungen einfließen ließen. Damit hätten alle etwas davon.

Wie oft ist es Ihnen schon so ergangen, dass Sie den Wald vor lauter Bäumen nicht gesehen haben, wenn Sie einem Fehler auf der Spur waren? Wie oft haben Sie nach stunden- oder tagelangem Herumtüfteln dann doch irgendwo eine Lösung zu Ihrem Problem gefunden und sich gesagt: „Da hätte ich ja auch selber drauf kommen können“? Wir wären alle viel produktiver und effektiver.

Wenn selbst Microsoft erkannt hat, dass es ohne die Unterstützung der Community auf Dauer nicht Schritt halten kann und daher das Microsoft .Net Framework über alle Plattformen verbreitet, dann zeigt das, dass man durch Öffnung der eigenen Quellcodes auch als Unternehmen sehr viel profitieren kann.

Open Source bedeutet ja nicht automatisch, dass die Software umsonst bzw. kostenlos ist. Auch ist es meist so, dass die Kunden, die ein Softwarepaket einsetzen wollen, ohne den Support des Herstellers nicht viel damit anfangen können. Und sehr viele Firmen verdienen ihr Geld ja auch mit Open Source, man denke nur an das Beispiel Red Hat.

Wie gesagt – wir wären alle viel produktiver und effektiver.

Wenn wir dann noch einen Paketmanager wie beispielsweise npm verwenden würden, um die Abhängigkeiten unserer RPG-Module bzw. -Projekte zu automatisieren …

… womit wir wieder zu dem Beispielprojekt OSSILE kommen.

Relic – IBM i PackageManager und Build Tool

Die Macher des Open Source-Projekts OSSILE – unter anderen Liam Allan – haben das oben angesprochene Problem ebenfalls erkannt und kurzerhand einen Paket-Manager namens Relic für IBM i gebaut, der gleichzeitig auch ein Build Tool ist.

Relic ist ebenfalls Open Source und unter GitHub zu finden

https://github.com/OSSILE/RelicPackageManager

Schaut man sich den Quellcode zu Relic an (Sie wissen ja jetzt, wie Sie ihn zum Beispiel via Orion clonen und dort komfortabel anschauen können), sieht man, dass Allan sehr intensiv SQL nutzt sowie die darin enthaltenen HTTPGETCLOB- und HTTPGETBLOB-Funktionen, mit denen sich sehr einfach externe Webservices aufrufen lassen.

Relic macht es einfach, ein entsprechendes Programmpaket zusammenzustellen und auf anderen Maschinen zum Laufen zu bringen. Wie das oben erwähnte npm, lädt Relic alle abhängigen Komponenten, die es auf dem lokalen System nicht finden kann, automatisch aus dem Internet herunter und wandelt dann alle Quellen entsprechend um.

Dazu gibt es dann die sogenannten „BUILD“-Dateien, die sinnvollerweise auch „build.txt“ heißen. Darin befinden sich die Metadaten, die Relic braucht, um alles korrekt umwandeln zu können, wie hier im Beispiel zu sehen:

name: SQL UDTF Cartridge Info (OSSILE)
version: 1
build: CRTRPGMOD MODULE(&INTOLIB/CARTINFO) SRCSTMF('&DIR/cartinfo.rpgle')
CRTSRVPGM SRVPGM(&INTOLIB/CARTINFO) EXPORT(*ALL) TEXT('Cartridge Info UDTF')
RUNSQLSTM SRCSTMF('&DIR/udtf_Cartridge_Info.sql') DFTRDBCOL(&INTOLIB)

Eine ausführliche Erläuterung zu Relic und wie man eigene Projekte dafür aufbereiten kann, finden Sie unter folgender URL:
https://github.com/OSSILE/RelicPackageManager/wiki

Fazit

Die Seiten füllen sich so schnell, dass auch dieser Teil schon wieder am Ende angekommen ist. Im nächsten Teil schreiten wir mit Orion und dem OSSILE-Beispiel weiter voran und schauen uns an, wie wir Änderungen, die wir lokal in unserem Repository gemacht haben, wieder auf GitHub bekommen.
Ich freue mich, wie immer, auf Ihre Meinungen, Rückmeldungen und Fragen rund um das Thema und wünsche Ihnen viel Spaß mit Ihren Orion-Tests.