Alle Software – sofern nicht sehr klein oder sehr lange gepflegt (Jargon: “gut abgehangen”) – enthält Fehler. Immer. Wissenschaftliche Software insbesondere, denn sie ist oft komplex, leider zu oft von Leuten entwickelt, die wenig Ahnung von Softwareentwicklung haben (was zusätzliche Fehlerquellen einführt) und nicht zuletzt wird sie häufig als proof-of-concept entwickelt (sie war also niemals zum produktiven Einsatz gedacht).

In dieser Gemengelage wird Software verpackt und anderen Forschenden zur Verfügung gestellt, denn in der Regel installieren diese ihre Software zur Auswertung nicht von “scratch”, also von nicht von Grund auf selber. Man verwendet stattdessen paketierte Software – in der Bioinformatik mittels von Bioconda, auf Hochleistungsrechnern eher mit Hilfe Softwarepaktmanagern wie spack oder easybuild*. Wie auch immer: Jemand packt die Software, jemand installiert diese und – vielleicht die/derselbe – jemand anders nutzt sie.

Es wird also keine große Überraschung sein, auf wen da geschimpft wird, wenn etwas nicht klappt, oder? Immer dann, wenn Moleküle in der Simulation explodieren, das Sequenzanalyseprogramm segfaulted oder man schlicht weiß, dass das Ergebniss falsch sein muss – die Admins oder Paketmanager sind schuld! Schließlich senden wir die Montagsexemplare unseres Konsumgutrauschs ja auch nicht an den Hersteller, sondern an das Unternehmen, welches uns den Kram verkauft hat, oder? Bei wissenschaftlicher Software sind die Paketmanager bloß ganz sicher der falsche Adressat: Sie können nicht für abertausende Pakete mit jeweils abertausenden oder gar Millionen Zeilen von Code die Wartung übernehmen, sondern nur das Paket warten und so garantieren, dass die gewünschte Software irgendwie installiert werden kann.

Wenn ihr also wissenschaftliche Software nutzt und diese gibt eine Fehlermeldung aus oder stürzt sang- und klanglos ab, dann habt ihr zwei Möglichkeiten:

  1. Ihr schreibt den Administratoren eures Systems / den Paketmanagern / eurer Großtante und hofft, dass irgendjemand euer Problem mit der Software löst.
  2. Oder ihr schreibt einen sogenannten Bugreport (auch issue report genannt) auf der Entwicklungsseite der fraglichen Software.

Na? Welche Option ist wohl vielversprechender, wenn euch um die Lösung eures Problems gelegen ist?

Was hat das mit der Reproduzierbarkeitskrise zu tun?

Die Antwort auf diese Frage liegt auf der Hand: Fehlerhafte wissenschaftliche Software** kann zu Fehlern in der Auswertung von Daten oder in Simulationen führen. Beseitigte Fehler können Fehlschlüsse in Publikationen vermeiden helfen – Fehlschlüsse, die sonst gar nicht auffallen. Und vor allem können behobene Fehler einem das Leben einfacher machen und im Extremfall den Unterschied machen zwischen einer Publikation, die man schreiben kann, weil Ergebnisse vorliegen, die man anderweitig gar nicht erhalten hätte.

Darüber hinaus wird in der Bioinformatik wahrlich viel Schrott publiziert. Zu oft wird auch einfach nach dem fire-and-forget-Prinzip publiziert – ist das Paper einmal geschrieben, wird sich um die Software nicht mehr gekümmert. Das ist für Anwender selbstverständlich ein Problem: Es steht ja geschrieben, dass die veröffentlichte Software das eigene Datenanalyseproblem zu lösen vermag. Dumm, wenn das nicht der Fall ist. Einen Bugreport zu schreiben, kann die EntwicklerInnen dazu treiben, das beschriebene Problem zu lösen und ihre Software zu verbessern. Gibt es keine Antwort, keine Lösung, ist zumindest für andere Nutzer klar, dass dieses Software-Projekt bereits den Gang in die Vergessenheit angetreten hat – aller Versprechungen im “Paper” zu Trotz. Und das ist für Dritte wertvoll, können diese doch unmittelbar sehen, dass sie sich nach Alternativen umblicken müssen.

Wie geht das – einen Bugreport schreiben?

Ein Teil der Motivation kann somit zwar Frust sein, aber damit nicht noch mehr entsteht, hier ein kurzer Leitfaden zum Schreiben von Bug- oder Issuereports, damit eure Kritik – und das ist ein Bugreport auch immer – produktiv ist:

  1. Ihr merkt es schon, der Blog, der ziemlich viele Begriffe eindeutscht, besteht hier die ganze Zeit auf “Bugreport” oder gerade eben sogar “issue report”. Das hat einen einfachen Grund: Auch unter Deutschen ist die lingua franca von Technik und Wissenschaft Englisch. Und da sich die Angelegenheit in der wissenschaftlich-technischen Sektion des Internets abspielt: Bitte gutes Englisch.
  2. Bitte knapp und höflich.  — Höflich sollte selbstverständlich sein, ist es leider nicht. Bitte kein Kommandoton und keine Unterstellungen von Fehlerhaftigkeit. Und bitte nicht in epischer Breite erläutern, was der eigenen Ansicht nach schiefläuft, sondern sich das Wesentliche beschränken.
  3. Das Wesentlich sollte sein: Was habe ich erreichen wollen? Was habe ich versucht? (Achtung: Das sind zwei verschiedene Dinge!) Und natürlich: Was ist passiert? Beziehungsweise: Was habt ihr beobachtet? Und an der Stelle sind dann Logfiles oder Tracebacks (das Zeug, was manche Programme noch ausschreiben, wenn sie röchelnd aufgeben) oder schlicht Fehlermeldungen anzuhängen (und außer bei graphischen Benutzeroberflächen: Bitte keine Screenshots, denn die sind oft lästig, weil man bei wissenschaftliche Software oft nach irgendwelchen Zeichenketten suchen muss und dann als Korrektor peinlich genau abtippen muss. Wie oft habe ich schon nach den Logfiles fragen müssen … Na, jedenfalls: Wenn ihr diesen Punkt richtig macht, spart ihr euch und den Entwicklern Zeit.)
  4. Jetzt wird es spezifischer: Wenn ihr einen Bugreport zu einer Software angebt, sollten die Entwickler folgende Informationen haben:
    1. Die Version der Software. Das ist aus verschiedenen Gründen für die Entwickler sehr wichtig: Habt ihr eine ältere Version, kann es sein, dass der Fehler längst behoben wurde oder sich der Code an entscheidender Stelle verändert hat. Ist eure Version aktuell, ist das Problem womöglich noch drängender. (Und die Chance auf schnellere Lösung steigt etwas.)
    2. Wie wurde die Software installiert? Aus den Quellen oder via Conda, brew, etc.?
  5. Bitte keine Duplikate. Wenn es euch auf der Githubseite entgegenschreit, dass “euer” Bug schon berichtet wurde, braucht ihr nicht in die Kerbe zu hauen. Und außer in Ubuntuforen ist es auch verpönt ein simples “for me this does not work, too!1!!11!!!” oder ähnlich vielsagende Kommentare zu schreiben. Ihr könnt etwas beitragen? Gut. Sonst wartet einfach, bis der Bug “gefixt” ist oder – wenn das schon länger zu dauern scheint, hakt einfach mal freundlich nach, ob es Fortschritte gibt.
  6. Manchmal ist es sinnvoll, die Daten zu zeigen, die zu einem Crash führen. Selbstverständlich kann man nun nicht terrabyteweise Daten hochladen – Zeigt die Zeilen, die zum Crash führen und wenn es binäre Daten sind, versucht vielleicht eine kleine Datei zu schreiben, die man doch hochladen kann.

Ach, und nulltens müsst ihr natürlich den Flecken im Internet finden, wo ihr eurer Report loswerden könnt. Wenn die Software eures Vertrauens das nicht anzeigt und die Suchmaschine eures Vertrauens kein eindeutiges Ergebnis liefert, dann habt ihr Pech gehabt. Leider gibt es immer noch Macher wissenschaftlicher Software, die ihren Code nicht rausrücken und zur Diskussion stellen. Und wenn ihr keine Ahnung habt, wie ihr anfangen sollt … normalerweise gibt es schon einige Beiträge in der Bug- oder Issuespalte. Einfach mal reinschnuppern, dann bekommt man schnell eine Ahnung davon, wie die Leute drauf sind und wie man am besten anfangen kann.

Hier noch mal der Vergleich, zwischen einer Software, die ihre Nutzer ernst nimmt und einer Software, die das gar nicht erst versucht:

Beispiel für eine aktiv entwickelte Software (links) und ein eben erst entwickeltes Projekt, wo der Autor des Artikels erst mal naiv gefragt hat, wo der Code ist (rechts). Nicht alles “issues” sind bug reports, manche drehen sich um neue Funktionalität oder allgemeine Fragen. Keine oder ungenügende Antworten sind auch ein Indikator für die Qualität wissenschaftlicher Software. Im Falle von snakemake ist die Zahl der “issues” somit vor allem Indikator einer lebendigen “Community”.

Und umgekehrt …

Ok, die Liste oben erhebt keinen Anspruch auf Vollständigkeit – vielleicht fallen euch noch ein paar gute Punkte ein? Her damit! Wir können uns aber auch fragen, was erwarten eigentlich EntwicklerInnen? Und das wurde auch gemacht (dieses Buch, Kapitel 24). Da stehen dann auch so Punkte wie “gute Grammatik ist wichtig” – und das stimmt mit meinem Punkt 1 überein, außerdem kann ich bestätigen, dass manche Bugreports mich absolut ratlos zurücklassen, weil die Grammatik unterirdisch ist (und dabei meine ich nicht allfällige Fehler wie in diesem Blogpost). Ein bisschen Mühe muss halt sein.

Niemand ist “nur” AnwenderIn

Gerade von Bioinformatik-AnwenderInnen höre ich immer wieder*** ein “Aber, ich habe ja keine Ahnung …” mit Bezug auf IT-Dinge. Das ist selbstverständlich Unsinn. Wer wissenschaftliche Software anzuwenden versteht, hat bereits einen Fuß in der IT-Welt. Ebenso wie Wissenschaft von der Gemeinschaft aller Forschenden profitiert und man sich (im Idealfall) wissenschaftlich-technische Hilfestellung gibt, kann man auch in IT-Dingen der Gemeinschaft was zurückgeben und den EntwicklerInnen wissenschaftlicher Software Feedback geben. Für wen das nicht Grund genug ist: Wenn ihr wegen eines Softwarefehlers in eurer Arbeit nicht mehr weiter wisst, ist es spätestens aus Eigeninteresse Zeit und Grund tätig zu werden und einen Bugreport zu schreiben.

+++

  • Der Unterschied liegt a) in der Performance – weil Conda installierte Software nicht optimal kompiliert wird, sondern auf jedem System laufen soll und b) darin, dass Cona-Paketmanager so ziemlich jede Software unabhängig von Lizenzfragen und ähnlichen Kinkerlitzchen bereitstellen.

** Wie immer geht es um wissenschaftliche Software. Bei der Bürosoftware eurer Firma habt ihr womöglich andere Bedingungen (z. B. eine Telefonnummer, wo der Softwarekummer abzuladen ist).

*** direkt oder Hörensagen

flattr this!

Kommentare (27)

  1. #1 Dr. Webbaer
    21. März 2022

    1.) Bug Reports sind nicht einfach zu schreiben.
    2.) Es macht Sinn betreuende Administratoren sie schreiben zu lassen.
    3.) Ausbesserungen der SW-Entwicklung kommen in der Regel zu spät für eigene Arbeit.
    4.) Sog. Workarounds sind auf Anwenderseite dringend zu präferieren, nicht selten stehen sie bereit.
    Sie können auch angefragt werden.

    MFG
    WB

    • #2 Christian Meesters
      21. März 2022

      Hm, interessante Urteile – aus meiner Sicht, ganz ehrlich, Vorurteile. Ich gehe mal durch:
      ad 1) Wieso?
      ad 2) Mache ich oft genug. Mehr und immer ist einfach nicht möglich. In dem Fall kann ich auch für alle KollegInnen sprechen: Denen geht es auch so, dass sie das schlicht nicht können. Zur Erinnerung: Im Zweifel geht es um tausende Softwarepakete. Einige Zentren sind personell besser ausgestattet, dennoch gibt es Grenzen.< ad 3) Angesichts von üblicher Projektdauer und Releasecyclen aktiv entwickelter Software wage ich das anzuzweifeln. Doch, ja: Wo nicht oder nicht kollaborativ entwickelt wird, stimmt das natürlich. Ohne es jedoch zu versuchen, erzielt man definitiv keinen Fortschritt im eigenen Interesse. ad 4) ab und an zutreffend. Ob das jedoch im Sinne reproduzierbar auszuführender wissenschaftlicher Software ist, die reproduzierbare (wo deterministische Algorithmen eingebaut sind) Ergebnisse liefern sollen?

  2. #3 Dr. Webbaer
    21. März 2022

    ad 1 )
    Software ist sozusagen für die operativ tätige, fachliche Kraft eine Art “Black Box”, es macht einen Unterschied, ob fachlich gearbeitet werden kann ODER ob genau fachlich erklärt werden kann, wie warum, wann und wie gemeint gearbeitet wird.
    (Soll in etwa heißen, dass eine Kraft, die am Partner oder Kunden ist, anders interessiert und ausgebildet ist, als im Meta sozusagen Software anzuregen zu verbessernd in der Lage ist. – Ja, auch bei Abnehmern oder Nutzern im Bereich der (Natur-)Wissenschaft hat der Schreiber dieser Zeilen keine grundsätzlich anderen Erfahrungen gesammelt.)

    ad 2)
    Insofern gibt es im Bereich der Software-Entwicklung verschiedene Rollen, einige Personen des so gemeinten Apparats kümmern sich insofern um besondere, auch sozusagen dynamische Anforderungslagen der fachlichen Ebenen, suchen sie aufzunehmen und dann sozusagen übersetzend in Pflichtenheften weiter zu tragen.
    Auf dass dann idF umgesetzt werden kann bis könnte (Umsetzungen erfahren machmal auch sozusagen Umbrüche, wenn sich präferiert um anderes gekümmert werden soll.)

    ad 3)
    Sog. Workarounds bleiben sozusagen, wegen der Verweildauer in der Software-Entwicklung, “nice”.
    Es darf, wenn so vom Support hingewiesen, so weiter gearbeitet werden, auch wenn anderes, nämlich sehr zeitnah bereit gestellte sog. Patches, Upgrades u.s.w. wünschenswerter wären.

    ad 4)
    Frickin Workarounds sind und bleiben insofern vglw. cool, sie meinen ja nicht, dass SW direkt fehl-leistend wird, sondern sie meinen, dass sich irgendwie arrangiert werden kann, auf Abnehmerseite und die Reproduzierbarkeit von Ergebnis nicht in Frage stellend.


    Bug Reports spielen sozusagen in einer anderen Liga als in der Liga derjenigen, die primär am Auswertungs-Erfolg, an der analytischen Auswertung von Datenlage, sog. Theorien meinend interessiert sind.
    Wichtich hier natürlich die Datenhaltung, Dr. W geht mal von relationaler Datenhaltung aus; RDBMSe und so, hier könnten sozusagen Eingriff-Willige letztlich gar SW zu umgehen suchen, die Datenanalyse meinend.

    Mit freundlichen Grüßen
    Dr. Webbaer

    • #4 Christian Meesters
      21. März 2022

      Na ja, …

      Bei Punkt 1 gestehe ich ein: Das ist so. Allerdings ist das gerade im wissenschaftlichen Bereich selbstverschuldete Unmündigkeit. Gut, das festzustellen hilft nicht, wesentlicher ist: Wer, wenn nicht die FachwissenschaftlerInnen, soll den gut beschreiben können, was schieflief? Die Methode “stille Post” (von den Spezialisten zu den IT-Admins zu den Entwicklern und zurück) beinhaltet so manchen Fallstrick – um bei einem x-beliebigen Projekt auf github einen Bugreport einzustellen, braucht es in meinen Augen hingegen nicht mehr als von mir beschreiben. Angesichts der Personalsituation im Mittelbau, bleibt zudem, s. Punkt 2, zudem schlicht nicht die Zeit für die Admins – etwas Anderes ist es, wenn man selber betroffen ist und eine Managementsoftware des zu betreuenden Systems betroffen ist. Das ist aber dann zugleich eine andere Welt.

      Fricking Workarounds sind manchmal zu recht so bezeichnet. Vor allem aber: Sie sind Workarounds. Wir können die Probe aufs Exempel machen: Wo sind die dokumentierten Workarounds der wissenschaftlichen Software? Manchmal gibt es welche. Doch ist nicht gerade das von Druidenmund zu Druidenohr Weitergeben mit ursächlich für unsachgemäße Verwendung, wenn das Wissen um spezifische Workarounds bei neuen Nutzern gar nicht ankommt?

  3. #5 schorsch
    21. März 2022

    Wenn ich von Admins für Anwender verfasste Bugreports erhalte, sind diese oft noch unspezifischer als das, was die die Anwender selbst ursprünglich gemeldet haben.

    Ein kompletter Bugreport sieht dann z. B. so aus: “System xy funktioniert scheinbar nicht mehr bei Anwender yz” (von einem Admin-Kollegen am 07.03. wörtlich so an mich gemeldet)

    Dieser Bugreport enthält immerhin zwei wichtige Informationen:
    1) Irgendwer hat irgendwas gemeldet
    2) Admin-Kollege hat heut so gar keine Lust zum Arbeiten

    Wenn ich solche Bugreports sehe, frage ich mich oft, wie deren Verfasser wohl beim Bäcker ein Brötchen bestellen. Wahrscheinlich gehen sie zum Metzger und fragen da nach ‘so einem Ding, Sie wissen schon, ähh, für so zum Frühstück.

  4. #6 Sonnenschein
    22. März 2022

    Der Admin soll es richten?
    Wenn z.B. der Kraftstoffverbrauch in einem! PKW explodiert hat sich gefälligst der Strassenbauer um den Fehler zu kümmern? Finde den Fehler…

  5. #7 hwied
    22. März 2022

    Wie sieht es denn praktisch aus ?
    Ich habe zur Lösung einer Aufgabe sehr viele Daten.
    1. Ich schreibe selbst ein Programm. Dann muss ich das Programm debuggen. Der häufigste Fehler, fehlende Fehlerroutinen.
    2. Ich kaufe ein Programm und wundere mich über ein Ergebnis, das nicht stimmen kann. Ich suche den Fehler zuerst bei mir, bei der fehlerhaften Eingabe.
    Auf die Idee, dass der Fehler im Programm steckt, komme ich gar nicht. Wenn das Programm kompiliert ist, kann ich den Fehler nicht finden.
    3. Ich werde das Programm aussondern wenn es meinen Computer zum Absturz gebracht hat. Ist mir vor ein paar Tagen passiert, das Programm war eine alte Version , für einen Bugreport also ungeeignet.

    • #8 Christian Meesters
      23. März 2022

      zu 3) Welches Programm war denn das?
      zu 2) Wer sprach davon, dass man den Fehler im Code selber finden muss?

  6. #9 Joachim
    24. März 2022

    Mein erster Impuls: Für welches Zielpublikum ist der Artikel? Beim Lesen habe ich mich nur gefragt: muss man das aufschreiben?

    Dann aber habe ich in unsere Issues geschaut. Man muss es offensichtlich aufschreiben.

    Bei uns sind Issues eine bunte Sammlung aus Wünschen, Ideen, Entwicklerdiskussionen und ein paar wenigen echten Bugs, bei denen ich jedoch Gedanken lesen können müsste, um zu begreifen, was der Anwender denn da gemacht hat.

    Tipp: Stell dir vor deinen Bug-Report in einem Jahr noch einmal lesen und verstehen zu müssen.

    Seit einiger Zeit sind auch wacklige Handy-Videos modern. Da wird gefilmt, was der Tester tat und dann würden wir den Fehler ja sehen.

    … Bug-Reports und Issues (unterscheiden sich!) müssen tatsächlich formal definiert werden. Doch so einfach ist das nicht. Bug-Reports hängen von vielen Dingen ab.

    Normale Anwender werden kaum core-dumps, stack traces, log-Dateien oder eine vernünftige Fehlerbeschreibung liefern.

    Oftmals sind die verwendeten Datensätze notwendig, um Fehler reproduzieren zu können. Das kann dann verschiedene Probleme hervorrufen. Datenschutz, Geschäftsgeheimnisse, fehlende Hardware/Messvorrichtungen, aber auch die Größe der Daten und der Arbeitsaufwand für den Entwickler.

    Oftmals ist einfach die Anwendersprache anders, als die der Entwickler (bei gemeinsamer Muttersprache oder einfach englisch).

    Ganz oft klärt ein einfaches Gespräch die Dinge viel besser – wenn ein Gespräch dann möglich ist.

    Es gäbe noch einiges mehr anzumerken. Wäre das hier ein Bug-Report, so wäre der sehr mangelhaft.

    Aber ich lass es mal dabei. Vielen Dank für die Gelegenheit über dieses Thema noch einmal nachzudenken.

    • #10 Christian Meesters
      24. März 2022

      Für welches Zielpublikum ist der Artikel?

      Ich denke, dass manche hier kommentierende Regulars definitiv nicht das Zielpublikum sind, noch verstanden haben, dass ich

      ** Wie immer geht es um wissenschaftliche Software. Bei der Bürosoftware eurer Firma habt ihr womöglich andere Bedingungen (z. B. eine Telefonnummer, wo der Softwarekummer abzuladen ist).

      ernst meinte. Offenbar gilt es den Term “wissenschaftliche Software” etwas herauszukitzeln.

      Und: Was Du schreibst, ist nachvollziehbar für mich – was nicht auftaucht, sind eben die ungeschriebenen Bugreports bei wissenschaftlicher Software (sic!). Datenschutz und Geschäftsgeheimnisse spielgen beim Gros wissenschaftlicher Software (free open source) keine Rolle: Selbst, wenn der Bug im Kontext sensitiver Daten (im Extremfall: humane genomische Daten) auftritt, lässt sich in der Regel der Bug mit anderen Daten oder synthetischen Daten reproduzieren. Gespräche sind leider selten möglich: Entwickler sitzen über Kontinente verteilt, alles was unmittelbar bekannt ist, ist häufig ein github-Account.

  7. #11 M
    Bolivien
    24. März 2022

    Ad 1
    Mit Fehlermeldungen ist es oft ähnlich wie mit Anforderungsdokumenten (Pflichtenheft):

    1. Der Anwender muss sich erst mal darüber klarwerden, was er überhaupt genau erwartet/will. Das bedeutet Denk- und Zeitaufwand, und ist auch manchmal nicht einfach.
    2. Er muss das Resultat dann (meist schriftlich) ausformulieren. Das wird durch mehrere Faktoren erschwert:
    a) Er weiß meist nicht, wieviel Domänenwissen er auf Entwicklerseite erwarten kann. Aus Bequemlichkeit wird erst mal komplettes Domänenwissen vorausgesetzt. Inklusiver interner Betriebsabläufe.
    b) Er weiß mangels Erfahrung in Softwareentwicklung nicht, ob er das Gewünschte salopp oder mit algorithmischer Genauigkeit formulieren kann/muss. Letzteres kann er meist schon gar nicht, oder er scheut den Zeitaufwand.
    c) Mangels Erfahrung mit der Meldung von Softwarefehlern weiß der Anwender nicht, worauf es bei der Meldung ankommt.
    d) Es ist für den Anwender schwierig bis unmöglich, den wesentlichen Systemzustand an die Entwicklerseite zu melden.

    Das könnte man amS verbessern:

    -Man schult Anwender in der Formulierung von Anforderungen und Fehlermeldungen.
    – Man schult Anwender in der Erstellung von Software. Das sollte amS im Rahmen eines wissenschaftlichen Hochschulstudiums heutzutage eine Selbstverständlichkeit sein.
    – Entwickler sollten in ihrer Software eine Möglichkeit implementieren, den Systemzustand einfach zu melden. Das kann natürlich recht kompliziert sein.

    Sorry wenn mein Kommentar etwas allgemeiner ist als das Thema des Blogbeitrages.

    • #12 Christian Meesters
      24. März 2022

      Sorry wenn mein Kommentar etwas allgemeiner ist als das Thema des Blogbeitrages.

      nee, finde ich generell super – vieles ist zutreffend auch auf wissenschaftliche Software. Allerdings

      Man schult Anwender in der Erstellung von Software. Das sollte amS im Rahmen eines wissenschaftlichen Hochschulstudiums heutzutage eine Selbstverständlichkeit sein.

      Nein, da muss ich enttäuschen: Die Leute studieren “Philosophie, Juristerei und Medizin, Und leider auch Theologie” oder moderner ausgedrückt eine Reihe von Fachwissenschaften. Da ist (natur-)wissenschaftliche Informatik nur ein Fach von vielen. Und es ist ja auch nicht notwendig, dass alle, die anwenden coden. Ich würde mich manchmal über grundlegendes Computerwissen freuen …

  8. #13 hwied
    25. März 2022

    So langsam lichtet sich der Nebel. Jede Software ist im Grunde wissenschaftlich. Sonst würde sie gar nicht laufen.
    Herr Meesters Ihnen geht es um kleine Softwarefirmen, die vielleicht nur ein einziges Programm auf dem Markt haben und die natürlich froh sind, wenn sie auf Fehler aufmerksam gemacht werden, die sich leicht beheben lassen. ???
    Denen helfen wir gerne. Deswegen werde ich hier auch keine Namen nennen.

    • #14 Christian Meesters
      25. März 2022

      Jede Software ist im Grunde wissenschaftlich. Sonst würde sie gar nicht laufen.

      Den Witz verstehe ich nicht. Soll das keiner sein? Dann stimmt schon die Prämisse nicht. Doch vielleicht braucht es eines dediziert aufklärerischen Artikels …

  9. #15 M
    Bolivien
    25. März 2022

    @Christian Meesters

    Deswegen schrieb ich ja ‘wissenschaftliches Hochschulstudium’☺
    Die Schwätzfächer würden amS trotzdem auch von zumindest Programmiergrundlagen profitieren. Schon wegen des notwendigen strukturierten Denkens.

    Und natürlich auch deswegen:
    ‘Schämen sollen sich die Menschen, die sich gedankenlos der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon geistig erfaßt haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frißt.’
    Albert Einstein

    • #16 Christian Meesters
      25. März 2022

      Nochmal deutlicher zur Desillusionierung: Nein, Programmiergrundlangen sind nicht Teil eines wissenschaftlichen Hochschulstudiums. Noch nicht mal in den Naturwissenschaften. Selbst aus einem Informatikstudium kann man “entkommen” ohne wirklich Programmieren gelern zu haben.

      Mittlerweile gibt es immer mehr naturwissenschaftlich-informatische Hybridstudiengänge, doch gibt es eine ganze Reihe von Studiengängen, in denen Programmierung in keiner Weise vorkommt.

  10. #17 Joachim
    Erde
    25. März 2022

    @Christian Meesters: Deine Kommentare sind hilfreich. Allerdings ist es auch fast ein “Widerspruch”. Denn du arbeitest doch gerade daran gewisse Mindeststandards zu erklären und zu etablieren. Wenn Philosophen Software nutzen oder gar schreiben sind deine Vorstellungen auch für die korrekt.

    Vielleicht möchtest du sagen “wir wollen es nun mal nicht übertreiben” und agile Softwareentwicklung in den Wissenschaften etablieren, wo das Team nur aus ein/zwei Leuten besteht? Ist das eine pragmatische Herangehensweise?

    Ach ja, der Buchtipp ist mir vorhin erst aufgefallen. Bedankt. Ist vielleicht was für mich.

  11. #18 Sonnenschein
    25. März 2022

    Da ich nicht aus dem wissenschaftlichen Umfeld komme, kann ich konkret nichts dazu beitragen…
    Allerdings muss ein Benutzer auch nicht studiert haben, um eine qualifizierte Fehlermelung ab zu geben. Es ist nicht notwendig die Sprache zu beherrschen oder gar coden/tracen/sniffen/debuggen zu können…
    Allgemein betrachtet wären Fehlermeldungen, in welchen konkrete/relevante Details zum Reproduzieren des Fehlers angeführt werden, hilfreich. Wie in diesem Beitrag beschrieben. Auch die Information ob der gleiche Fehler nur bei einem Benutzer, oder bei mehreren Benutzern auftritt, ist hilfreich.
    Sinnvoll ist die direkte Kommunikation, stille Post zwischen verschiedenen Beteiligten ist eher kontraproduktiv.
    Zuguterletzt möchte ich mich für den Frust Kommentar #6 entschuldigen; Jener ist einem Schmähkommentar davor geschuldet.

  12. #19 hwied
    26. März 2022

    Herr Meesters,
    das war kein Witz, das sollte ihnen klar machen, dass ihre Beiträge in ihren Augen klar formuliert sind, in anderer Augen aber nicht..Ich bin nicht an einer Hochschule , bin kein Student, habe aber an Einführungen für Software teilgenommen und bin mir über die Problematik klar.
    Der Fehler kann auch in der Programmbeschreibung der Software stecken, also nicht in der Software selbst.
    Sie sollten ein konkretes Beispiel nennen, ein Programm das viele kennen und an einem Beispiel zeigen, was alles falsch laufen kann.

    • #20 Christian Meesters
      26. März 2022

      Nun ja, Entwicklung von Software ist manchmal eine technologische Herausforderung – selten ein wissenschaftlicher Prozess. Schon gar nicht ist jede Software “wissenschaftlich” – ihr Browser zum Beispiel hat seine Wurzeln in der Wissenschaftsgeschichte, ist aber längst ein Programm, das von einer großen Gruppe Programmierern, die das (abhängig vom Browser – semi-)professionell geschaffen haben. Es geht bei wissenschaftlicher Software in den seltensten Fällen um kleine Firmen, die meiste Software zur wissenschaftlichen Datenanalyse und Simulation (vielleicht ein besserer Begriff?) wird an Universitäten und Forschungsinstituten geschaffen.

      Konkrete Beispiele gibt es im Blog bereits einige – und den Plan das mal zu konkretisieren.

  13. #21 Joachim
    27. März 2022

    @Christian Meesters #20
    da sehe ich ja den Punkt und auch das “Problem”, dass du hast bzw ihr habt. Du betreust eben deine Leute. Und ja klar, es gibt einen Unterschied zwischen einem Ingenieur und einem Wissenschaftler.

    Aber: definiere Wissenschft.

    Ich werde jetzt mal polemisch (zur Verdeutlichung)m obwohl mit viel mehr an Integration liegen würde. Nimm mir das bitte nicht zu übel:

    Wenn ich etwa eine Programmiersprache formuliere und implementiere, so kann das sehr theoretisch und mathematisch werden.

    Meine tägliche Arbeit hat sehr viel mit Physik zu tun und verlangt neben technischen Lösungen “Grundlagenforschung”, wie es eben typische Physiker etwa in den Materialwissenschaften tun. Und das, obwohl ich “nur” Rock’n’Roll mache 😉

    Die Einstellung aus #20 erinnert mich an mein Studium, wo der Prof aus lauer Minderwertigkeitskomplexen undbedingt sehr abstrakt und theoretisch werden wolle, damit Informatik als “Wissenschaft” anerkannt werden sollte.

    Doch das Problem ist doch wohl ehr, dass Informatiker selbstverständlich auf Mathematik bauen und von der Physik abhängig sind, während die Wissenschaftler ganz offensichtlich die Aussagen und Ergebnisse der Informatiker nicht so ganz ernst nehmen oder gar nicht verstehen.

    Denn sonst bräuchtet ihr doch keine Anleitung, um Bugreports zuschreiben.

    Was sagst du zu dieser absichtlich überspitzt formulierten Sicht? Wäre es nicht an der Zeit mehr zusammen zu arbeiten?

    • #22 Christian Meesters
      27. März 2022

      Bringt die Sache auf den Punkt. Allein, Händchenhalten bei der Arbeit (wo mündige Nutzer einer Software auch selber mal den Entwicklern sagen “funktioniert nicht wie erwartet”) ist halt rein zeitlich nicht drin.

      Wobei man selten Programmiersprachen konzipiert und implementiert, sondern eben anwendet / programmiert. Und das ist durchaus, sind wir ehrlich, oft genug ziemlich technisch, aber nicht wissenschaftlich. Wissenschaftlich wird es vielleicht in Deinem Fall beispielsweise, wenn man ein Integral in eine diskrete Form für den Computer überführt und sich dabei fragt, wie man bei der Fließkommazahlenarithmetik eines Computers die Fehlerfortpflanzung nicht ausufern lässt – oder so, ich will nur ein Beispiel. Das Drumherum (Benutzeroberfläche, Schnittstellen, etc.) macht die wissenschaftlich-technische Software und stellt ganz eigene Herausforderungen dar.

  14. #23 hwied
    27. März 2022

    “Und das ist durchaus, sind wir ehrlich, oft genug ziemlich technisch, aber nicht wissenschaftlich.”

    Antwort : Beispiel MS -Excel in Kombination mit Java-Schript.
    Mit dieser Ausstattung lassen sich schon große Mengen von Daten verarbeiten bzw. berechen. Bei der Berechnung einer Flugbahn schafft ein kleines Programm 60 000 Berechnungen pro Sekunde und stellt das Ergebnis dar.

    Worin liegt denn ihrer Meinung nach der Unterschied zwischen wissenschaftlich und technisch. ??

    • #24 Christian Meesters
      27. März 2022

      Moment! Wir vermischen hier das Anwenden und Erzeugen von Software. “Wissenschaftliche” Software ist Software, die zum Wissenschaftszweck eingesetzt wird, andere Software zu anderen Zwecken – da ist keine Wertung drin und die Unterscheidung ist im Übrigen irrelevant. Allein, “Jede Software ist im Grunde wissenschaftlich. Sonst würde sie gar nicht laufen.” ist nicht haltbar und das Anwenden von Software zum Zweck der wissenschaftlichen Datenanalyse kann in kleinen Firmen stattfinden, tut es aber meist nicht und beides hat nichts mit der Möglichkeit zu tun, Fehler gegenüber der Entwicklergemeinschaft zu kommunizieren, damit man selber besser arbeiten kann.

  15. #25 Joachim
    27. März 2022

    Auch wenn das nun etwas OT (und viel zu lang) ist:

    die Kommunikation zwischen Objekten oder Aktoren stellen eine formale Sprache dar. “Man” schreibt andauernd „Programmiersprachen“, sogar schon beim Einlesen einer CSV-Datei. Eine GUI etwa ist ein Automat (ein wohldefinierter Begriff der Informatik). Ein Automat besteht u.A aus einem Eingabealphabet …

    Anderes Beispiel: Datenbanken z.B. haben eine (genauer mehrere) Normalform(en). 90% der sogenannten (auch wissenschaftlichen) Datenbanken haben aber auch gar nichts damit zu tun. Leute, macht eure Hausaufgaben!

    Merke: eine Datenbank ist keine Datei und schon gar nicht Excel. Relationen beschreiben eine Semantik und haben sehr viel mit Sprache zu tun.

    Wer keine Sprache implementieren kann bzw. den Zusammenhang nicht versteht, der kann nicht programmieren.

    Zurück zum Topic: Es klingt ein wenig nach Frickel wenn ich dich so lese – Nein, nicht das was du schreibst! Ich meine die Situation der wissenschaftlichen Software, so wie du sie beschreibst. Das stimmt aber nicht immer. Es gibt exzellente Software von Wissenschaftlern. Eines meiner Lieblingsprogramme ist MuPad. Das ist schon lange kommerzialisiert und erlebt heute ein Schattendasein als Anhängsel zu Matlab. Dabei war das mal freie Software. Das ist peinlich für die Universitäten. Denn das haben dort richtig gute Leute (mit öffentlichen Geldern) erfunden.

    Aus meiner Sicht kommen wir aus dem Desaster nur raus, wenn wir zusammen arbeiten. Das bedeutet: wissenschaftliche Software muss frei sein. Denn sonst kann ich euch nicht helfen. Weil, das Geld „mich“ zu bezahlen ist ja auch nicht da.

    Dazu muss sie so geschrieben und dokumentiert sein, dass es lohnt da mal reinzuschauen. Sie muss über git erreichbar sein. Nein, lieber nicht auf github oder gitlab. Die Unis müssen das stützen. Die Dinge sollten die UNIs selbst hosten und aufhören mit ihrer Geheimniskrämerei und mit ihrem Löschwahn. Vorweg gehen statt Trends hinterher zu laufen und Bullshit-Phrasen zu glauben. Natürlich gilt der Vorwurf nicht immer und ich übertreibe. Ich betrachte jedoch genau das geradezu als Beleg für meine Aussage.

    Liebe Wissenschaftler, holt euch die Software und das Internet zurück! Politik und Industrie haben ganz andere Interessen. Gaia-X wäre so ein Ding, das ihr unbedingt zurück in die Wissenschaft holen müsst und keinesfalls der Industrie und schon gar nicht der Politik überlassen dürft. Wenn nicht ihr, wer soll es denn dann können?

    Doch die Realität etwa zu den Webauftritten der UNIs: eine URL ist genau eine URL, so lange ich die Dinge veröffentliche. Es gibt die Möglichkeit der Weiterleitungen, wenn ich schon meine, meine Homepage (böse Ironie hier!) zusammen klicken zu müssen.

    Da lobe ich mir etwa die unaufgeregte und kompetente Seite des Herrn Otto Forster. Der hat übrigens mit Aribas auch eine Programmiersprache geschaffen. Dabei ist der Mann Zahlentheoretiker. Vor solchen Wissenschaftlern kann ich nur den Hut ziehen.

    Weiter zum „geschrieben und dokumentiert sein“: Solche Dinge erfordern einen bestimmten Workflow, der nicht selbstverständlich ist. Man kann sicher ohne diesen Workflow tolle Dinge programmieren. Doch man kann nicht ohne einen definierten Workflow zusammen arbeiten. Gerade im Bereich der freien Software, aber auch in der Industrie wurden diese Workflows entwickelt. Wissenschaftler waren nicht unerheblich daran beteiligt. Warum tut ihr das denn dann nicht? Hört doch wenigstens auf euch selbst, wenn schon nicht auf mich.

    Ja, man kann einen Studenten an Software setzen. Doch es braucht jemanden, der Ahnung hat, die Fänden in der Hand hält und sich darum kümmert. Das gebietet alleine schon der Lehrauftrag. Wenn der Schwanz mit dem Hund wedeln soll – so wie es mir ergangen war – dann stimmt da was nicht. Bestenfalls könnte man (in meinem Fall) dem damaligen Laborleiter hellseherische Fähigkeiten unterstellen, mir da vollkommen freie Hand zu lassen und das letztlich Ding trotzdem über viele Jahre erfolgreich verkaufen zu können. So lange, bis es in Japan plagiiert wurde (sogar mit der Anmerkung der Kompatibilität zu meiner Software). Das war reines Glück und eigentlich von den Verantwortlichen nicht verdient. Immerhin bekam ich so meinen Job.

    In dieser Situation verlangst du von den oftmals ganz unten an der Nahrungskette nun strukturierte Vorgehensweisen, die sie noch gar nicht erfüllen können.

    Ohne eine Änderung der Struktur an den Universitäten wird das nix. Möglicherweise könnte man auch mal an BLWer und Administration wissenschaftliche Anforderungen stellen?

    Da kannst du noch so viele absolut korrekte Dinge hier sagen, wo ich nur noch zustimmen kann und mich frage, warum ist das denn nicht schon lange so.

    Aber ich will nicht nur meckern. Deine Vorgehensweise, die Dinge von unten und ganz praktisch anzugehen, halte ich für absolut korrekt. Kleinteilig (wie ein kluger Kollege immer sagt) ist wichtiger, wenn nicht gar der wichtigste Teil des oben erwähnten Workflows. Softwareentwickler sind wie Beppo Straßenkehrer. Eine Platte nach der Andern. Nur so wird die unendlich erscheinende Straße irgendwann gefegt sein.

    • #26 Christian Meesters
      27. März 2022

      Es klingt ein wenig nach Frickel wenn ich dich so lese – Nein, nicht das was du schreibst! Ich meine die Situation der wissenschaftlichen Software, so wie du sie beschreibst.

      Ja, es gibt rühmliche Ausnahmen, hatten wir auch schon im Blog – doch das “Gefrickel” denke ich schon zigfach belegt zu haben ;-). So wie es ist, ist es, leider.

      Bzgl. Programmiersprachen programmieren – ei nun, Sprachgebrauch variiert. Darüber zu streiten lohnt nicht.

      PS Danke.

  16. #27 hwied
    28. März 2022

    Mit der Entwicklergemeinschaft kommuniziern, ein schönes Schlußwort.