Ihr ahnt nicht, was es so gibt in der schönen Welt des wissenschaftlichen Rechnens. Viele Programmierer werfen ihren Nutzern einfach so ihre Software vor die Füsse und kümmern sich danach einfach nicht mehr darum. Schließlich funktioniert die fragliche Software ja. Und wer nachfragt, wie man diese ☠@✴#-Software ans Laufen bekommt mitunter zurück: “Bei mir funktioniert es doch!” – daher auch der Name “runs-on-my-system”-Software.

Es kann aber auch noch ein Wenig mehr gemeint sein. Natürlich zunächst mal, das ein Programm wirklich nur auf bestimmten Systemen lauffähig ist. Aber auch, wenn Leute wirklich der Meinung sind jede Mindestregel zur Veröffentlichung von Software verletzen zu wollen. Wollen? Ja, wollen! Denn manche Macher schaffen Zumutungen: Da wird irgendwas hingerotzt, Erwartungen werden geweckt, Leute planen damit ihre Projekte machen zu wollen und werden schwer enttäuscht.

Ihr merkt, ich schiebe gerade etwas Installierfrust … Also, falls ihr je (als WissenschaftlerIn) eure Software veröffentlichen wollt und euren Nutzern das Leben schwer machen mögt, um ein paar anti-Karma-Punkte sammeln, dann habe ich hier einige Vorschläge:

Die Ziele

  • hier werden einige Techniken zusammengefasst, die es schwierig machen (wissenschaftliche) Software zu installieren – egal welche Paket Manager (also: Leute) euer Ding aufgreifen werden und egal für welches Paket Managing System oder ob sie dies “per Hand” erledigen
  • ich nenne einige Entschuldigungen, wie ihr damit davon kommen werdet
  • und zeige wie man in diesen Punkten zu einem wirklichen Profi wird

Und wozu? Na, klar:

  • ihr stellt so sicher, dass weniger Leute eure Software nutzen
    • sie könnten schließlich Bugs finden, die ihr fixen müsst
    • sie werden Fragen stellen, die nach einer Antwort verlangen
    • oder im schlimmsten Fall sogar Code beisteuern, den ihr einarbeiten müsst
  • ihr verhindert überhaupt Beiträge zu eurer Software zu erhalten
    • das frisst einfach zu viel Zeit für eure Wissenschaft, muss man sich ja anschauen und testen
    • und ihr müsst das auf lange Sicht auch noch warten!

Ok, die Ziellinie ist klar. Wie vorgehen?

1. Kreativer Umgang mit Versionierung und Veröffentlichung

  • bloß keine semantische Versionierung nutzen!
  • Shiet, ihr habt gerade veröffentlicht und danach einen kleinen Fehler bemerkt? Kein Problem, fixen und erneut unter derselben Versionsnummer veröffentlichen – merkt sowieso niemand!
  • besser noch, ihr macht gar keine bugfix releases:
    • einfach den NutzerInnen sagen, bei github ein checkout zu machen, um alle updates zu erhalten
    • oder eine Webseite aufsetzen, mit einer Anleitung zum selber fixen.
  • oder erst gar keine Releases/Veröffentlichungen machen
    • ein Masterbranch auf github ohne tags oder Versionen tut es auch
    • man auch auch ein eigenes Versionsschema erfinden – Verwirrung stiften hilft, wenn die eigene Software nicht genutzt sehen will!
  • wenn ihr doch versioniert, unbedingt die alten Versionen löschen! Kein Archiv der alten Versionen führen! Am Ende könnte noch jemand nachvollziehen, was ehedem bei einer Datenanalyse schief lief, das darf nicht sein!

Wenn sich doch mal jemand von den Old Boys (wie ich) beschwert, hier ein paar mögliche Gründe, die ihr angeben könnt:

  • “War bloß eine winzige Änderung, kein Grund ‘ne neue Version raus zu hauen.”
  • “Geh! Versionierung ist heute sowieso unwichtig geworden!”
  • “He, Du solltest sowieso nur die aktuelle ‘Version’ nutzen!”
  • “Die alte Version hatte Bugs, bitte nicht mehr verwenden.”

Oh, und wenn ihr keine Versionierung verwendet, könnt ihr euch besonders beliebt machen mit

  • strikte Versionsanforderungen für Bibliotheken von denen eure Software abhängt (dependencies)
  • auf eurer Homepage schreiben warum euch Versionierung so ankotzt und ihr eure Alternative bevorzugt.

Beispiele gefällig? Wie wäre R mit sein hunderten Paketen, die zwar zu > 99 % abwärtskompatibel sind, aber immer schreien “ich kann nur mit der neuesten Version!” (Es gibt einen Weg drum herum, aber automatisiert für potentiell sehr viele Nutzer, muss alles stimmen). Oder Bioconductor? Bioconductor ist seinerseite eine R-Paketsammlung, die häufig in der Bioinformatik eingesetzt wird. Nutzt strikte Versionierung bei allen Abhängigkeiten. Ein x-beliebiges Paket kann mit der Vorgängerversion laufen? Egal! Ein Update wird erzwungen. Ein Update bei einer Abhängigkeit? Her damit! (Man muss aber nicht unbedingt die Version von Bioconductor ändern.)

2. Geschichte eurer Software

Ihr könnt

  • Leute raten lassen, was sich geändert hat, beim Update eurer Software
  • oder wenigstens vage Angabe machen (“minor updates & bug fixes”)

Die Entschuldigung hierfür ist offensichtlich: “Hey, schau einfach in die commit-Historie, da steht alles drin!”

3. Abhängigkeiten mitschiffen

Immer wieder beliebt: Alle Abhängigkeiten (Softwarebibliotheken oder Programme, die eure Software benötigt um lauffähig zu werden) sind im Download eurer Software mit dabei. (Ok, dann müsstet ihr eigentlich alle Updates in den Abhängigkeiten immer wieder nachvollziehen und in eurem Download einbauen, aber wer wird denn so kleinlich sein?)

Auch hier sind die Entschuldigungen offensichtlich:

  • “So ist die Installation einfach einfacher!”
  • “Wir wissen einfach besser, wie unsere Software zu installieren ist!”

Noch besser natürlich, wenn ihr Änderungen an euren Abhängigkeiten anbringt (z. B. ein Bugfix), das aber den ursprünglichen Entwicklern nicht mitteilt. (“Jeder ist sich selbst der Nächste! Und das ganze Gerede über Reproduzierbarkeit, ach geh!”)

Was auch geht: Nur einige, nicht alle Abhängigkeiten mitschiffen.

4. Magische Installation von Abhängigkeiten

Richtig cool ist es Abhängigkeiten während der Installation aus den Netz zu laden und irgendwie(!) zu installieren.

Auch hier gilt:

  • “So ist die Installation einfach einfacher!”
  • “Das Internet ist doch auf jedem System immer erreichbar, oder?”
  • und natürlich auch: “Oh, das bisschen Redundanz auf Deinem System ist schon nicht so schlimm, oder?”

Oder ihr macht es so richtig schwer Abhängigkeiten irgendwie anders zu installieren, als auf eurem System. Beispiel gefällig?

app: app.o
    g++ -static -o app app.o \
    /usr/lib/libgsl.a \
    /usr/lib/libgslcblas.a \
    /usr/lib/liblapack.a \
    $(LOCAL)/lib/libopenblas.a \
    -lgfortran -lpthread

Dies ist ein Ausschnitt aus einem sogenannten “Makefile”, vor ein paar Tagen gefunden. Man verwendet solche Dateien, um Programme (hier mal “app” genannt) unter Linux zu kompilieren und installieren. Und was ihr seht ist ein sog. Compiler-Aufruf (g++ heißt er in diesem Fall) – etwas um Code in Maschinencode zu übersetzen und (in diesem Fall) ein auführbares Programm zu erstellen.

Das Problem an dieser Stelle? Seht ihr die vielen /usr/lib-Einträge? Sie stehen für bestimmte Verzeichnisse. Und wenn es genau diese auf dem Zielsystem nicht gibt, dann lässt sich diese Software nur installieren, wenn man diese Dinge korrigiert (für Fachleute: einen sog. patch schreibt). Herrlich! So muss man es machen!11!! Und da ist noch was: Seht ihr das -static? Das zwingt zur Erzeugung eines sogenannten statischen Programms wo alle Bibliotheken mit in das Programm geschrieben werden, wodurch dieses sehr groß wird (und noch weitere Probleme erzeugt). Fantastisch!

5. Je mehr Abhängigkeiten desto besser

Wenn der Blogschreiber es mal abgelehnt hat wegen so ‘ner Pillepalle überhaupt auf einer Publikation dabei zu sein, ist dies kein Grund es ihm gleich zu tun. Es ist wirklich gut viele Abhängigkeiten zu haben. Am besten welche, die selber schwer zu installieren sind!

Begründung ist natürlich: “Ich möchte schlicht nicht das Rad neu erfinden müssen.”

Was für tolle Auswirkungen das haben kann, sieht man an NPM. Ein paar Abhängigkeiten entfernt, das halbe Internet fing an zu röcheln. Wissenschaftlich geht auch: Homer, wirklich ein großes Vorbild – hakt viele Punkte unserer Checkliste hier ab. Mit zusätzlichen anti-Karma-Punkten obendrauf.

6. Möglichst viel zur Installation hardcoden

Wie das geht? Siehe Punkt Nr. 3.

Entschuldigungen:

  • “Wir erwarten eine Standardumgebung!”
  • “Wir können einfach nicht alles mögliche supporten!”

7. Wahl des Installationstools

  • möglichst exotisch, wenn es bekannter wird: Wechseln!
  • irgendwas, was “besonderes” Verhalten aufweist
    • z. B. die Umgebung kontrolliert
    • oder es unmöglich macht irgendwas zu korrigieren, falls es mal nicht klappt
  • am Allerbesten: Ein Skript schreiben, zu einem Tool, dass es ohnehin schon gibt. Auf diese Weise ist es richtig schwer sauber zu arbeiten!

Aber klar, ihr wisst es besser:

  • “Diese modernen tools arbeiten einfach besser!”
  • “Wir können nicht in der Vergangenheit verharren!”
  • “Ich schreibe einfach bessere Installationsskripte!”

Richtig gruselig wird es für Anwender, wenn ihr eure Super-Duper-Spezialscripte so benennt wie ein Standardtool – es aber etwas völlig anderes macht. Beispiel: ./configure.

8. Nur teilweise installieren oder interaktive Skripte

Wenn ihr schon irgendwas bereitstellt, dann sollte es die Arbeit nicht ganz machen. Wäre ja noch schöner, oder?!

  • am besten nichts konfigurierbar halten, alles hardcoden (s.o.)
  • interaktive Installationsskripte sind das Nonplusultra, sie verhindern zuverlässig, dass ein Paketmaintainer ein einfaches Leben hat!

Für beide Fälle gilt: “So ist es intuitiver!”

Noch ein paar Beispiele gefällig?

Ok, aber werden wir erst mal ernst! Warum sollte man überhaupt Quellcode selber übersetzen wollen? Tensorflow, eine Programmierplattform für maschinelles Lernen, ist so ein Kandidat. Kann man sehr einfach vorkompiliert installieren. Wenn man es selber macht ist es allerdings wesentlich schneller. Aber – ihr könnt ja mal versuchen Tensorflow “von Hand” zu bauen – die Leute hinter Tensorflow decken viele oben genannten Punkte der Checkliste supergut ab und bekommen folglich viele extra anti-Karma-Punkte.

Hier wäre noch ein Beispiel aus der Bioinformatik. Gar nicht besonders, solche Webseiten gibt es häufiger. Was findet man da? Ein unversioniertes Script, ein unversioniertes Quellcodebündel und noch mehr davon. Warum machen die das (sie wissen es besser: auf derselben Seite gibt Projekte, die auf github versioniert werden)? Solcherlei Sorglosigkeit findet man häufiger, z. B. auch hier. Letzte Veröffentlichung ist eine Version 2.4.0, die Seite verrät aber gleich

Unfortunately the 2.4.0 release has a buggy interaction with the boost C++ libraries that causes frequent crashes, therefore it is suggested that the development snapshots linked below be used until the next release.

Den next release gibt es aber nicht, weshalb Bioconda beispielsweise auf einen snapshot von 2015 (also eine bestimmten, aber nicht versionierten und offiziell unterstützten Entwicklungszustand) zurückfällt. Ein Übersetzungsversuch: “Uns ist der Zustand egal, der Entwickler hat irgendwann aufgehört. Es funktioniert oder auch nicht.” (Kleiner Hinweis für Nicht-Programmierer: “boost” sind aktiv entwickelte C++-Bibliotheken, die seit 2015 große Sprünge gemacht haben. Hätte man aktuelle Versionen, man hätte das Problem nicht – bzw. man könnte es nicht auf die Bibliothek schieben. Im Grunde steht da auch: “Wir haben keine Ahnung, wie man das richtig installiert auf einem Multiusersystem (sonst könnten wir ja updaten) und deshalb müssen unsere Nutzer damit leben lernen!” Ich vermute auch: Die Bibliotheken, die auf einem System X statisch eingebunden werden, ergeben nicht immer ein lauffähiges Programm auf System Y. Und dann schreibt man folglich: “has a buggy interaction with the boost C++ libraries that causes frequent crashes”. Ein deftiger Facepalm ist an der Stelle das Mindeste. Und das bei einer Gruppe, “die was mit Informatik macht”.

Im Grunde ist dieser Beitrag eine Bestätigung eines sehr frühen Beitrag im Blog über das Problem der Softwarefinanzierung. Es kommt die Gleichgültigkeit der Entwickler hinzu, weshalb solche Software häufig genug nicht Eingang in öffentliche Quellecodemanagementsysteme wie github & Co findet. Und natürlich weil Anfänger gewisse mentale Hürden zu überwinden haben, was auch damit zusammenhängt, dass sie schlecht betreut werden. Oft jedoch sind informatische Arbeitsgruppen am Werk, die es besser wissen sollten. Manchmal zeigen sie das auch, wandert doch die eine oder andere Software aus derselben Arbeitsgruppe, die auch solchen Mist auf der Homepage hat, doch zu github und wird besser betreut.

Und was passiert, wenn die/der Chef in Rente geht oder eine andere Position annimmt mit der nicht betreuten Software, deren Homepage dann auch früher oder später verschwindet? Genau! Der ultimative Reproduzierbarkeitsgau.

Ein großer Spaß ist auch wenn eine Software eine umständliche Bauanleitung gibt (“so habe ich’s gemacht, sollte bei Dir auch funktionieren” – hier ein Beispiel, es gibt verschiedene Spielarten, in neuerer Zeit auch gerne mit einer shiny Webseite, oft ohne sinnvolle Funktionalität, die andere Lösungen nicht bieten), die so ganz natürlich annimmt alles manuell zusammen zu kramen. Kein wissenschaftliches Problem, aber großer Quatsch. Kommt immer wieder vor.

Zusammengefasst …

… lässt sich sagen:

  • runs-on-my-system ist manchmal wörtlich zu nehmen. Und das kann man dann in die Tonne kloppen: Alles was damit an Daten analysiert wurde, kann nur vielleicht von den Machern reproduziert werden.
  • ist häufig als big-binary erhältlich mit viel Ballast oder reine Bloatware. Egal. In jedem Fall erschwert es Reproduzierbarkeit: Wer sagt denn, dass das auf einer CPU von morgen wirklich laufen wird? Immer? Mit allen (teils unnötigen) Abhängigkeiten? Da hilft die Archivierung in Containern oder virtuellen Maschinen nur sehr, sehr bedingt.
  • gibt es sehr viele Wege der Nutzercommunity das Leben wirklich schwer zu machen.

Meine Wette: Aus der letzten Reproducibility Challenge und anderen Maßnahmen wurde so wenig gelernt, dass sich wenigstens deren deprimierenden Ergebnisse in zehn Jahren wiederholen lassen.

Achtung: Dieser Beitrag ist in großen Teilen inspiriert/abgekupfert durch einen Vortrag von Kenneth Hoste (sehenswert).

flattr this!

Kommentare (57)

  1. #1 rob
    Oberland
    10. Juni 2021

    Da ist jemand frustriert : (
    Ich finde es auch oft krass, welche Winkelzüge man im Jahre des Herrn 2021 noch machen muss um die #*§!! Technik zum laufen zu bringen. Ich bekam neulich einen neuen Router von meinem Kabelnetzbetreiber zugeschickt. Abstöpseln, anstöpseln, fertig. Alles funktionierte, außer Outlook. Gut, dachte ich, da brauchen wir noch ein paar Portfreigaben. 1 stunde Recherche ergab viele, viele Portfreigaben die bei X Leuten geholfen haben, bei mir aber nicht. Schließlich fand ich heraus, dass manche Outlook-Versionen kein IPv6 unterstützen. Lösung: den Router auf IPv4 umstellen. Nur gibt es bei mir diese Schaltfläche nicht, weil die Anbieter das bei ihren Geräten deaktivieren. Schließlich kam ich auf eine Datei “hosts” tief im windows-Verzeichnis. In ihr kann man manuelle Namensauflösungen festlegen. Ich ermittelte also die IPv4-Adressen meiner Mailserver (dazu gibt es spezielle Webseiten), definierte in besagter Datei entsprechende Hostnamen und “schon” hat Outlook wieder funktioniert! Ein glücklicher Enduser mehr.

    • #2 Christian Meesters
      10. Juni 2021

      Im Wesentlichen ist bei Consumerware von Funktionieren auszugehen – Kunden stimmen sonst mit den Füssen ab, auch wenn viele in den letzten Jahren manche Dinge ertragen mussten, die Zweifeln lassen, ob Firmen an ihre Kunden denken.

      WissenschaftlicherInnen sind leider leidgeprüft – was eine selbst verschuldete Situation ist.

  2. #3 Robert Stiller
    10. Juni 2021

    Ist die fehlerhafte Numerierung in der Aufzählung ein Seitenhieb auf Versionsnummern?

    • #4 Christian Meesters
      10. Juni 2021

      Danke.

  3. #5 stone1
    10. Juni 2021

    Auch wenn es ein ernstes Thema ist, hat mich der Beitrag zum schmunzeln gebracht.
    Gute Anleitung, wie man den Usern das Leben unnötig möglichst schwer machen kann – schon bei der Installation. ; )

  4. #6 hwied
    10. Juni 2021

    Man weiß auch nicht, ob das Programm einen Fehler hat, ist es nur falsch installiert oder macht man selbst einen dummen Fehler.
    Ärgerlich ist der Zeitverlust.
    Ich bin bei Visual Basic ausgestiegen, weil die Syntax geändert wurde und ich anscheinend zu dumm für die Erklärungen bin.

    • #7 Christian Meesters
      10. Juni 2021

      Man weiß auch nicht, ob das Programm einen Fehler hat, ist es nur falsch installiert oder macht man selbst einen dummen Fehler.

      Hätte ich auch mal dick schreiben sollen …

      Zu VBA möchte ich lieber nichts sagen, sonst wird mir nur vorgeworfen ein Vorurteil zu haben ;-).

  5. #8 rolak
    10. Juni 2021

    Zu VBA

    Nanana, hwied sprach ‘nur’ von VB. Ist zwar beides proprietär/MS und somit eine uniforme Sauce, dennoch halte ich von den beiden VBA für noch schlechter abgeschmeckt implementiert. Allerdings muß ich zugeben, im gesamten Leben neben diversen spaghetti-fixings nur ein einziges komplettes BasicProgramm verbrochen zu haben: damals™ den Z80-Assembler. Das Ulkige: im ROM fest eingebraten war ebenfalls ein MS-Basic: Level II, ein Derivat des hauseigenen 8KBasic/Altair. BillyBoy himself sagte zu Level2, es sei in ~4Wochen entstanden. So lief es dann auch…

    Hab die ArtikelListe jetzt mehrfach & jedesmal gründlich durchgeackert, doch ich finde keine Variante, die mir noch nicht untergekommen wäre – dafür immer wieder einen Grund für ein neues GalgenKichern. Sehr schön!

  6. #9 Sascha
    10. Juni 2021

    Ach, zu VBA kann man Vorurteile haben?

    PS: “strickt” sollte zu “strikt” werden, es sei denn, es geht um Wolle.

    • #10 Christian Meesters
      10. Juni 2021

      Und zu VB auch, wie ich gestehe: In einen Sack stecken, drauf hauen. Trifft immer die richtige Sprache.

      Danke – zu viele (natürliche) Sprachen am Tag hinterlassen Spuren.

  7. #11 stone1
    10. Juni 2021

    @rolak

    Im Gegensatz zu dir hab ich reichlich in Basic programmiert, erst Commodore Basic V2, später QBasic, beides auch MS-basierend. Da hab ich mich ziemlich ausgetobt, man konnte schon was damit anfangen und die Progs liefen auch. Als Abschlussarbeit hab ich mal ein Buchhaltungsprogramm in QBasic erstellt, ist ziemlich lang geworden, leider wird das wohl nicht mehr existieren, die 3.5″ Floppy hab ich zwar noch aufgehoben, aber who knows ob die noch lesbar ist…

    Dazwischen allerdings hab ich viel mit Turbo Pascal gemacht (Borland, erst in DOS, später auch in Windows), und dagegen konnte Billy-Basic natürlich nicht anstinken. Kein Vergleich.

    Danach musste ich, firmenbedingt, allerdings wieder auf MS zurückgreifen, Visual C++ ist eigentlich ganz okay, wenn auch etwas überfrachtet.

  8. #12 rolak
    10. Juni 2021

    wieder auf MS zurückgreifen

    Bevor sich hier Gerüchte aufbauen: isch ´abe garnichts prinzipiell gegen MS, die haben auch richtig gute Produkte – das da zum (einzig guten) Beispiel nutze ich seit Jahren ohne Klagen.

    Doch es geht hier ja primär weniger um proprietäre MonoblockProdukte, sondern diese teils unsäglichen (Forschungs)SoftwarePakete – und mich deucht, da hat sich seit den 80ern kaum etwas getan. Bis auf die DFÜ – denn das neue Paket zur Simulation des Auspusten der Funken von Hochleistungsschaltern kam als Stapel leicht blasser Kopien von (Zeilendrucker auf Leporello) aus den USA. Eingehackt, 23..drölfzig mal (compile-run-debug), dann lief das FortanIV-Gedöns. Auf die (etwas) spätere Nachfrage vom GruppenChef in den Staaten ‘Modul 007 stürzt im Spezialfall 42 ab’ kam nur die lesbar perplexe Antwort: ‘Also Modul 007 ist hier noch in keinem Fall durchgelaufen’. Habsch wohl aus Versehen was korrigiert beim Abtippen…

    • #13 Christian Meesters
      10. Juni 2021

      … sondern diese teils unsäglichen (Forschungs)SoftwarePakete …

      Jau, gerüchteweise handelt es sich auch um einen Wissenschaftsblog – auch wenn das in den ersten anderthalb Jahren etwas zu kurz kam.

  9. #14 stone1
    10. Juni 2021

    A propos Wissenschaftsblog, mit Erstaunen hab ich grad festgestellt, dass Oberon noch immer existiert. Hatte eine meiner ersten Informatik-Vorlesungen bei Hanspeter Mössenböck, bei dem wir Programmieren in Oberon-2 gelernt und anschließend gleich wieder vergessen haben. Keine Ahnung, ob das irgendwo produktiv eingesetzt wird.

    • #15 Christian Meesters
      10. Juni 2021

      Wenn ich “Wissenschaft” denke, dann meist etwas anderes als InformatikerInnen. Jedenfalls ist mir die Sprache in meiner Welt des naturwissenschaftlichen Rechnens noch nicht untergekommen.

  10. #16 stone1
    11. Juni 2021

    @Christian Meesters

    Ich bin ja schon sehr lange aus dem universitären Umfeld raus, damals mussten wir am Beginn des Physikstudiums lernen, wie man selbst Programme für seine Berechnungen schreibt und mit Mathematica umgeht.

    Insofern wäre vielleicht mal ein Grundlagenartikel interessant, wie und von wem heutzutage naturwissenschaftliche Software entwickelt wird. Vielleicht gibts den hier schon, ich verfolge diesen Blog nicht so genau, und bei einer (zugegebenermaßen kurzen und oberflächlichen) Suche hab ich dazu hier nichts gefunden.
    Nur so als Anregung.

    • #17 Christian Meesters
      11. Juni 2021

      Kein einfaches Unterfangen. Unterschiedliche Fachkulturen und Projektgrößen, Zeit (Veränderung der Ausbildung über Jahre hinweg), geographische und bildungspolitische Faktoren spielen eine große Rolle. Ein interessantes Forschungsprojekt für Meta-Research – aber nicht in Reichweite eines Blogs.

  11. #18 user unknown
    https://demystifikation.wordpress.com/
    11. Juni 2021

    Mir tun die Wissenschaftler leid.

    Als Autodidakt habe ich unter DOS mit dem Borland-C/C++-Compiler + IDE ein mittelkleines Programm entwickelt, 10-15 Sourcefiles, 100kb. Dann bekam ich endlich einen linuxfähigen Rechner, und fand da keine äquivalente IDE.

    Okay, gcc und g++ bemühen. Hm. Es gibt unter Linux gar kein conio.h? Das hatte ich auf DOS eigentlich immer benutzt – es gab auch keinen Ersatz, der nur anders hieß. Ich glaube `getch`, um einen Tastaturanschlag ohne anschließendes Enter zu verarbeiten war die zentrale, von mir benötigte Funktion. Und Balken/Linien zeichnen. Man soll curses.h oder ncurses.h nehmen. Grmml.

    Ich habe dann alle Funktionen die das brauchten an einen eigenen Header geleitet, der je nach Plattform (Linux/DOS) entweder diese oder jene Hilfsfunktion aufgerufen hat. Vielleicht das Adapterpattern am Werk.

    Makefiles kannte ich auch erst vom Hörensagen und musste mich da einfuchsen. Dann will man es ja nicht irgendwie hinfummeln, sondern ordentlich machen, mit dependencies und strukturiert und INCLDIR und LIBDIR. Irgendwann dachte ich, jetzt hab’ ich’s, aber dann musste ich lernen, dass ich für einen ordentlichen Tarball kein Makefile schreibe, sondern mit ./configure und autoconf/automake ein Makefile für die passende Plattform bauen lassen muss, damit das Programm auch auf einem ALPHA, SPARC, HP-UX, SOLARIS oder einer PDP-11 läuft.

    Das habe ich notdürftig noch hinbekommen (damals gab es noch keine YT-Akademie, in der man alles wichtige in 10 Minuten lernen konnte), aber ohne Kür. Kür wäre eine manpage gewesen, wozu man nur hätte lernen müssen: troff, groff, ngroff, docbook, poff und plopp.

    Schreiend nahm ich Abstand und beließ es bei meiner README Datei.

    Das war noch vor den großen Stunden der Distrubutionen. Heute müsste man ja noch Pakete für xUbuntu, Fedora, SuSe, Mint, Mate und weißnichtnoch bauen.

    Eine große Erleichterung zwischendurch war Java, mit den Jar-Archiven: `java -jar meinXY.jar` – fertig. In der Beschreibung angeben, dass die Leute jfreechart.jar brauchen und es erfolgreich mit Version 4.5.1 getestet wurde.

    Dann hat mich Sun aber verloren als sie dieses Webstartdingens eingeführt haben. Habe mir gar nicht gemerkt, wie es heißt.

    Eine Lösung könnte der Raspi sein. Ein Image für den Raspi bauen, Programm, Daten und Hardware als Bundle archivieren. Netzteil nicht vergessen – das ist dann halbwegs sicher, solange die Steckdosen 235V bei 50Hz liefern. LAN und WLAN am besten veröden, damit der User keine Updates runterladen kann, die das System schrotten. 🙂

  12. #19 Bernhard
    11. Juni 2021

    Hier hat jemand die GPL nicht gelesen. Ich schreibe selbst viel Software (für mich) und teile sie auf Github. Anwender können, aber müssen sie nicht nutzen. Mehr Rechte und Ansprüche gibts nicht (steht so in der GPL).

    Warum also dieses Anspruchsdenken? Alles valide, kostet aber viel unbezahlte Lebenszeit des Entwicklers.

    Vorschlag: dem EntwicklerIn schreiben, dass man das und das haben will und bereit ist, dafür marktgerechte Preise zu zahlen.

    Bernhard

    • #20 Christian Meesters
      11. Juni 2021

      Schon mal gelesen, worum es hier geht? Wenn Sie eine Software für den Eigengebrauch schreiben und anderen sagen “Hier, darfst Du auch nutzen.”, stimmt ihre Aussage. Ansonsten geht es hier um wissenschaftliche Software, wo oft genug Lizenzen sogar fehlen, was auch prinzipiell problematisch ist – ich schrieb auch darüber.

  13. #21 stone1
    11. Juni 2021

    @Christian Meesters

    Ein interessantes Forschungsprojekt für Meta-Research – aber nicht in Reichweite eines Blogs.

    Und wenn ich statt ‘Grundlagenartikel’ ‘Überblick’ geschrieben hätte? Muss ja nicht gleich ins Detail gehen.

    • #22 Christian Meesters
      11. Juni 2021

      Unabhängig vom Fachgebiet sind das große Problem nicht die großen Projekte (z. B. root vom CERN, obwohl bei ICECUBE in der letzten Zeit viel Mist gebaut worden ist; finite Elemente Software oder MD-Simulationen – um ein paar Beispiele aus der Physik zu nennen, wo wirklich viele fähige Leute dran arbeiten), sondern die vielen Projekte wo Fachwissenschaftler irgendwie irgendeinen Mist bauen. Ein paar solche Projekte kenne ich und auf manche werde ich aufmerksam gemacht (weshalb ich auch konstruktiv versuche zu warnen), gibt es nicht nur in der Bioinformatik, sondern auch in der Physik (Beispiel).

      Ich fühle mich, um das Bonmot eines anderen Physikers zu paraphrasieren, nicht hoch genug stehend um einen Überblick zu haben. In der Tat würde ich gerne eine solche Arbeit betreuen. Wenn dies hier ein Studi liest mit Lust auf eine solche Arbeit: Gerne, und das bekäme ich auch beim Fachbereich durch, das ist nämlich anspruchsvoller als hier im Kommentar darzustellen. Nur das wäre Masterniveau ohne Aussicht auf Anschlussarbeit.

      Sorry, da muss ich die Erwartung dämpfen.

  14. #23 Joachim
    11. Juni 2021

    @Bernhard, @Christian Meesters,
    Was ist der Unterschied zwischen wissenschaftlicher Software und GPL software?

    Wissenschaftliche Software wird von HIWIS in VB oder Fortran geschrieben.

    Alle anderen Antworten, die ich mir hier verkneife sind noch viel ironischer und natürlich so übersteigert nicht wahr. Trotzdem, UNIs bilden aus, haben die Fachleute, Verkaufen ihr Wissen an die Wirtschaft und wollen Elite sein. Ich bin ja alles andere als neoliberal, doch ihr (UNIs) lasst euch von der Wirtschaft vorführen.

    Da kommt ein Christian Meesters, zählt lauter korrekte Dinge auf, wovon einige fast trivial erscheinen (das ist _kein_ Angriff, das ist nur traurig für die UNIs!), wo man maximal noch über die Prioritäten streiten könnte und niemand hört zu?

    Vielleicht sollte man mal überlegen, wie die wissenschaftliche Software auch finanziert wird (oder werden sollte) und sie grundsätzlich unter GPL stellen. Möglicherweise wird es dann besser mit einer community. Doch ich fürchte, das wird so enden wie mit muPad. I

    ch meine, die UNIs schaffen es ja nicht einmal ihre wirklich tollen und fertigen freien Projekte noch zu hosten. An den Stellen ist nur noch Werbung für den Lehrstuhl, höchstens mal Lehrpläne in Stichworten, weil man auf ein CMS umgestiegen ist und die Regel vergisst, funktionierende URLs niemals einfach ohne Weiterleitung zu ändern.

    TL;DL: das Problem ist hausgemacht. Es fehlt an Interesse und Geld.

    • #24 Christian Meesters
      11. Juni 2021

      Da kommt ein Christian Meesters, zählt lauter korrekte Dinge auf, wovon einige fast trivial erscheinen (das ist _kein_ Angriff, das ist nur traurig für die UNIs!), wo man maximal noch über die Prioritäten streiten könnte und niemand hört zu?

      Natürlich nicht. Weil, es fehlt an Interesse – international. Nicht nur hierzulande. Ist ja nicht so, dass alles übel ist. Es gibt wirklich interessante Entwicklungen zur Verbesserung der Situation.

      PS Wissenschaftliche Software und GPL? Ja, geht zusammen, muss aber nicht. TL;DR: Zur GPL gibt es eine Reihe von validen Alternativen im wissenschaftlichen Bereich. Keine freie Lizenz zu haben, braucht eine sehr gute Begründung. Überhaupt keine Lizenz zu haben ist dumm.

  15. #25 stone1
    11. Juni 2021

    @Joachim

    GPL ist keine Art von Software, sondern die verbreitetste Softwarelizenz. Äh, bin mir nicht sicher, ob die Superlativbildung hier korrekt war.

  16. #26 Bernhard
    11. Juni 2021

    @Christian Meesters

    Egal ob wissenschaftliche Software oder nicht, ob mit oder ohne Lizenz: Software wird auf Github freiwillig geteilt, auch wenn sie Ihren Qualitätsansprüchen eines rundum sorglos installierbarem Pakets nicht entspricht. Wollen Sie das verbieten?

    Und ja, es ist schade, dass all die schönen Dinge wie Versionsabhängigkeiten etc. nicht berücksichtigt werden, aber es gibt halt viele SW-Entwickler (Hiwis oder was auch immer), die sehen ihr Lebensziel nicht in einer perfekt installierbaren Software (sie arbeiten wahrscheinlich an einem Paper ihres Profs). Und auch wenn die SW mit öffenlichen Geldern an Unis entstehen, Ziel ist in den seltensten Fällen die SW, deshalb gibt es auch keine Finanzierung für professionelles SW-Management.

    Anstatt sich darüber zu ärgern sollten Sie einen Bogen um diese SW machen. Schreiben Sie die SW selbst oder kaufen die SW bei einem kommerziellen Anbieter.

    • #27 Christian Meesters
      11. Juni 2021

      Wollen Sie das verbieten?

      Was Sie da schreiben ist noch nicht einmal falsch, was deutlich zeigt, dass Sie noch nicht mal über die Links im Artikel gehovert sind. Insofern sehe ich keinen Grund eine Frage zu beantworten, die impliziert, ich hätte so etwas geschrieben.

      Anstatt sich darüber zu ärgern sollten Sie einen Bogen um diese SW machen.

      1. ist es mein Job bzw. Teil davon, keinen Bogen darum zu machen, sondern diese Dinge in ein Paketsystem zur autom. Installation beizusteuern. Somit Wissenschaft zu erleichtern.
      2. ist es mein Wunsch, dass wenigstens ein paar Menschen mehr verstehen, dass hier ein Problem liegt. Ein Problem, dass hinderlich für wissenschaftlichen Fortschritt ist. Und wenn das manchmal nicht in die Kategorien passt, die sich manche Interessierte vorstellen können, dann sollte ich wohl besser erklären.

  17. #28 Joachim
    11. Juni 2021

    Gut stone1 und Christian Meesters: nagelt mich doch nicht auf die GPL fest. Immerhin ist das eine Lizenz, die wenigstens öffentlich macht, wenn jemand Schindluder mit meiner Software betreiben will.

    Das Problem ist einfach das Interesse, das Geld und manchmal trotz in Bereichen massivem Wissen die Unwissenheit. Selbst bei Informatikern gilt: es gibt keinen Unterschied zwischen Theorie und Praxis. Aber nur theoretisch!

    In eigener Sache: Ich habe überlegt, das Folgende zu streichen. Wem das zu dumm ist, der spule einfach vor zum letzten Absatz. Das ist nur der Versuch zu beschreiben, wie ich zu meiner Einstellung kommen. Okay? Letzter Absatz! Bitte.

    Wenn ich an meine Studentenzeit denke, der Oberingenieur hatte weder Zeit noch Interesse nachzuschauen, was ich denn da so programmiere. Ich habe damals sowohl die nicht ganz so kleine Hardware gefädelt(!) als auch jedes einzelne Bit der Software in Assembler geschrieben, ohne dass mir irgendjemand da reingeredet hat. Eine ideal Welt für mich. Niemand hat auch nur geahnt, was ich da mache. Ich hätte auch einfach nichts tun können. Die Firma, die das in Auftrag gegeben hatte hat mich, nachdem es funktionierte, aus dem Stand raus sofort eingestellt und bis zum Firmenende (aus Altersgründen) nicht mehr hergegeben. Das Ding ist übrigens viele Jahre später in Japan plagiiert worden und es wurde explizit mit Kompatibilität zu meinem System(chen) geworben. Das ist alles nachweisbar und sicher keine Angeberei.

    Doch wie dumm ist das denn? Also nicht für mich oder für die Firma. Aber für das WZL in Aachen? Wie kann man so jemanden einfach gehen lassen? Wie kann man da jemanden einfach so machen lassen? Wenn es wenigstens Streit gegeben hätte. Aber nichts da, ganz im Gegenteil. Ist denn wirklich alles egal? Will ich nicht weiter kommen? Oder haben die einfach nicht gesehen, was passiert ist?

    Als ich die andere Seite kennen lernte, Fraunhofer und dem armen Studenten sein Basic-Programm auf einer HP-Maschine zerpflückte, letztlich in die Tonne treten musste, keimte in mir der Verdacht, dass da Pappnasen sitzen. Und damit war nicht der Student gemeint!

    Gut das war Aachen. Da hat das Tradition mit dem Karneval. Nun ja, weitere Büttenreden, diesmal wieder an der RWTH, die dazu führten, dass wir ein wirklich komplexes Messsystem (mit Lasertriangulation mit Fuzzy-Auswertung, also fast schon KI 😉 nach der Studie komplett neu erfinden mussten, führten zu meiner Weigerung mit den Leuten ohne schriftliche und verbindliche, nachvollziehbare technische Aussagen noch zusammenzuarbeiten. Bullshit und Werbesprech von Blendern wurde komplett ignoriert. Die habe ich wörtlich auflaufen lassen. Freilich ohne Wirkung, außer dass einige Projekte zum Glück nicht gemacht wurden. Der Assistent (in einem Fall) verschwand irgendwann und mit viel Politik gab es niemals Konsequenzen. Wir haben uns doch alle lieb… so lange ich die Arbeit mache…

    Es gibt viele Leute aus Aachen, die ich bis heute bewundere, vom absoluten Theoretiker bis hin zum genialem Praktiker des WZLs. Unglaublich viele gute Leute so viel Wissen und dann so viel Mist. So einfach glauben tu ich da gar nichts mehr. Ein Blender unter hundert Genies richtet 99% des Schadens an.

    Die Forderungen hier oben sind wirklich nicht zu schwer. Die Missachtung dieser Forderungen sind aber nicht das Problem. Die Missachtung ist das Symptom.

    Die UNIs sind (zu einem Teil) träge, die Administration hat (zu einem Teil) falsche Prioritäten und eine grundsätzlich falsche Personalpolitik. Die wirtschaftliche Ausrichtung missachtet die Freiheit der Lehre und Wissenschaften. Assistenten werden „verbrannt“ und sehen ihre „Arbeit“ für viel zu wenig Geld nur als Karrieresprungbrett, all zu oft ohne echte Kompetenzen zu entwickeln. Im Grunde ist das einfach nicht mehr akzeptabel.

    • #29 Christian Meesters
      11. Juni 2021

      eine grundsätzlich falsche Personalpolitik

      Die Unis? Oder die Länder? In deutschen Landen sind die Personalschlüssel der Fachbereiche durch die Länder vorgegeben. Sie sind der Grund dafür, dass die Unis einen Wasserkopf haben, aber der Mittelbau ausgedünnt ist. Das Berufungen so stattfinden, wie sie stattfinden, aber ein länderübergreifender tenure-track nicht kommen will. Etc. etc.. Umgekehrt ist es die Hochschullandschaft, die sich mit diesem status quo sehr gut abfindet. Und das lückenhafte Reviewsystem führt international dazu, dass niemand hinschaut welche Hype-Sau da durchs Technikdorf getrieben wird.

      Aber solch ein Lamento führt ein wenig zu weit von dem kleinen Problem der miserablen oder nicht vorhandenen Installroutinen wissenschaftlicher Software.

  18. #30 Spritkopf
    11. Juni 2021

    Entwickler, denen es reicht, dass ihre Software bei sich selbst läuft, aber nicht willens sind, sonstige Ansprüche hinsichtlich Abhängigkeiten, Versionierung, Dokumentation etc. zu befriedigen, sollten vielleicht einfach einen kurzen Disclaimer in ihre Readme-Datei schreiben. Etwa so:

    “Bevor ein potentieller User Lebenszeit an diese Software verschwendet investiert, möge er zur Kenntnis nehmen, dass ich ein Schludrian bin, keinerlei Fragen beantworte und er selbst herausfinden darf, wie er die Software ans Laufen kriegt.
    Falls wer meine großzügige Spende an die Allgemeinheit (i. e.: diese Software) nicht zu schätzen weiß, darf er mich gepflegt… [hier das passende Götz-Zitat einfügen].”

  19. #31 Joachim
    11. Juni 2021

    @Christian Meesters Danke für die Korrektur. Ich kenne im Grunde nur AC ein wenig und meine mit einem Hammer in der Hand sieht alles wie ein Nagel aus.

    „Umgekehrt ist es die Hochschullandschaft, die sich mit diesem status quo sehr gut abfindet.“ kann ich explizit aus eigener Erfahrung mit Physikern (aus GB, DE) bestätigen. Nur, programmieren können die auch nicht 😉 (immer).

    „Lamento führt ein wenig zu weit“ finde ich jedoch nicht. Denn die Ursachen dafür sind im System zu finden.

    Verkürzt: im Umgang mit Assistenten und Studenten, die nichts kosten dürfen, mangelhafter Ausbildung und ein wenig Scheuklappen des Lehrstuhls, die ja was ganz anderes auf dem Schirm haben, als Software.

    Anders gesagt: setzt dich durch. Das ist lange überfällig und nervt wirklich jeden, der halbwegs Ahnung hat (abgesehen von 1% Blendern, die jemanden brauchen, der noch dümmer ist als sie).

    PS: ich kann Bernhard sehr gut verstehen, wenn der wissenschaftliche Software und freie Software gleich setzt und sagt: Notfalls müsst ihr hat zahlen.

    Man kann nicht bei Stackoverflow abschreiben und das ohne Ahnung als wissenschaftlich verkaufen – was bewiesen ist, wenn grundlegende Regeln der Veröffentlichung nicht beachtet werden.

    Sagen wir mal so aus der open source Sicht: wir laden euch ein. Oft genug kommt ihr ja auch, seit willkommen und leistet wertvolle Dinge. Aber ihr seit erst einmal Gast. Unsere Regeln sind sehr alt. Das ist kein Selbstbedienungsladen. Das ist die Idee des Teilens.

    Wenn ihr Forderungen stellt, sehr gerne! Nur zu, fang schon mal an.

  20. #32 Lercherl
    11. Juni 2021

    Verglichen mit TYPO3 sind all diese Pakete ja traumhaft einfach und elegant zu installieren! Open Source Web-Applikationen sind da noch eine Größenordnung schlimmer:

    https://docs.typo3.org/m/typo3/guide-installation/master/en-us/Index.html

    Vor Jahren gab es da einen “Quick Install Guide” und einen ausführlichen. Der Quick Install Guide hat die Hälfte der notwendigen Schritte weggelassen, man hatte damit also keine Chance, das TYPO3 je zum Laufen zu bringen. Heute gibt es noch Überreste davon auf der Webseite:

    It is recommended that you follow each of the steps in the “Quick Installation” section in order to ensure that your installation is completed correctly. After this point you may wish to take a closer a look at the “In-Depth Installation” section to find out how to further configure and customize your installation of TYPO3.

    Allerdings ist unklar, was auf der aktuellen Webseite mit “Quick Installation section” gemeint ist.

    Die Installationsprozedur ist dermaßen krank, dass es mich sogar wieder reizt, ein neues TYPO3 aufzusetzen, aber ich kann doch nicht soviel Masochismus aufbringen.

    • #33 Christian Meesters
      12. Juni 2021

      Mag sein, dass es irgendwo sogar eine Software rumschwirrt, die das alles wieder toppt. Ist genau das nicht der Punkt? Auch wissenschaftliche Software kann beliebig umständlich sein. Die Beispielseite unseres build-frameworks ist schon lustig, zeigt aber nicht die Historie und wie man sich jedesmal verbiegen muss, wenn irgendwo ein Teil geändert wird. Genomannotationssoftware is jedes Mal lustig: > 50 , nicht allein Bibliotheken, sondern Applikationen, die wieder Bibliotheken oder Applikationen benötigen, usw.. Ziemlicher Schrott. Der Punk ist: Ja, es gibt Paket-Warte-Leute (Maintainer), die die Installation automatisieren. Damit sehen viele AnwenderInnen das Problem nicht so direkt.

      Aber auf lange Sicht ist Essig mit der Reproduzierbarkeit. Das ist so ein Bisschen wie in der Enzymologie, wo jahrzehntelang Kinetiken veröffentlicht wurden, aber die Parameter, die dazu führten waren immer verschieden und selten vollständig protokolliert. Und heute muss die Systembiologie ihren Differentialgleichungen so viel Spielraum geben, dass es manchmal Glück (oder Overfitting?) gleich kommt, wenn man eine Aussage machen kann. Wenn heute Gene annotiert werden, mag das stimmen oder auch nicht. Wenn morgen mit den Resultaten weiter Wissenschaft betrieben wird, muss man das mit berücksichtigen. Was für eine Unsicherheit! Was für eine Verschwendung von Lebenszeit (und mehr)!

  21. #34 Joachim
    12. Juni 2021

    @Christian Meesters: Ich hoffe, das der letzte Satz in #31 kein Missverständnis auslöst. Ich habe mich nur in eine andere Sicht hineinversetzt, die nicht zwingend meine Meinung darstellt. Es ist mir klar, dass es hier primär nicht um opensource geht sonder um wissenschaftlich geschriebene Software und dass da berechtigte und notwendige Forderungen gestellt werden.

    Trotzdem, es wäre gut wenn die, die de fakto open source “erfunden” haben und über die Resourcen verfügen sich auch wieder mehr beeidigen würden. Davon können alle nur profitieren.

    • #35 Christian Meesters
      12. Juni 2021

      Ich hoffe, das der letzte Satz in #31 kein Missverständnis auslöst.

      Ach wo. Kommst zwar von einem anderen Fach mit einer anderen Kultur, formulierst anders als ich das tun würde. Aber mir ist das im Grunde auch klar. Man sollte die Reichweite solcher Blogs und Netzwerke (gibt es ja beides Mehrfach) aber nicht überschätzen.

  22. #36 echt?
    12. Juni 2021

    Das Problem ist die Kurzatmigkeit der universitären Forschung. Die praktische Forschung wird von Assistenten und Studies bzw. deren Abschlussarbeiten erledigt. Beide Gruppen haben idR. kein Interesse, dass die entstehende Software von einem Dritten benutzt werden kann. Das Entwickeln von kommerziell anwendbarer Software findet außerhalb der Hochschulen statt. Dort kann man sich eine solche Stümperei schlicht nicht leisten, da man ansonsten vom Markt fliegt.

    • #37 Christian Meesters
      12. Juni 2021

      Nee, das ist denn doch zu pauschal. Karrieren gründen sich auf die Beliebheit und Verbreitung best. Softwarelösungen. Umgekehrt gibt es in der kommerziellen Welt auch viel Schrott (Stichworte: Cisco Firmware; Intel patches; Microsoft patch-Historie ganz allgemein – viele gute patches, nicht wenige Klopper; etc. etc.).

      Und das Bewußtsein in der akadem. Welt für die Probleme wächst ja auch – auch im Softwarebereich. Einige Initiativen waren im Blog auch bereits Thema.

  23. #38 Felix
    12. Juni 2021

    Eigentlich wäre es doch ganz einfach. Die Informatik-Fakultät setzt ein code review system auf (gerrit, oder was auch immer), welches zwingend von den anderen genutzt werden muss.
    Ein mix aus Anfängern und Experten aus verschiedenen Fakultäten muss reviewen (und zwar die einzelnen commits in der Entstehungsphase, nicht erst das fertige Produkt), quasi als Teil des Studiums.
    Der code wird alleine schon dadurch besser dass ich weiss das andere drauf schauen werden (persönlicher Stolz).
    Als Sahnehäubchen darf ein Student ein continuous integration System aufsetzen und warten.

  24. #39 echt?
    12. Juni 2021

    @Christian

    Das mag in der z.B. Biologie anders sein. In meinem Fachgebiet gibt es vieeeeeel kommerzielle Software. Von den Hochschule nur “auf eigene Gefahr Lösungen”. So einen Kram werfe ich schon aus Selbstschutz nicht an.

    @Felix

    So wird an Hochschulen aber nicht gearbeitet. Da ist jeder Prof. sein eigener König und wird sich Vorgaben und Kontrollen aus anderen Disziplinen verbitten.

    • #40 Christian Meesters
      12. Juni 2021

      Welches Fach das ist, weiß ich nicht. Aber die gelegentlich eingestreuten Links aus Teilchenphysik, Atmosphärenphysik, Cheminformatik und anderswo belegen doch, dass es sich um ein allg. Problem handelt. Der Unterschied von Bioinformatik zu der IT der anderen Naturwissenschaften rührt von einer ehedem wenig IT-affinen Community, die erst langsam versteht, dass nur große kollaborative Projekte Lösungen für die immer neuen techn. Revolutionen darstellen können. In manchen Geisteswissenschaften sieht man das Problem großer Daten nicht auf sich zurollen, in anderen Disziplinen ist man noch weiter zurück als in der Bioinformatik.

      Was die Vorstellung “die Inf-Fakultät rettet die IT-Welt” angeht: Ja, das wird so nicht gehen. Da sind zu viele Dinge im Weg. Eitelkeit ist sicher auch ein Aspekt.

  25. #41 Joachim
    12. Juni 2021

    @Christian Meesters #35
    1) Tut mir leid, #35 kann ich nicht verstehen. Klingt nicht lustig. Ist aber auch relativ egal, mit einer Ausnahme: Ich wollte niemandem auf die Füße treten. Im Gegenteil, was du hier schreibst ist aus meiner Sicht nicht nur einfach korrekt. Es sollte selbstverständlich sein. Ich kenne niemanden, der sich auch nur halbwegs auskennt und das anders sieht, in der Regel sogar deutlich darüber hinaus geht.

    2) „echt?“ hat irgendwie auch Recht. In der Wirtschaft wäre die Situation, wie du sie beschreibst höchstens in einer Klitsche tragbar und auch dort eigentlich nicht.
    Allerdings, es gibt eine Realität. Bei uns gab es kürzlich bei uns eine „Auseinandersetzung“ um Versionsnummern. Der Kunde wollte nach einer minimalen Korrektur 2.0, war aber 1.2.1003. Nun gibt es eben eine Kundenversionsnummer, die mir egal ist und eine echte Versionsnummer. He, ich habe anderes zu tun… Buildnumbers werden automatisch generiert.

    3) Die Idee von Felix hat auch etwas. Git zum Beispiel ist ein nicht zu unterschätzender Ordnungsfaktor, der (manchmal) die Frage beantwortet: Was ist los, gestern ging das doch noch. Der Erfolg von github, gitlab und co. zeigt, das da noch viel mehr geht. Es entsteht ein zentraler sehr gut skalierender Softwarepool. Was öffentlich ist und was nicht, kann man selbst entscheiden.

    4) Man könnte durchaus den Review-Teil erst einmal weglassen und nur sammeln. Ein Wiki könnte User-Informationen zur Nutzung sammeln. Ein Issue-Tracking-System etwa wie bei gitlab trägt zur Softwarequalität bei. Toll wäre es, wenn Unis länderübergreifend hier zusammenzuarbeiten könnten. So entstehen und verbreiten sich „best practices“.

    Das wäre etwa vergleichbar mit den alten FTP-Servern der Universitäten, die früher jedem zur Verfügung standen. Nur in modern mit deutlichem Mehrwert.

    5) Um noch einmal Missverständnisse zu vermeiden: Das ist nur einer von sehr vielen möglichen Vorschlägen. Es ist sicher notwendig, Probleme erst einmal auf den Tisch zu bringen. Dann aber muss man entscheiden und es tun. Fachpersonal und Resourcen sollte an den Universitäten ausreichend zur Verfügung stehen. Auch wenn das unwahrscheinlich ist, dass ich da gebraucht werden könnte, ich würde sowas aktiv unterstützen.

    • #42 Christian Meesters
      12. Juni 2021

      Es gibt viele Vorschläge. Auch zu Kollaborationen.

      Allerdings sind gar nicht alle Informatiker auch gute Programmierer, haben ihre eigene Forschung (zumindest die an den Unis) oder interessieren sich überhaupt für naturwissenschaftliche Informatik. Nicht alle Softwareentwicklung läuft in nicht-IT-Gruppen. Was Softwaremanagement ist und wie das geht und warum das wichtig ist, haben inzwischen fast alle verstanden – meinem Lamento zum trotz. Wenn dennoch nicht-IT-Gruppen Software veröffentlichen (meistens ziemlichen Schrott unter Missachtung aller Grundsätze des Software Engineering, aber nicht immer), dann weil echt? eben recht hat. Ist halt nur etwas unterkomplex.

      Man kann jetzt lange das Hätte-könnte-sollte im Detail mit allen Für und Wider diskutieren. Und vor allem diskutieren was wie in welcher Disziplin anders ist und warum man selber recht behält. Das wird im Thread eines Blogs wohl immer so sein 😉

  26. #43 Joachim
    12. Juni 2021

    Christian Meesters, ich könnte nun zu #42 jeden Punkt auseinander nehmen und in jedem Fall wenigstens einen wahren Kern entdecken. Das ist einfach korrekt (muss ich das nun belegen?). Ich will nun auch nicht Hätte-könnte-sein fortführen.

    Fakt ist aber in einem wissenschaftlichem, objektivem Sinn – behaupte ich jetzt mal 😉 es ist unrealistisch, dass alle Biologen programmieren lernen und alle Informatiker Biologie, oder manchmal sogar programmieren. Es wird immer “Bastel-Lösungen” in Python oder Octave geben. Da ist nicht einmal was Schlechtes dran. Sowas ist eben nur nicht wiederverwertbar. Wenn das so ist, dann muss man das akzeptieren und etwas daraus machen.

    Die Erfahrung lehrt: Es ist zu trennen zwischen fachspezifischen Dingen (Biologie, Physik, Chemie), einer Infrastruktur und der Administration. Es geht nicht, dass sich Biologen um die Infrastruktur kümmern müssen. Lernen ist okay, immer gut, doch die Biologen haben genau einen Job.

    Die einfachste Konsequenz ist: Stell denen einen git-Server hin, gib ihnen 5 git Kommandos in Scripte verpackt und alle sind happy (na ja, sie werden fluchen… für eine gewisse Zeit). Sucht jemand was, so sage ihnen, „da im Git, da hat der und der dies und das getan. Frag den“. Mir der Zeit werden die Insellösungen immer weniger. Issues, ein Forum, notfalls eine Mailingliste schaffen Nähe und softwarespezifischen Austausch, verbessern Qualität. Als Lehrer kannst Du git einfach voraussetzen.

    Natürlich geht es nicht um git. Es geht darum, einen guten Virus in die Welt zu setzen, der Fakten schafft. Du kannst predigen, wie du willst, das wird wenig verändern. Du musst mit deinen eigenen Ressourcen haushalten. Man kann nicht immer alles und sofort. Kleine Schritte, Fehlschläge sind vorprogrammiert, du brauchst Verbündete und Fakten.

    Doch stell erst einmal den Git-Server hin, das ist kein Problem! Wenn ihr da sogar mit Großrechnern umgehen könnt, dann werdet ihr sicher einen alten linux- oder freebsd fähigen Rechner in einer Besenkammer finden oder git sogar schon haben.

    Der Aufwand ist minimal, maximal ein paar Stunden. Gitlab ist doof, aber sicher mehr als ausreichend. Gibt es keinen Admin bei euch? Als Lehrer hast du den Einfluss, dass bei den Schülern als unabdingbar durchzusetzen. Das dauert was. Doch ganz ehrlich, solche Dinge werden sowieso geschehen. Ich meine, wir sind auch vom Papyrus auf Rechner umgestiegen.

    Natürlich musst du das nicht genau so machen. Vielleicht bin ich da viel zu naiv. Aber bitte, denke als praktischer Wissenschaftler. Es gibt ein Problem, dass sich nicht trivial lösen läßt. Die sehen das nicht ein, können es gar nicht wissen. Wie bekomme ich das geknackt?

    • #44 Christian Meesters
      12. Juni 2021

      Diese Infrastruktur gibt es längst (ob die Personaldecke der universitären IT-Zentren ausreichend ist, steht wieder auf ‘nem anderen Blatt). Und wer keinen lokalen SCM-Server nutzen kann oder mag, kann auch ausweichen (github, sourceforge, bitbucket, etc.).

      Auch existieren längst dedizierte Studiengänge rund um naturwissenschaftliche Informatik.

      Wenn weiterhin so publiziert wird, wie es nun einmal ist, dann hat das andere Gründe – nicht fehlende Infrastruktur, Lehre, Service. Wenn weiter so gearbeitet wird, wie es wird, hat das ähnliche Gründe. Und es gibt auch längst Initiativen, die es besser machen: Dieser Virus ist in der Welt. Vielleicht(!) hilft der eine oder andere Artikel ihn zu verbreiten oder sich gegen die “bösen Kollegen” Vanitas und Ingnorantia zu immunisieren. 😉

  27. #45 Joachim
    12. Juni 2021

    Irgendwie verstehe ich offensichtlich nicht, wo denn das Problem ist. Infrastruktur ist da, Lehre, Service auch. Alles ist gut, die Universitäten machen abgesehen von einigen Blendern nichts falsch. Was bleibt dann noch?

    Sorry, so sehr ich da Dinge nachvollziehen kann, das Bild ist ein unrealistisches Ideal.

    Wo ist denn der Ersatz für die FTP-Server? Wo sind die ~name Verzeichnisse hin? Wo gibt es noch so Leute wie Forster mit seinem Aribas (was nur ein keiner Teil seiner Leistungen ist)? Wo ist die ganze geniale Software aus dem Universitätsbereich, die früher zugänglich war und sich leicht durch jeden Fortran-Compiler, selbst auf einen z80 quetschen ließ? Klar, die gibt es manchmal noch. Wie Lua einer brasilianischen katholischen Hochschule. Sind Biologen so speziell? Nun mal Butter bei die Fische. Das geht alles nicht zusammen (in meinem kleinen Hirn – selbst wenn früher war alles besser natürlich kompletter Unsinn ist).

    Weitere „Analyse“ zu den von euch verwendeten Softwaretypen und möglichen Konsequenzen zurückgestellt. Das bedeutet: dies hier ist unvollständig und sowieso nur eine Frage. Die ist nicht als Provokation gemeint. Ich bin hier der, der dumme Fragen stellt.

  28. #46 Joachim
    12. Juni 2021

    Nachtrag: vielleicht bringt es die Diskussion wirklich nicht. Ich mache dir einen Vorschlag:

    Gib mir so ein Programm, dass sich kaum installieren lässt und das ihr dringend braucht. Ich mache dir ein deb-Paket daraus das unter Ubuntu oder Debian läuft. Notfalls auch snap. Und das macht ihr dann öffentlich zugänglich. Nur bei win, da habe ich definitiv keine Lust dazu. Das müsstet ihr dann bezahlen, wenn das denn unbedingt sein muss.

    Ich dokumentiere, wie ich das gemacht habe und sogar leicht “Updates” hinbekommen. So könnt ihr das dann in vergleichbaren Fällen script-gestützt selbst.

    Was das Problem mit der Lizenz angeht: tut mir leid, das kann ich nicht lösen. Das müsst ihr mit dem Urheber klären.

    Ich ahne schon, was nun kommt… Dann aber kann ich euch nicht helfen. Verstehst du, dass ich das irgendwie als frustrierend empfinde? Ich priorisiere normalerweise Lösungen.

    • #47 Christian Meesters
      12. Juni 2021

      Danke für das Angebot. Nun, wir laufen unter Centos – und demnächst, weil Centos stirbt, wohl unter einem neuen Clon. Das hat auch seine technischen Gründe. Nur Systemkomponenten werden als Systempakete installiert. Aber wissenschaftliche Software wird i.d.R. über *Conda-Derivate (schrecklich generisch und lahm) oder auf HPC-Systemen mit maschinenspezifischen Compilerflags installiert. Die HPC-Welt setzt hierzu eigene build-frameworks ein. Bin durchaus in der Lage das zu bedienen und den Code zu schreiben den es braucht ein Schrotttool zu wrappen – was nicht notwendig wäre …

      Zur Einordnung: wir haben z. Zt. mehr als 1000 verschiedene Pakete als sog. Modulefiles installiert (nicht viel, solche Zahlen hängen nicht von der Größe einer Maschine, sondern der Heterogenität der Nutzerbasis ab).

      Der Beitrags-Rant zielt natürlich auf eine Community. Es geht nicht um eine best. Software, sondern um ein generelles Problem. Irgendeine Software irgendwie installieren zu können ist eine Lösung auf Zeit – und bringt einige Fragen zur Qualität der Ergebnisse mit sich (wie hier auch schon geschrieben und treffend kommentiert). Und es ist auch nicht praktikabel, wenn einer von uns Maintainern aus der Community für ein Update der Software X eine Woche Arbeitszeit aufwenden muss, weil die Macher mal wieder alles über den Haufen geworfen haben, was bei der letzten Version noch galt und das nicht dokumentierten. Dann kann man das zwar überall (mit dem einen build framework) installieren, aber ob das morgen noch gehen wird, rückwärtskompatibel oder überhaupt korrekt oder wirklich überall zu installieren ist steht jedes Mal in den Sternen. Und daneben gibt es noch viel Software, die von Druiden zu Druiden weitergegeben werden und sich allem entziehen, was zu Qualitätssicherung zählt. Und viel Software wo wir Nutzern zur Installation Hilfestellung geben, uns aber nicht in der Lage sehen das zu supporten – sonst würden wir sehr schnell nichts anderes mehr tun. Bei einem System mit hunderten Nutzern ist das der einzig gangbare Weg – und jetzt bitte nicht das Containerfass aufmachen ;-).

      Ich fürchte, hier treffen Weltbilder aufeinander.

  29. #48 Joachim
    12. Juni 2021

    Ja, ja und ja. Noch mehr Bestätigung, dass ich das verstanden habe: ja und ja und ja.

    Hier explizit: DU HAST RECHT.

    Ernsthaft. Natürlich! Ich wollte aber auch niemals selbst Recht haben. Genauer ist mir das vollkommen egal. Deshalb streiche ich einmal den ganzen Kram.

    (Ganz kann ich es nicht lassen: gehen freeBSD-Ports nicht auch auf HPC-Systemen? Okay, ich halte schon die Klappe. Ich höre schon den Seufzer. Vergiss es)

    Ich glaube, ihr seit einfach viel zu nett. Es bleibt mir offensichtlich nichts, als dir sämtliche Daumen zu drücken und allen verdienten Erfolg zu wünschen. Und danke für all diese Gedanken und die Geduld.

  30. #49 stone1
    13. Juni 2021

    @Christian Meesters #22

    O-oh, das hört sich in der Tat schlimm an (Fire 5.1), mit einem externen Tool um Mathematica-Daten direkt auf ein Drive zu speichern zur Umgehung von Speicherengpässen, und dann noch ein anderes Tool, um ein Tool zu laden, das Rechenoperationen beschleunigen soll… OMG.
    So ähnlich hab ichs bei meinen ersten größeren C64-Programmen auch gemacht. ; )

    Ich glaub jetzt möchte ich gar keinen Überblickartikel mehr lesen, ich hab schon genug Einblick erhalten, um nachvollziehen zu können, warum Du manchmal etwas gefrustet zu sein scheinst. Vollkommen zurecht, wenn solch haarsträubende Workarounds mehr oder weniger Standardprozedur bei solchen Projekten sind.

  31. #50 stone1
    14. Juni 2021

    Ergänzung @#49

    So ähnlich hab ichs bei meinen ersten größeren C64-Programmen auch gemacht.

    Die musste aber auch niemand anders lesen oder verwenden, und installieren schon gar nicht. Floppy einlegen, LOAD “PRG0x”,8,1 ein, zwei Minuten warten, RUN reichte völlig. ; )

    • #51 Christian Meesters
      14. Juni 2021

      … and the times, they are a-changing.

  32. #52 Joachim
    14. Juni 2021

    @stony1: “wie und von wem heutzutage naturwissenschaftliche Software entwickelt wird.”

    Alles natürlich nur IMHO:

    Natürlich liefert eine Studie eine wissenschaftliche Faktenbasis. Die Frage ist, was man gewinnt oder genau untersucht.

    Ich gehe nicht davon aus, dass Wissenschaftler Software prinzipiell anders entwickeln, als so, wie man das sonst so findet. Sicher werden da Studenten oder Informatiker 😉 ohne hinreichende Programmierkenntnisse dabei sein. Bei FIRE habe ich in die Doku geschaut. Wenn die Software ähnlich wie die Doku ist, dann ist sie “speziell”…

    Wichtig ist neben den Regeln, die Christian Meesters hier schon fast predigt, die Idee der Protokolle oder Gebrauchsfälle.

    Wie man mit einem Programm umgeht, das ist ein Protokoll oder Vertrag zwischen dem Anwender (oder einer Anwendersoftware) und dem Programm. Das ist eine Art Sprache. Ein Beispiel ist ein Menü mit “Datei öffnen, Auswahldialog und Abbruch oder Okay-Button.

    Diese Protokolle gibt es auch innerhalb von Programmen. Das kann sehr komplex werden, insbesondere, wenn ein Status dazu kommt (wie etwa die geladene Datei).

    Kurz: wer Protokolle nur aus intuitiv aus seiner aktuellen Sicht zusammen baut, der schafft für Nutzer (Menschen oder Programme) bestenfalls eine neue Sprache, die gelernt werden muss, in der Regel aber nur Kauderwelsch.

    Es gibt Methoden, wie man das richtig macht. Wenigstens die Gebrauchsfälle sollte man überlegt haben. Man sollte sich wenigstens an common practice (Windows, Apple) bzw. an sogenannte “Verhaltensmuster” (Wikipedia!) und Paradigmen der verwendeten Sprache halten.

    Mir scheint, das ist neben der Missachtung der Regeln, die Christian Meesters hier immer wieder treffend formuliert, IMHO das Hauptproblem bzw liefert ein Maß für Qualität einer Software.

    Keine Regeln, keine Protokolle => Kauderwelch. Bei der Qualität ist dann wahrscheinlich: Läuft nur hier, aber Mittwochs manchmal nicht.

    Natürlich, wenn man das berücksichtigt, dann gilt noch nicht, dass ein Programm automatisch und überall einfach installierbar ist. Doch Struktur ist notwendige Bedingung dafür eine Installation überhaupt in Erwägung zu ziehen oder sie ggF. nachrüsten zu können.

    Es hängt alles zusammen…

    • #53 Christian Meesters
      14. Juni 2021

      Wenn die Software ähnlich wie die Doku ist, dann ist sie “speziell”…

      Sie ist nur ein Beispiel aus der Physik.

  33. #54 ZuHauseForscher
    14. Juni 2021

    Und wenn man es schließlich gegen alle Erwartung doch noch zum Laufen gebracht hat, blutend, schwitzend und unter Tränen der Erleichterung, geht der Rechner kaputt beim Herstellen des ISO.

  34. #55 Joachim
    14. Juni 2021

    “Sie ist nur ein Beispiel aus der Physik.”

    “Speziell” war ja nicht als Kompliment oder gar als Entschuldigung gedacht. Ich habe da so ein Vorurteil, wenn jemand meint, Brainfuck-Style sei eine schöne Sprache.

    https://www.ttp.kit.edu/~asmirnov/FIRE-Examples.htm

    Ich fürchte, einige der Programmierer (nicht nur) bei wissenschaftlicher Software sind absolute Perfektionisten. Die geben 110% und agieren damit komplett am Limit. Dies, obwohl sie in ihrem Fach durchaus Meister sein können. Die haben vor lauter Anspruch keine die Zeit sich um Installationsmechanismen oder Versionierung und „so’n Kram“ zu kümmern.

    Weil hier noch und mal eben da noch etwas und dann Stolz meinen, ein Programm / eine Lib sei „fertig“, wenn die „letzte Zeile“ geschrieben ist – bis zum nächsten Flüstern dieses Teufels Perfektionismus.

    Bei uns ist das Wort „fertig“ verboten! Man wird (wirklich!) ausgelacht, wenn man das sagt (oder eine Buildnummer vergisst).

    In der Technik gilt: maximal 75%. Als Motorradfahrer und als Musiker ist das einzige, was ich mit 100% assoziiere: wer am Limit fährt, der crashed.

    Beim Motorrad hilft da ein Crash-Kurs. Dein Job, ich weiß.

    Warum fällt mir nun nur die Geschichte von Don Quixote und den Windmühlen ein? Ist nicht „bös“ gemeint! Vielmehr mitfühlend.

  35. #56 stone1
    15. Juni 2021

    @Joachim

    @stony1:

    Ich würde dich bitten, mich abseits des OLT (wo Du mir auch das versprochene Bierchen ausgeben kannst) mit meinem normalen Nick anzusprechen. Wir wollen doch bei Sachthemen zumindest den Anschein von Seriosität wahren, nicht wahr? ; )

    wenigstens an common practice … halten

    Gerade Studis aber auch andere haben oft noch nicht die nötige Erfahrung, um wirklich ein Gefühl dafür zu haben, was common practice ist, dafür gibt es mW. ja auch kein verbindliches Regelwerk.
    Für Leute, die es nicht gewohnt sind, in einem Team zu programmieren und ihre eigenen Süppchen kochen, ist das eine zusätzliche Herausforderung.

  36. #57 Joachim
    15. Juni 2021

    Okay stone1, ich habe keine Ahnung, wie das jetzt passiert ist. Wirklich keine Ahnung, keine Absicht. Rechtschreibprüfung habe ich getestet. Die war es nicht 🙁

    Langsam könnte es teuer werden mit den Bierchen 😉 Immerhin, ich würde mich freuen.

    “… nicht die nötige Erfahrung …”
    Da ist sicher etwas dran. Ich habe das aber auch bei Kollegen mit einiger Erfahrung gesehen. Ein kluger und netter Kollege zum Beispiel schreibt „wunderschönen“ Code. Formatierung, Namensgebung, Gestaltung. Aber ich habe noch niemals „kreativere“ Fehler gesehen – nicht einmal bei mir ;-). Wenn es eng wird, so am Ende, wenn es schwierig wird, so bei den letzten 5%, dann driftet der ab.

    Perfektionismus ist ein größeres Problem, als man so meint. Besonders, weil ich denen dann ihren Traum nicht so einfach brutal zerstören will. Manche sind dann echt geknickt… Muss’te durch.