Stricken und Code

wall < "Code stricken"

Broadcast message from spillerm@unixe.de (pts/1) (Mi Feb 14 14:48:54 2018):

Ich habe in den vergangenen Jahren einigen Einsatz in der Open Source-Community gezeigt - doch nun hadere ich damit. Ein Rant.

4

Was nun folgt ist ein Rant, ein Post voller Unmut — begonnen, wieder verworfen, wieder aus dem Papierkorb gefischt und zuletzt doch veröffentlicht. Ein bisschen verschwurbelt, sehr persönlich, vermutlich nie so richtig fertig — und der rote Faden hängt in Fetzen. Aber er wollte unbedingt raus, deshalb lasse ich ihm seinen Willen — gegen das geschriebene Wort bin ich ohnehin völlig machtlos :)

Ich war 5 Jahre alt, als ich das Stricken erlernte. Von meiner Oma lernte ich es, und sie war ein ziemlich strenger Lehrmeister. Ein blau-weiß gestreifter Pullover für meinen Lieblings-Teddy war mein Erstlingswerk (er trägt ihn noch heute!), und eine Leidenschaft war geweckt.

Viele Jahre sind seither ins Land gegangen, und ich bewege mich auf diesem Terrain sehr sicher: üblicherweise brauche ich keine Anleitungen, weil ich weiß, wie ich es angehen will; Strickschriften für Mustersätze sind immer willkommen, aber bitte nicht »super-easy«, »kinderleicht« und »für Anfänger geeignet«, denn die langweilen mich. Kompliziert ist gut. Wenn ich stricke, kann ich auf viele Erfahrungswerte zurückgreifen — das macht es mir leichter und ermöglicht mir eine gewisse Selbstsicherheit.

Allerdings muss meiner Meinung nach nicht jeder Mensch, der eine Strickjacke tragen möchte, in der Lage sein, diese auch selbst herzustellen: man sollte sie korrekt zu pflegen und aufzubewahren wissen, ja. Man sollte unterscheiden können zwischen behebbaren Kleinigkeiten (verzogen nach der Wäsche, also vorsichtig in Form ziehen), Schwierigkeiten, die die Jacke nur indirekt betreffen (Knopf verloren) und handfesten Problemen (Loch im Ärmel, Naht geplatzt) und die jeweils passenden Maßnahmen einleiten können.

Natürlich kann auch der unbedarfte Strickjacken-Fan, der im Leben noch keine Stricknadeln in der Hand hatte, versuchen, das Loch im Ärmel selber zu fixen — irgendwie. Er würde irgend etwas tun, das ihm sinnvoll erschiene und die Maschen am Weiterfallen hindern würde. Es ist aber fraglich, ob er instinktiv einen sinnvollen Weg wählen (ordentlich festnähen, stopfen etc.) würde, oder ob er die Sache vielmehr pragmatisch mit einem Tacker anginge. Vielleicht würde er es mit Heißkleber versuchen. Bei seinem Versuch, die Jacke zu reparieren, würde er sie vielleicht völlig ruinieren. Damit ist, bei Lichte betrachtet, niemandem geholfen. Und was hat das nun mit Code zu tun? Gleich…

Klar, unser Strickjacken-Fan könnte sich Hilfe holen: er könnte sich jemanden mit viel Erfahrung suchen, um von ihm zu lernen. Dann könnte er üben — erst würde er Topflappen stricken, dann Schals, und irgendwann hätte er dann ein Strickjacken-angemessen-flicken-Level erreicht. Dabei gibt es jedoch ein Problem: er will überhaupt nicht selbst in die Materie einsteigen. Er akzeptiert, dass es ohne Stricken nicht geht, wenn man eine Strickjacke haben möchte, und er steht der Sache offen und neugierig gegenüber; das heißt aber nicht, dass er unbedingt selber stricken möchte. Dass er die Stricksachen anderer wertschätzt, vielleicht gar bewundert, steht in keinem Zusammenhang damit, es selber erlernen zu wollen. Seine Stärken liegen woanders, und auf die möchte er sich konzentrieren. (Tatsächlich wäre es wünschenswert, wenn jeder die Möglichkeit hätte das zu tun — ich bin überzeugt davon, dass die Welt dann eine bessere wäre. Aber ich schweife ab.)

Ich stecke momentan in einer Art tiefer Sinnkrise — final ausgelöst durch einen privaten Zwischenfall, der mir einmal mehr überdeutlich machte, was ich zwar theoretisch weiß, aber praktisch nicht so recht kapiere: dass die Zeit für unser Wirken begrenzt ist und alles, was wir tun (oder eben nicht tun) das Resultat unserer Priorisierung. Ich bin seit Jahren auf vielen Kanälen der Open Source-Community aktiv, mit x verschiedenen Usernamen auf x verschiedenen Foren und Trackern und Plattformen zu x verschiedenen Projekten. Ich versuche, mich meinen Fähigkeiten entsprechend einzubringen — und merke zunehmend, dass ich mir damit den Kopf einrenne, ohne dass es mich persönlich irgendwie weiterbringen würde.

Jeder Bugreport kostet mich viel Zeit: weil ich teste, gegenteste; versuche, Fehler und Fehlkonfigurationen meinerseits möglichst umfassend auszuschließen; weil ich versuche, die Fehlerursache möglichst eng einzugrenzen und mich anschließend bemühe, das Ganze möglichst pointiert zu formulieren. Das Ergebnis meiner Bemühungen indes ist ernüchternd: auf die meisten meiner Anfragen erhalte ich schlicht keine Rückmeldung. Weder werden sie als Bug noch Blödsinn klassifiziert, es werden keine Rückfragen gestellt, sie sind einfach da — auf ewig offen und unbeantwortet. Über die Zeit hängen sich oft andere User an, die vor dem selben Problem stehen — mit einem +1 signalisieren sie, dass sie ebenfalls von dieser Sache betroffen sind und auf einen Lösungsansatz hoffen. Sie werden dann angekackt, weil sie +1 benutzt haben und man das nicht tut. That’s it.

Häufiger erhalte ich als Antwort, der Fehler läge vermutlich im Bereich von Funktion bla, und ich solle bitte einen Pull Request aufmachen, sobald ich ihn gefixt habe: C sei schließlich nicht schwierig zu erlernen, und mit etwas gutem Willen würde ich das schon hinkriegen. Analog erhalte ich (bzw. nicht nur ich, es zieht sich ja durch) diese Aussage für Go, Python, Java, PHP, Ruby, C#, Perl undwiesiealleheißen. Unfaires Verschieben von Verantwortlichkeiten: hätte ich eine Developer-Laufbahn einschlagen wollen, hätte ich das getan. Hab ich aber nicht. Als Systems Engineer bin ich Dienstleister gegenüber meinen Usern — ich trage die Verantwortung. Für. Den. Gesamten. Verdammten. Betrieb. Tag und Nacht. Es ist überhaupt nicht realistisch, darüber hinaus auch noch die Verantwortung für jede von mir eingesetzte Software mit zu übernehmen. Und doch wird das regelmäßig (»Stell dich nicht so dran!«) erwartet.

Also: ich würde endlos viel Zeit investieren, um mich in ein mir völlig fremdes Themengebiet einzuarbeiten, das mich aber gar nicht so richtig interessiert. Und anschließend ohne jeden Erfahrungswert eine halbgare Lösung präsentieren, die »das große GanzeTM« nicht respektiert — bestenfalls Tacker, schlimmstenfalls Heißkleber. Im Endeffekt habe ich dann sehr viel Zeit investiert in einen Pull Request, der berechtigterweise zurückgewiesen wird. Und mir erschließt sich nicht, wem damit geholfen sein soll. Ja, die Maintainer leisten tolle Arbeit, und ja, sie investieren nicht selten eine Menge Freizeit in ihre Projekte. Ich aber auch. Und das wird bei dieser Argumentation offenbar gerne vergessen. Alle Projekte rufen auf irgend eine Art zur Mitarbeit auf: aber so wird das nicht funktionieren. Nicht jetzt und schon gar nicht auf Dauer.

Was der Sache nicht selten die Krone aufsetzt ist der Tonfall: Momente, in denen »gar keine Reaktion« rückblickend betrachtet die bessere Option gewesen wäre. Ich weiß nicht, woher manche Maintainer sich das Recht nehmen, so mit ihren Usern zu reden — doch sie tun es und fühlen sich zumeist auch voll im Recht damit. Dabei verweisen sie sehr selbstsicher auf Dokumentation, die 1.) entweder nicht wirklich vorhanden ist (» — TODO — «), 2.) für Nicht-Developer völlig unverständlich ist oder 3.) maximal beschreibt »how it’s intended to be«. Vor allem Neueinsteiger werden nicht selten auf eine Art angegangen, die mich ungläubig den Kopf schütteln. Wir haben alle mal sehr klein angefangen, habt ihr das vergessen? Und ja, auch so mancher User hat einen unmöglichen Tonfall am Kopf, keine Frage. Es ist aber dennoch die Maintainer-Seite, die hier den Takt vorgeben und auf Einhaltung der Netiquette pochen sollte. Immer.

Ich bevorzuge klare Trennungen im Bezug auf Zuständigkeiten. Meine Steuererklärung zum Beispiel ist mir zutiefst zuwider; diese fiesen kleinen Quittungen und Zettelchen, die endlosen Massen an Formularen voller Beamtendeutsch und Fußnoten — meine Frisur sträubt sich spontan, wenn ich nur darüber nachdenke, dass es bald wieder so weit ist. Aus diesem Grund übergebe ich meinen sorgfältig mit allen Unterlagen gefüllten Schuhkarton pflichtbewusst an meinen Steuerberater. Er liebt, was er tut, was mir umständehalber völlig unverständlich ist, aber er liebt es wirklich: er kann mit blitzenden Augen lange, langweilige Finanzamts-Anekdoten zum besten geben, bewegt sich mühelos durch den Wust an Paragraphen und hat seinen Spaß daran. Und er macht in einem Bruchteil der Zeit, die ich (genervt, augenrollend) einsetzen würde den x-fachen Betrag dessen geltend, den ich (wütend, mich betrinkend) ermittelt hätte. Ich sehe weder Grund noch Vorteil darin, mich selbst mit dieser Sache abzuquälen, und zahle lieber einen fairen Betrag an jemanden, der sich viel besser damit auskennt. Und ab und an bringe ich seinen Rechner auf Vordermann, mal ganz davon ab. Jeder tut, was er am besten kann.

Hug meMir wurde jedenfalls klar, dass ich so nicht weitermachen will. Und werde. Dass meine Zeit mir zu teuer ist, sie auf diese Art zu versenken — es macht mich nicht nur nicht zufrieden, es macht mich unglücklich. Hinzu kommen die unzähligen Support-Anfragen, die mich erreichen: ich bin gerne hilfsbereit, aber es sprengt meine Kapazitäten. Unhöflich mag ich aber auch nicht sein. Die Folge war eine Art Notfall-Shutdown: ich habe alle Notifications abgeschaltet, mich in allen sozialen Netzwerken und sonstigen Plattformen ausgeklinkt und verstecke mich seit knapp zwei Wochen mit dem Manuskript meines Buches unterm Schreibtisch. Ich sollte so nicht ewig weitermachen — aber im Grunde genommen fühlt es sich so gut an.

Wie auch immer: ich muss mich umorientieren, meine Arbeitsabläufe anders organisieren, denn so komme ich nicht weiter. Was die große weite Open Source-Welt angeht bin ich derzeit recht desillusioniert, und wie ich mich positioniere… ich weiß es noch nicht. Keine Ahnung. Alle paar Jahre träume ich davon, die IT-Welt hinter mir zu lassen, den ganzen Mist hinzuschmeißen und mich rosenzüchtend auf einer Insel niederzulassen, auf der immer die Sonne scheint — vielleicht bin gerade wieder an diesem Punkt angelangt. UnterschriftDas ist wichtig und lehrreich. Und tut unfassbar weh.

4
  1. Ich kann den Post so gut nachvollziehen…

    Ich kann zwar etwas Code schreiben, habe auch schon den einen oder anderen Bugfix eingereicht, aber auch ich habe uralte offene Bugs für etwas eigentlich Offensichtliches und Simples, wo nur noch mehr Leute sagen, dass sie dasselbe Problem immer noch in der aktuellsten Version haben. Auch ich habe keine Lust und Zeit (mehr) mich nächtelang in fremden Code einzuarbeiten, nur um die entsprechende Stelle zu finden, die dann zum gewünschten Verhalten führt.

    Open Source heißt nur, dass man den Code verändern könnte, nicht, dass man es muss. Und BTW: C ist schon nicht einfach zu lernen – zumindest, wenn man es richtig macht…

  2. Servus,

    das ist ein wahrlich schwieriges Thema. Wenns eine heile Welt drumherum wäre, wärs wohl zu einfach.

    Ich kann verstehen, dass es frustrierend ist, wenn man auf ein Issue, wo man sich echt Mühe gegeben hat, alles reproduzierbar mit allen Details, … kurzum, keine oder eine eher abweisende Antwort bekommt.

    Manchmal erwischt man selbst eine falsche Formulierung, der Klassiker ist es, zu sagen, dass das Problem eh leicht zu beheben sei, oder das Feature sicher ganz einfach einzubauen sei. Damit weckt man beim Gegenüber die Oberlehrer-Besserwisser-Emotion, meist unterbewusst. Das ist der Zeitpunkt, wo du als Softwareentwickler oder Maintainer schon mal gleich die Lust verlierst, weil dir wer anders unterschwellig sagt, wie der Hase zu laufen hat. Mir geht das oft noch so, auch wenn ich sicher schon hinderte solcher Tickets gelesen habe.

    Obwohl es in vielen Fällen gar nicht so gemeint ist, oder sich Sprachbarrieren auftun.

    Manchmal erwischt man aber auch ein Thema, wo der Maintainer Null Bock drauf hat. Meist ist es dann ein Bug in einem Feature, was man gar ned maintainen möchte. Oder den Code ned anschaun oder gar patchen will. Das is dann meist der Zeitpunkt, wo du als User den Wink mit dem Patch bekommst.
    Oder das Feature ist so nischenhaft, dass am Ende nur du profitierst, und sonst halt niemand. Natürlich tut das ein bisserl weh, wenn eigene Ideen und Wünsche abgewiesen werden. Niemand härt das gerne, weder bei Software, noch im eigenen Leben. Manchmal ist die Lösung auch trivial, aber beide Seiten beharren lieber auf Standpunkten.

    Was man beiden Seiten immer an die Hand geben muss – jede/r hat eigene Erfahrungen im Opensource-Bereich, und haut die Gegenseite auch gerne mal in ein Klischee rein. Je nach Tagesverfassung und Unwelt wirds dann auch nix mehr. Wenn der Ton rauber word, und man soch angegriffen fühlt, sollte man aber ned davonlaufen, sondern aufstehn und sagen „du bist zu weit gegsngen, das verletzt mich“. Das blödeste, was passieren kann, ist, dass die andere Seite ein Arschlochkind ist, und dein Issue kaputt. In den besten Fällen entwickelt sich aus dem ersten Problem eine Entschuldigung, und zukünftige Themen werden anders behandelt, oder gar mit einer strengeren Netiquette gefahren.

    Richtig problematisch ist die Freude an Opensource, wenn andere sehen, dass du super aktiv bist, und das für ihre Zwecke nutzen wollen.
    Da gibts die Riege der Arschlöcher, die sich mit kurzen Tipps nie zufrieden gibt, und immer mehr will. Diese Leute gehen sogar soweit, und machen nach den privaten Nachrichten DDOS dann Mail-Spam. Oder rufen dich an.
    Hat man sich einmal erbarmt (und das ist wirklich so), und geantwortet, wird es immer mehr. Zwar vielleicht freundlich, aber in gewisser Weise fordernd und auch ausnutzend.

    Dann gibts die freundlichen Lästwanzen. Die meinen es gar ned böse, posten ihre Fragen aber nicht in öffentliche Foren, sondern wollen lieber persönlich betreut werden (aber ein Support-Vertrag ist viel zu teuer…). Wenn es mal in einem Blog keine Antwort gibt, ab zum nächsten, oder auch mal eben auf Github probiert.

    Diese zwei Verhaltensweisen beobachte ich in den letzten Monaten mit Sorge. Nicht nur bei dir, auch bei Carsten, Nicolai, und anderen. Die eine oder andere Massnahme, um euch zumindest im Forum zu „schützen“ haben wir treffen können, aber im Internet bist du ganz allein und musst dich eingraben. Weil „die anderen“ massiven Druck aufbauen, den man ned so leicht abgibt oder ignoriert.

    Wie man mit Anfragen umgeht von Leuten die man kennt und mag, muss jeder selbst entscheiden. Wer mich kennt, weiss, dass ich nach 40h Arbeit keinen Kopf mehr für lange Icinga-Diskussionen habe. Am Wochenende brauchst mir damit auch ned kommen, jeder Mensch braucht Ausgleich und Auszeit.

    Mein Rezept ist, private Anfragen zu ignorieren, oder auf den öffentliche Forumsbereiche zu verweisen. Discourse hat eine tolle Funktion – neue Benutzer mit Trustlevel 0 dürfen keine PMs schicken, die müssen sich das erst durch Aktivität und Ehrlichkeit verdienen. Das filtert schon sehr viel.
    Mails an meine private Adresse mit Themen, die arbeitstelevant sind, gehen unter. Interessiert mich nach all den Jahren einfach ned mehr. Wennst mich erreichen willst, wirds schwer, aber manche Leute wissen, wie. Nein, Twitter ist auch falsch.

    Hilfe im Forum, public für alle, wenn es grade passt – ja, gern. GitHub hin und wieder, warum nicht. Alles mit Mass und Ziel. Wenn jemand nervt oder unfreundlich ist, dann wieder ned, und andere Dinge tun, die Spass machen. Nur ned von anderen und deren Frust runterziehen lassen.

    Was aber genau richtig ist, ist, sich einige Zeit aus Community- und Spcial-Media-Kanälen zurückzuziehen, und sich auf die wichtigen Dinge zu konzentrieren. Die müssen fertig werden, und wenn du mal eine Woche auf Urlaub bist, geht das im besten Fall auch niemanden was an.

    Am Ende des Tages muss dir auch dein Blog soweit Spass machen, dass du Stolz drauf bist, und mit Bedacht viel Lob und anerkennende Worte lesen kannst. Und keine depperten Supportanfragen. (Ich les genau aus deinem Grund auf meinem privaten Blog die Kommentare nur alle paar Monate)

    Die, die dich mögen, erinnern sich an dich, auch ohne viel zutun. Wenn du mal einen Vortrag hälst, oder irgendwo des nächstens auf einer OSMC rumhüpfst – Hauptsache, dir gehts gut und wir lachen gemeinsam :-)

    Lieben Gruß,
    Michi

  3. Nach knapp 30 Jahren in der „IT“ die ganz früher noch Arbeitsvorbereitung hiess, kenne ich das Gefühl. Und manchmal denke ich sowas wie „hättest du mal was vernünftiges gelernt“ :-)

    Aber letztlich…

    Bin auf dein Buch gespannt :-)

  4. Ich steh auf beiden Seiten und kann Dich absolut verstehen, als Anwender der Patches einreicht und als Entwickler von Opensource.

  5. Call me Manon

    Ich kann dich sehr gut verstehen. 💚
    Vielleicht wirklich mal Aufwand und Nutzen (für wen?) überdenken? Bissi mehr „Egoismus“?

  6. Kevin Honka

    welcome back

  7. Liebe Marianne,

    es freut mich von Dir zu lesen. Ich kann Dich aus den Zeilen heraus sehr gut sehen. Dein Engagement. Dein Herzblut.

    Das für mich in meinem Leben entscheidende ist die Intention meines Handelns. Ist sie aus mir selbst heraus, oder von entspricht sie nur der Erwartungshaltung eines anderen. Ich bin keinem Menschen auf dieser Welt mehr Rechenschaft schuldig als mir selbst. Das erfordert natürlich viel Selbstreflexion, aber genau darin liegt für mich der Schlüssel. Die freie Entscheidung etwas zu tun oder zu lassen. Es gibt viele Menschen die Erwartungen an mein Handeln haben: Familie, Arbeitgeber, Freunde… Die Erwartungen sind auch berechtigt, denn ich bin ja Verträge oder Versprechen eingegangen. Aber all das tue ich aus freien Stücken. Ich tue gerne Dinge für andere, aber ich lasse mich nicht drängen und hetzen.

    Ich fühle mich gut, wenn ich einen Bugreport geschrieben habe auf den keiner reagiert, denn der Bugreport ist das was ich tun wollte. Wissen mehren, weitergeben, auf Probleme hinweisen. Davon lebt Open Source. Den Fehler zu beheben ist nicht meine Intention, aber Hilfestellung zu leisten. Wenn das ein anderer nicht annimmt, dann ist das sein/ihr Problem. Aber ich kann ruhig schlafen.

    Danke für all Deine Beiträge die Du mir und uns gibst.

    Jan :-)

  8. kann gut nachvollziehen, was du schreibst, ich glaube was viele Maintainer unterschätzen ist: Wenn es eine offene Frage gibt, impliziert das für gewöhnlich schon, dass man da noch etwas verbessern könnte.

  9. So wie es klingt, musste und durfte das dringend raus. Lieber ein ordentlicher Rant und einige Leute vergrätzt, als am dicken Hals erstickt … und ich weiß, wovon ich dabei rede :)

  10. Welcome back :) Wir haben Dich vermisst

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.