Es ist schwer, ein Open Source-Projektbetreuer zu sein

Gepostet von Salvatore Sanfilippo, Entwickler und Verwalter der Free Redis Database Engine

Vor einigen Monaten wurde ich vom Betreuer eines Open-Source-Systemprojekts mit einer ziemlich großen und aktiven Community geschrieben. Er schrieb, dass er seit vielen Jahren Schwierigkeiten hat, sein Projekt zu unterstützen, aber unter ernsthaftem psychischen Stress leidet. Ich bat um Rat. Ich antwortete, dass ich kaum in der Lage war, Ratschläge zu geben, aber ich versprach, einen Blog-Beitrag darüber zu schreiben, was ich darüber denke.

Einige Wochen vergingen, ich begann mehrmals, diesen Beitrag zu schreiben und hörte auf, weil ich keine Zeit hatte, ihn gründlich zu überdenken. Nun habe ich anscheinend die Selbstanalyse meiner Schwächen, Schwierigkeiten und meines Wunsches nach Freiheit abgeschlossen. Diese Gefühle umfassen unweigerlich den menschlichen Geist, wenn er sich auf eine Aufgabe konzentriert, und ein negativer Aspekt manifestiert sich für eine lange Zeit. Die Unterstützung des Open Source-Projekts bringt natürlich auch viel Freude und Vergnügen mit sich. Die letzten zehn Jahre meines Berufslebens werden sicherlich noch lange in Erinnerung bleiben. Dies sind gute Jahre, obwohl nicht die besten (es hat beim Start noch mehr Spaß gemacht). Aber hier werde ich mich auf die negative Seite konzentrieren. Denken Sie daran, dass es positive Punkte gibt.

Lawine von Anfragen


Ich glaube nicht an "schnelles Handeln", "schnelles Denken", "Sieg über die Zeit" und dergleichen. Ich mag die oberflächliche Welt mit der mangelnden Konzentration und Aufmerksamkeit, in der wir leben, aufgrund sozialer Netzwerke, Chatrooms, E-Mails und eines Zeitplans voller Veranstaltungen nicht. In den frühen Jahren von Redis hatte ich noch viel Zeit. Als der Brief ankam, konnte ich mich ruhig auf das konzentrieren, was der Autor zu sagen versuchte. Ich konnte mich an den relevanten Teil des Redis-Codes erinnern und nach sorgfältiger Prüfung des Problems endlich meine wahren Gedanken zum Ausdruck bringen. Ich glaube, dass die meisten Menschen so arbeiten sollten, egal was ihre Arbeit ist.

Wenn ein Softwareprojekt wie Redis an Popularität gewinnt und die Kommunikation zwischen Menschen so vereinfacht wird wie in modernen sozialen Tools, ändert sich alles. Benutzer behandeln Sie als leblose Entität, und die Anzahl der Nachrichten, Fragen, Anfragen und Angebote wächst exponentiell. Gleichzeitig wächst in der Redis-Community (obwohl es mir scheint, dass dies ein häufiges Problem ist) die Zahl der Menschen, die diese Fragen fachmännisch beantworten können, sehr langsam. Offensichtliche Überlastung wird erzeugt. Die meisten Menschen sind zu pragmatisch in Bezug auf dieses Problem. Wir schließen das Ticket, wenn der Top-Starter unsere Frage nicht innerhalb von zwei Wochen beantwortet hat. Schließen Sie alle Tickets mit vagen Formulierungen. Und andere Möglichkeiten zur mechanischen Reinigung des Stroms. Die Realität ist jedoch, dass es einige Zeit dauert, um Überprüfungen gut zu verarbeiten. Andernfalls tun Sie einfach so, als hätte das Projekt nur wenige offene Tickets. Es wäre schön, über viele Ressourcen zu verfügen, um bezahlte Vollzeit-Experten einzustellen, die jedes Redis-Subsystem einen ganzen Tag lang unterstützen, aber in Wirklichkeit ist dies nicht möglich.

Also, was ist los? Sie beginnen mehr Prioritäten zu setzen: was zu beachten ist und was nicht. Und Sie fühlen sich wie ein Stück Scheiße, ignorieren so viele Fragen und so viele Menschen, und Mitwirkende glauben, dass Sie sich nicht um ihre Arbeit kümmern. Dies ist eine schwierige Situation. Normalerweise werden am Ende nur kritische Probleme gelöst. Alles Neue wird ignoriert, da neue Funktionen noch nicht grundlegend sind und wer die Codebasis erweitern möchte, um noch mehr Pull-Anfragen und Probleme zu erhalten? Möglicherweise schreiben Sie verwirrenderen Code als gewöhnlich. Je verwirrender der Code ist, desto schwieriger ist es, die Grundursache im Falle eines kritischen Fehlers zu verfolgen.

Rollenwechsel


Aufgrund der oben beschriebenen Lawine von Anfragen ändert sich auch Ihre Arbeit plötzlich. Redis ist populär geworden, weil ich irgendwie weiß, wie man Code entwirft und schreibt. Und jetzt beschäftige ich mich stattdessen hauptsächlich mit Problemlösungen und Pull-Anfragen. Und ständig scheint es, dass ich selbst besseren Code schreiben würde als in diesen Pull-Anfragen. Obwohl der Code manchmal besser ist, als ich es selbst tun könnte, weil es in der Redis-Community bessere Programmierer gibt. Aber die meisten sind einfach geschrieben, um ein bestimmtes Problem zu lösen. Ich vertrete zwar immer das System als Ganzes, weil ich seit vielen Jahren daran arbeite. Dafür bleibt jedoch keine Zeit mehr. Daher werden große neue Funktionen weniger organisch in den Hauptcode integriert. Was gibt es zu tun? Manchmal verbringe ich nur einige Wochen mit Tickets und ziehe Anfragen, weil ich codiere oder entwerfe: Dies ist eine Arbeit, die ich wirklich liebe und genieße. Aber dies wiederum erhöht den psychischen Druck, weil ich alle ignoriere.

Um das zu tun, was ich liebe und weiß, wie man es gut macht, muss man sich wie Scheiße fühlen.

Zeit


Zumindest für mich gibt es zwei Probleme bei der langen Arbeit an einem Projekt.

Erstens habe ich vor Redis nie jeden Arbeitstag ohne Pause gearbeitet. Ich könnte eine Woche arbeiten, für zwei aufhören, dann für einen Monat arbeiten, für zwei Monate verschwinden. Immer. Die Menschen müssen sich aufladen, neue Energie und Ideen bekommen, kreativ werden. Und High-Level-Programmierung ist kreative Arbeit. Redis selbst lebte die ersten zwei Jahre so, dh als es sich mit maximaler Geschwindigkeit entwickelte. Weil die Gesamtleistung meiner Arbeit, wenn ich arbeiten möchte, größer ist als wenn ich jeden Tag nachhaltig arbeiten muss.

Wenn ich alleine arbeitete, konnte ich mir einen kostenlosen Zeitplan leisten. Sobald ich anfing, Geld von Redis Labs zu bekommen, erlaubte meine Ethik dies nicht mehr. Ich musste mich zwingen, nach einem normalen Zeitplan zu arbeiten. Dies ist ein ernsthafter Kampf mit mir selbst, den ich seit vielen Jahren führe. Darüber hinaus bin ich mir sicher, dass dadurch die Qualität und das Volumen der Arbeit abgenommen haben, aber es gibt nichts zu tun: Alles ist in dieser Welt arrangiert. Ich habe keinen Weg gefunden, dieses Problem zu lösen. Ich könnte Redis Labs sagen, dass ich zu meinem alten Zeitplan zurückkehren möchte, aber es macht keinen Sinn, weil ich im Moment der Community und nicht dem Unternehmen „Bericht erstatte“.

Ein weiteres Problem ist, dass eine Menge Arbeit an einem Projekt auch mental schwierig ist. In der Vergangenheit habe ich das Projekt alle sechs Monate speziell geändert. Ich mache jetzt seit zehn Jahren dasselbe. Um meine Gedanken zu behalten, habe ich Teilprojekte in Redis gestartet. Sobald ich einen Cluster erstellt habe, den anderen - Festplattenspeicher (jetzt aufgegeben), dann HyerLogLogs usw. Grundsätzlich sind diese Dinge für das Projekt nützlich, aber im Wesentlichen sind sie etwas anderes. Am Ende kehren Sie jedoch immer mit Tickets und Pull-Anfragen zur gleichen Seite zurück und tun jeden Tag dasselbe: "Das Replikat wird aufgrund eines Timeouts getrennt" und so weiter. Nun, lassen Sie uns noch einmal damit umgehen.

Angst


Ich hatte immer Angst, die technologische Führung im Projekt zu verlieren. Nicht weil ich nicht gut darin bin, Redis zu entwerfen und zu entwickeln, sondern weil ich weiß, dass meine Pfade nicht den Wünschen einer großen Anzahl von Benutzern entsprechen und was die meisten IT-Mitarbeiter als gute Software betrachten. Daher muss ich ständig zwischen dem, was ich für ein gutes Design halte, einer Reihe von Funktionen, der Entwicklungsgeschwindigkeit (langsam), der Projektgröße (minimal) und dem, was ich den meisten Benutzern geben sollte, ein Gleichgewicht herstellen. Glücklicherweise gibt es einen Prozentsatz von Redis-Benutzern, die Redis-way sehr gut verstehen, so dass ich zumindest von Zeit zu Zeit ein paar unterstützende Worte bekomme.

Meinungsverschiedenheiten


Einige Leute sind völlige Idioten. Sie sind überall, das ist natürlich. Meiner Meinung nach gibt es in der Programmierung viel mehr gute Leute als in anderen Bereichen. Aber es gibt immer einen gewissen Prozentsatz an absoluten Arschlöchern. Als Leiter des beliebten OSS-Projekts müssen Sie sich trotzdem mit ihnen befassen. Vielleicht ist dies eines der stressigsten Dinge, mit denen ich mich während der Entwicklung von Redis befasst habe.

Sinnlosigkeit


Manchmal scheint es mir, dass selbst die exzellenteste Software als Meisterwerk der Literatur niemals ewig halten wird. Bitte beachten Sie, dass dies nicht auf seine Qualität zurückzuführen ist, sondern als Nebeneffekt seiner nützlichen Funktion ... Es ist in der Praxis nützlich. Deshalb wird etwas Nützlicheres kommen, um es zu ersetzen. Ich hätte gerne Zeit für andere Klassen. Daher scheint es manchmal, dass meine ganze Arbeit am Ende zwecklos ist. Wir entwerfen und schreiben Systeme, aber dann werden neue erscheinen. Ist im Allgemeinen mindestens ein angewandter Programmierer und kein Theoretiker mit "großen Ideen" in der Lage, Spuren zu hinterlassen? Ich glaube, ich hatte von Zeit zu Zeit die Gelegenheit, an großartigen Ideen zu arbeiten, aber ich konzentrierte mich darauf, die Software zu schreiben, anstatt darüber nachzudenken. Daher konnte ich mein Potenzial in dieser Hinsicht nicht nutzen. Dies ist das Gegenteil des Betrugssyndroms: Es tut mir leid, bescheidener sein zu müssen.

Trotzdem konnte ich viele Jahre arbeiten und das tun, was ich wirklich liebte, was mir Freunde, Anerkennung und Geld gab. Das soll nicht heißen, dass es ein schlechtes Geschäft war. Ich verstehe jedoch voll und ganz, dass die Menschen vor großen Herausforderungen stehen, sobald ihr Projekt populär wird. Dieser Artikel ist ihnen gewidmet.

Source: https://habr.com/ru/post/de452332/


All Articles