 Im nächsten Vortrag reden wir über Philosophie, das ist Peter Stugge. Er hat sehr viele Jahre in Software und Hardware und Netzwerkssicherheit und jetzt auch mit Failure, also mit Fehlschlägen. Peter wird euch seine Geschichte über LibUSB erzählen und über die Fehler und von dem was er davon gelernt hat. Bitte Applaus. Hallo, mein Name ist Peter. Ich bin ein gescheiteter Open Source Project Manager. Also, das hier ist kein technischer Vortrag. Ich werde nicht darüber reden, was LibUSB ist. Ich werde über ein paar Sachen erzählen, die ich gesehen habe, die ich in der LibUSB Community gesehen habe und ich werde euch meine Geschichte erzählen und ich werde über die Fehler berichten, die ich gemacht habe und ich werde darüber berichten, was ich daraus gelernt habe. Also, hoffentlich. Also, LibUSB ist eine Softwarebibliothek für Entwickler, die mit USB-Geräten reden wollen. Es ist recht weit benutzt in Linux-System und auch auf dem Mac-System und auch in paar Windows-Geräten. Wenn ihr einen Drucker, einen Scanner oder eine Videokamera oder die benutzen wahrscheinlich LibUSB benutzen oder eine Software, die LibUSB benutzen. LibUSB selbst implementiert aus Lizenz, soweit, wie ich das verstanden habe. Es ist nämlich, weil die Lizenz nicht so frei war, wie FreeBSD es haben wollte. Das ist kein technischer Talk über Gerätetreiber. Ich habe darüber schon einen Vortrag gehalten vor fünf Jahren und hier ist Link dazu. Wenn ihr euch die technische Seite interessiert, könnt ihr euch das anschauen. Also, wenn ich in der LibUSB Community beschäftigt war und habe ich beobachtet, obwohl die LibUSB sehr weit verbreitet ist, gibt es nur sehr wenige Leute, die daran arbeiten, was natürlich traurig ist. Ich wünsche mir, da wären mehr Leute. Es gibt auch die Tendenz, dass man nicht zusammenarbeitet, also nicht stark in der größeren LibUSB Community. Es gibt dann ein paar Varianten des LibUSB-Konzepts und die haben nicht viel gemacht, um zusammenzuarbeiten oder haben das noch nicht versucht. Also, es gab die originale LibUSB 0.1 Version. Das ist, wo ich der Betreuer war. Dann gab es das LibUSB Win32 Projekt, was komplett unabhängig war, was kompatibel war mit LibUSB 0.1. Aber es erweitert auch LibUSB 0.1 mit ein paar Funktionen, aber es ist speziell für Windows gemacht. Der Entwickler, der daran arbeitet, hat es nicht wirklich versucht, dem originalen LibUSB Projekt beizutreten. Die sind für sich geblieben und haben ihre eigene Sache gemacht, was Verwirrung bei den Nutzern erzeugt hat. Weil die Software dann LibUSB benutzt hat. Und was war der Unterschied zwischen LibUSB Win32 und 0.1? Und dann wurde es natürlich schlimmer. Dann gab es die LibUSB Win1.0 Version, die natürlich dann anders funktioniert hat, die natürlich auch Entwickler gezwungen hat. Sachen anders zu benutzen. Und natürlich hat Win32 das nicht unterstützt und wollte es auch nie unterstützen. Und dann gab es natürlich damit noch mehr Probleme. Und LibUSB X kommt später noch dazu. Und dann gibt es LibUSB K. Die erste Gruppe, die sind gleich, LibUSB ist wahrscheinlich am weitesten verschieden. LibUSB K. ist auch anders. Es hat seine eigenen Probleme. Ich weiß nicht genau, wie viele Entwickler es da gibt, aber eine oder zwei wahrscheinlich auch. Aber gut, Sie möchten, dass es separat erwähnt wird. Also meine Geschichte läuft so. 2003 habe ich das Projekt, bin ich dem Projekt zugeschossen. Ich wollte nur LibUSB benutzen. Ich fand die Technologie, die war neu und es schien interessant. Ich habe mich subscribt, ich habe mich auf die Meldengeliste eingeschrieben und ein bisschen zugehört. Ein paar Fragen beantwortet. Was man halt so macht. Je nachdem, wie viel Zeit ich übrig hatte. 2005, Winter 2005 und 2006 hat Sun Microsystems erinnert ich. Ich sehe einfach Hände hier. Einige von denen sind dann auf die Meldengeliste gekommen und haben die LibUSB Community unterstützt. Sie wollten LibUSB über das Netz wegfahren. Sie haben eine Menge Aufwand in das Projekt reingesteckt und haben versucht, die Richtung zu sitzen. Aber der Maintainer Johannes Ehrfeld damals war nicht einverstanden mit der Richtung und ich auch nicht. Was dann passierte, Januar 2007, ich hatte das schon fast wieder vergessen. Die Sun-Leute publizierten dann einen freundlichen Erfolg. Sie haben das ganz okay gemacht. Wir hatten ein paar manchmal schwierige Diskussionen vorher. Wir haben dann OpenUSB gestartet. Wir hatten ihre Visionen und andere Leute hatten ihre Visionen und dann haben sie davon gelaufen und dann haben sie ihre eigene Dinge gemacht und haben einen neuen Namen. Es war nicht erfolgreich, aber man weiß ja nie. Ich denke, sie haben das Richtige gemacht. Ein paar Monate später Johannes Ehrfeld bot mir an, dass ich dieses Projekt übernehme. Er hatte eine Menge Energie reingesteckt, diese Sachen zu diskutieren mit den OpenUSB-Leuten. Er hatte keinen Spaß mehr am Projekt. Es war okay, dass ich dieses Projekt übernehme. Ich glaube, auch ein paar andere Sachen, die ich übernehmen hätten könnten. Ich hatte das Gefühl, ich fand das toll, dass ich das Angebot bekam, aber hatte nicht das Gefühl, dass ich schon lange genug dabei gewesen wäre oder dass ich den Code gut genug kennen würde. Obwohl ich mit ihnen an vielen Stellen übereinstimmte, fühlte sich trotzdem nicht so an, als ob ich den Job gut machen könnte. Ich dachte also, danke, nein danke, aber blieb in der Community und habe auch weiter mitgemacht. Dann passierte erst mal nichts. Johannes war müde. Im Wesentlichen gab es keinen aktiven Maintainer bis Januar 2008. Dann kam Daniel Draib und er hat ziemlich viel daran gearbeitet. Er hatte schon was Ähnliches gemacht für eine Fingerprinting Software, die er gemacht hatte. Er hatte so ein paar spezielle Ideen für die USB-Geräte-Kommunikation und die passen ganz gut damit seine Positionen des Maintainers zusammen. Johannes gab es bekannt. Alle waren damit einverstanden, ich auch. Ich mache so weiter. Und später im Sommer habe ich dann ein Backtracking-System aufgesetzt. Daniel hat mit der Entwicklung weitergemacht. Er machte die erste USB-10 Release, nachdem er gestartet hatte. Er machte eine weitere Release, dann im Frühjahr 2010. Dann kam die Version 1.8 raus. Das war die letzte Release, die er gemacht hat. Zweimal bis später, also Ende 2009, Anfang 2010, ging es im Wesentlichen darum, Windows-Support. Die Projekte hinzuzufügen. Aus dem blauen kam dieser neue Contributor auf der Mailing-Liste. Und ganz offensichtlich hatte er eine Menge Arbeit Zeit reingesteckt in die USB. Mittlerweile gab es Ticket Nummer 1 im Backtracking-System. Da siehst du, Windows ist der Schützer. Vor allem der Meinung, das ist ein ganz wichtiger Schritt für die USB gewesen. Und auf die Art und Weise könnte man dann auch Windows-Entwickler dazu bekommen, dass sie die USB nutzen und die auch ins Boot holt. Ich war echt total überzeugt davon. Ich habe mich überrascht. Ich habe mich überrascht. Ich habe mich überrascht. Ich habe mich überrascht. Ich habe mich überrascht. Ich habe mich überrascht. Es kam dann zum Projekt und schickte ein paar Tiffs ein. Ich habe nicht wirklich Patches, wie man sie sonst vielleicht erzeugen würde. Einfach nur Tiffs ohne Commit-Message. Ich habe nicht wirklich strukturiert. Ich habe Feedback gegeben, Rückmeldung gegeben. Und ich erwartete, dass er dann irgendwie einfach halt neue Patches überarbeitete, Patches schicken würde ihm, wenn das er nochmal ist in einem Open Source Projekt machen würde. Oder zumindest irgendwie eine Antwort, dass er darüber nachgedacht hat, über die Antwort, über den Feedback, den ich gegeben habe. Es gab dann neue Patches, aber kein Feedback. Meine Anregungen waren nicht in Betracht gezogen worden. Das ging dann bis Anfang 2010 und eine der letzten Taten, die Daniel noch im Projekt machen, bevor er weiter ging, war, dass er einiges von den Windows Patches in den Source Code reingebracht hat. Und jetzt habe ich gedacht, ich habe gedacht, dass das zu früh war. Und ich habe gedacht, der Code war nicht so weit und Daniel hat das gemacht. Und ich wollte dem eigentlich nicht weh sprechen und ich wollte ihn nicht davon zu überzeugen, das Ganze zurückzurollen. Ich hatte viel Respekt für ihn. Also die Lösung, die ich gesehen habe, war, dass wir das nächste Release rausbringen. Und ich wollte eigentlich nicht so viele Bugs hinzufügen oder welche aufholen lassen. Aber der Windows Report sollte am Anfang wenigstens funktionieren. Das hat aber ewig gebraucht. Die Entwicklungen in der Zeit, ich habe nicht so gut zusammengearbeitet mit dem neuen Typen da. Es gab ewige E-Mail-Threads auf der Mailinglist. Und es gab Leute, die gegangen sind, weil sie mit den E-Mails nicht mehr, mit der Menge nicht mehr klar kam. Er hat, aber meine Feedback wurde ignoriert und er hat einfach immer, immer weiter gemacht. Aber ich war immer noch glücklich, dass er da war. Aber ich fand es wirklich schwierig zusammenzuarbeiten. Ich habe einfach versucht, weiterzumachen. Und ich habe versucht, an einem Codeweite zu arbeiten. Und den Windows Support in eine Form zu bringen, der benutzbar ist. Und dann haben wir es auch in 2011 geschafft. Und ein paar Monate später gab es jemanden, der das hier geschrieben hat. Es gibt wahrscheinlich einen Unterschied, was du für Guthails und von dem Rest und was der Rest von uns hält. Es war eine von vielen E-Mails. Es hat nicht gerade bei Imbellation geholfen. Es war echt schwer, das zu hören. Aber ich habe weitergemacht. Ich habe weitergemacht. Aber ich dachte, wir sollten diesen Windows Support wirklich rausbringen. Ein paar Monate später, April 2012, gab es wieder einen neuen Threat, wo drin stand, dass LibUSB tot ist und es lebe LibUSBX. Und es war auch dieser Windows Mensch, der LibUSBX vorerst bewegt hat. Er hat das geschrieben, um das zweijährige Jubiläum zu feiern, was Daniel vor zwei Jahren gemacht hat. Und das letzte Release von LibUSBX. Sie haben das zweijährige Jubiläum des ersten Commits von Daniel benutzt, um zu zeigen, dass LibUSB tot ist. Er ist recht gut im Text geschrieben. Er kommt aus Irland. Und wenn man sich LibUSBX anguckt, haben sie sehr lange an diesem Text gearbeitet, bevor sie es zu Mailing List geschickt haben. Sie haben mehrere Interaktion geschrieben. Und sie haben, und wenn die Version vergleicht, sieht man, wie sie Wörter und Sätze bearbeitet haben, um das Ganze so hinzubekommen, wie es rauskam. Sie haben gesagt, dass LibUSB tot ist. Und also werden sie ihren Fog rausgebracht haben, obwohl es noch aktiver ist. Es gab noch viele Commits, also öffentliche Commits, aber es gab keinen Release. Viele Nutzer sackten, dass sie einen Release haben wollten. Und ich wollte auch was rausbringen. Aber ich wollte, dass der Windows Support in Ordnung ist und nicht allzu viele Probleme hat. Es musste einfach gut funktionieren. Und ich wollte halt so viele Fehler korrigieren wie möglich. Und was hier auch erwähnt wurde, wenn ihr Interesse habt, dass LibUSBX, es wurde erwähnt in der Nachricht, dass LibUSBX auch bald Jenkins und Garrett supporter. Und nach ein paar Sprints später habe ich das 1.0 Release rausgebracht. Mit 260 Commits seit der letzten Version. Also es war sehr viel Arbeit, dieses 1.0.9 Release. Ich denke, ich habe so 2000 Stunden in den 2 Jahren verbracht. Das ist wirklich ein halbzeit Job, den ich da reingesteckt habe. Aber es war nicht genug. Und ich habe es nicht mit den richtigen Sachen verbracht. Es gab diese Leute, die eine neue Release haben wollten. Und ich wollte da keine Release haben, aber da rauf komme ich da zurück. Im Mai, ein paar Wochen später, hat ein Red Hat Mitarbeiter einen Blog-Post geschrieben, der auch an LibUSBX bearbeitet hat, einen sehr kurzen Blog-Post, oder zwei Teilen über LibUSBX, dass er das Fedora-Paket von LibUSB zu LibUSBX gennt hat. Und es hat nur ein paar Wochen gebraucht, bis alle Leute auf den LibUSBX gewechselt sind. Keiner hat mich gefragt, was los war. Jemand hat wahrscheinlich in das Rebo geguckt, und viele Commits waren einfach von mir. Ich weiß auch nicht. Ich nehme an, das hat wohl gereicht, dass Fedora gewechselt hat. Ich habe ein paar Leute kontaktiert, habe E-Mail geschickt, habe ihnen erzählt, wie ich mich damit fühlte mit der Situation, wie es mein Herz gebrochen hat, dass keiner mir gesprochen hat. Dass ich keiner bemüßigt gefühlt hat, auch da mal ein paar Fakten zu recherchieren. Und zufällig habe ich dann später herausgefunden. Ich habe dann ein Link bekommen. Und dann war diese E-Mail plötzlich auf PaySpin. Ich weiß es auch nicht. Es ist irgendwie ein bisschen komisch. Also, wie auch immer, es gab also den Fog. Und wir haben parallel weitergearbeitet. Die meisten Leute haben den Fog benutzt, weil sie das Gefühl hatten, dass da jetzt neue und aufregende Dinge passieren. Und dann der eine Mensch, der immer an MacOS gearbeitet hat, der blieb beim Originalprojekt. Er war auch gegen dieses andere Projekt, welche einzelne Entscheidungen sie gemacht haben. Und ich war froh, dass ich seine Unterstützung hatte. Keine Bugs. Also, etwas später, ich weiß nicht genau, wie viel. Ich hatte dann Nathan mich plötzlich unerwartet von der Distribution List runtergenommen, wo wir also auch Releases publishen. Also, er entscheidet plötzlich, macht das Projekt weiter. Er hat eine Änderung gearbeitet. Und ich hatte das starke Gefühl, dass die noch nicht so weit sind. Ich habe das kommuniziert. Ich bin mir nicht sicher, ob er das verstanden hat, was die Probleme waren. Er war frustriert, dass es mit der Entwicklung, ich war frustriert, dass es mit der Entwicklung nicht vorwärts ging. Danach hatte dann alle LibUSBX Leute wieder eingeladen, um in LibUSB mitzumachen. Und das hat mich jetzt total überrascht. Das hatte ich nicht erwartet. Ich habe das nicht kommen sehen. Und dann sagten sie, sie seien jetzt LibUSB. Die haben auf LibUSBX weitergemacht. Und ich habe an meinem Code weitergemacht. Es gibt diesen einen Komet in dem LibUSB-Github-Repository, wo ziemlich klar ist, dass das, was sie Merge nennen, einfach eine Umbenennung der LibUSBX Codebase in LibUSB war. Das wusste eigentlich keiner. Ich habe sogar einen ziemlich bekannten Kernel, Linux-Kernel-Developer, wusste das nicht. Ich meine, in den News hieß es halt einfach, dass sich die Projekte zusammen gemirkt haben wieder. Also, welche Fehler habe ich gemacht? Ich habe eine Menge Fehler gemacht. Nur wenige waren wichtiger als dieser eine, dass der Fehler war, nichts zu erließen. Das signalisiert einfach Aktivität im Projekt an Menschen, die nicht im Projekt arbeiten. Man könnte sagen, das ist ja dann nur for show. Selbst wenn sich nicht viel geändert hat, das macht gar nichts. Aber es ist wichtig, dass man eben einen Puls schickt, dass Leute wissen, dass da geht noch was, da geht noch was vorwärts im Projekt, dass da passiert was. Ein anderer Fehler, den ich gemacht hatte, war, ich bin Schwede. Ich glaube, als man sagt uns nach, dass wir immer einheitliche, einstimmige Entscheidungen wollen. Und ich habe den Konsens gesucht mit anderen Entwicklern, ich habe da das versucht, daraus zu finden. Und wenn andere Entwickler was anders wollten, dann wollte ich das verstehen. Ich sollte das nicht versucht haben, ich sollte das nicht so lange gemacht haben. Irgendwann wurde klar, es funktioniert nicht zusammen, wir sollten uns trennen, aber das hat eineinhalb Jahre gebraucht, bis es klar wurde, dieser Kampf, wie es einen Körnern Entwickler nannte, also diese Diskussion, ich dachte, es war eine Diskussion. Aber es wurde von außen nicht als Diskussion wahrgenommen. Von außen hat man viel Negativität wahrgenommen. Es gibt eine sehr gute Präsentation von Donnie Birkals, wo er unter anderem sagt, dass eine negative, ein negatives Erlebnis, fünf positive Erlebnisse braucht in einem Open Source Projekt, damit ein Contributor dabei bleibt und damit sie jetzt wieder aufhebt. Also jedes einzelne negative Ding muss durch fünf positive Dinge wieder aufgehoben werden. Das ist eine Menge positives Zeug, was passieren muss. Um diese eine negative Erlebnis auszubügeln, ich habe viel gelernt darüber, wie verschiedene Contributor, wie die motiviert werden, was sie motiviert, dass es unterschiedliche Contributor gibt, unterschiedliche Mitarbeiter gibt. Ich war da sehr naiv, als ich dieses Projekt enthinte. Ich war einfach aus selbstlosen Gründen dabei. Ich wollte eine gute Bibliothek entwickeln, die andere benutzen können, die ich auch selber benutzen kann. Aber das ist nicht unbedingt das, was andere Leute motiviert. Vor allem, wenn man Leute aus der Wirtschaft hat, die irgendwie mitmachen, der wollte nur das Problem seines zahlenen Kunden lösen und die ihm was wurscht. Er wollte einfach nur eine funktionelle Library haben. Package-Maintenor für Betriebssysteme, denen sind die Fakten nicht so wichtig. Ich habe mit ein paar gesprochen, die waren alle ganz wahnsinnig beschäftigt und echt gestresst. Es hatten zu viel Arbeit und hatten einfach keine Zeit, da investigativen Journalismus zu machen. Ich habe von Trolls gelernt, die es im Internet gibt. Ich sage es nicht, dass irgendein spezieller Troll war, aber ich bin getrollt worden. Ich habe mich trollen lassen und ich habe die Trolls gefüttert. Das ist nicht gut, denn das führt zu diesen negativen Erlebnissen in dem Projekt, das Projekt. Das tut auch mir weh. Github, das ist auch eine lustige Geschichte, aber wir haben nicht Zeit und ich will mir das dann überspringen. Ich werde jetzt einfach dorthin zu gehen, was ich über mich gelernt habe. Ich mag Sachen richtig, richtig gut zu machen und ich habe noch nicht viel gelernt, dass ich dazu tendiere, Sachen zu gut zu machen und ich muss lernen, damit umzugehen. Ich muss lernen, wie andere Leute damit umgehen wollen und ich muss lernen, dass wir nicht alle Probleme beheben, bevor wir sie erfahren. Ich muss Sachen manchmal alleine lassen. Das ist das Problem, dass wir nicht alle Probleme beheben, bevor wir sie erfahren. Ich muss mich einfach alleine lassen und in Retro-Perspektive. I told you so. Ich habe es euch so gesagt.