Ich habe ein Open-Source-Skript für eine bestimmte Site (ich versuche, hier nichts beim Namen zu nennen), das ich und einige andere Entwickler kürzlich zu GitHub verschoben haben. Seit wir auf das neue System umgestiegen sind, haben wir mehrere neue Entwickler bekommen, darunter einen sehr aktiven. Dieser Aktive hat jedoch begonnen, einen Großteil des Projekts zu verändern.
Zuerst hat er unser Versionssystem gelöscht (nicht wie Git, aber so - wir haben es Versionen genannt v4.1.16
) und gesagt, es wäre besser, den Code einfach auf die Site zu pushen, wenn wir glauben, dass es fertig ist. Jetzt gibt es keinen zentralen Ort, an dem Versionshinweise abgelegt werden können, was ärgerlich geworden ist.
Das Ding, das mich fast fertig gemacht hat, meine Koffer zu packen und zu gehen, war das Push-Skript. Ein anderer Entwickler des Projekts schrieb ein einfaches Python-basiertes Push-Skript. Da wir an verschiedenen Stellen mehrere Versionen des Skripts online halten, begann ich, ein größeres Java-Programm mit einer grafischen Oberfläche zu programmieren, die das Python-Skript ersetzen wird. Ich ging in das IRC, um alle darüber zu informieren, und der Programmierer antwortete sehr ärgerlich, dass das alte Skript auf Python-Basis alles kann, was ich kann und so viel leichter ist (er kommentierte auch die Tatsache, dass er dachte) Python war besser als Java und so weiter. Ich überflog den Code für das alte Push-Skript und stellte fest, dass keine der von ihm genannten Funktionen vorhanden war.
Jetzt möchte ich wissen, was ich tun soll. Ich habe viel Zeit mit diesem Projekt verbracht, also möchte ich nicht einfach aufstehen und gehen, aber es fällt mir schwer, mit diesem neuen Entwickler zusammenzuarbeiten. Auf der anderen Seite ist er jetzt der # 1 Committer im Projekt, mit noch mehr Commits als der Hauptentwickler. Ich bin mir nicht sicher, was ich dagegen tun soll. Hat jemand anderes dieses Problem erlebt? Wenn ja, was hast du gemacht?
UPDATE 1 : Ich habe den Commit-Zugriff aller Benutzer deaktiviert und fordere die Benutzer auf, Pull-Anforderungen zu bearbeiten. Ich schlug auch verschiedene Maßnahmen vor, um die anderen Probleme zu beheben. Alle anderen haben keine Unterstützung dafür gezeigt. Der lästige Entwickler hat einfach gesagt, dass Leute, die die "Commit-Aktion" nicht genau verfolgen, denken können, dass das Projekt desorganisiert ist, wenn es wirklich nicht so ist. Ich stimme dem offensichtlich nicht zu, daher denke ich ernsthaft darüber nach, von dem Projekt zurückzutreten.
UPDATE 2 : Der leitende Entwickler begann sich darüber zu ärgern, dass einer meiner Commits angeblich drei neue Zeilen im Code löschte (das Revert Commit wurde direkt nach dem Posten der Diskussion angezeigt und bezieht sich nicht einmal auf mein "Commit"), und dann Die beiden begannen zu diskutieren, ob sie meinen Commit-Zugriff widerrufen sollten. Also habe ich das Logische getan und das Projekt verlassen. Vielen Dank für Ihre Hilfe!
quelle
Antworten:
Sie können aufhören. Dies ist nicht das Konstruktivste, aber manchmal die einzige Option. Wenn Sie dies tun, sitzen Sie nicht herum und jammern Sie darüber, wie Sie es aufgeben mussten, nehmen Sie diese Energie auf und stecken Sie sie direkt in etwas anderes - mit anderen Worten, machen Sie weiter.
Sie können es gabeln. Es gibt keinen Grund, warum Sie mit jemandem arbeiten müssen. Fork, verbessere den Code und lass die anderen weiterhin ein kleines Ego-Fest für sich haben. Ihr neues Projekt wird einfach mit dem alten konkurrieren und es liegt an Ihnen, ob Sie es zum Erfolg führen oder ob Sie das alte Projekt in Bezug auf Benutzer und Funktionen übertrifft.
Sie können sich mit dem Rest des Entwicklungsteams an dem Projekt beteiligen, um Ihre Bedenken auszudrücken. Machen Sie es nicht persönlich, sondern stellen Sie fest, dass Sie mit der Abwanderung von Code oder dem Mangel an etablierten Qualitätsprozessen unzufrieden sind oder dass die neuen Entscheidungen nur ohne die Zustimmung aller getroffen werden. Entweder wird Ihnen gesagt, dass nichts falsch genug ist, um sich zu ändern, oder einige andere stimmen Ihnen zu, dass das Team die Dinge regeln muss. Das könnte dazu führen, dass der Störer seinen Commit-Zugriff verliert. Vielleicht sind Sie sich alle einig, dass einige der Änderungen keine Verbesserungen sind und das Projekt zurückgesetzt werden muss. (Diese letztere Option ist das wahrscheinlichste Ergebnis, es sei denn, sie wird zu einem massiven Argument fester Meinungen.)
Es kann schwierig sein, wenn jemand vorbeikommt und die sicheren und bequemen Routinen ändert, an die Sie sich gewöhnt haben, aber man könnte sagen, dass es an sich gut ist, jemanden zu haben, der die alten, gemütlichen Praktiken aufmischt.
quelle
Sie haben es ein wenig unklar gemacht, welche Rolle Sie hier spielen. Die Antwort hängt davon ab, wie Sie passen.
Wenn Sie das Projekt leiten und das Git-Repository kontrollieren
Übernimm die Kontrolle zurück. Wenn dieser Typ Commits macht, die Sie nicht mögen, ohne Sie zu befragen, entfernen Sie seinen direkten Commit-Zugriff. Er kann das Projekt verzweigen und Pull-Anfragen stellen, um seine Commits zusammenzuführen. So sollte Open Source funktionieren, bis ein Benutzer Vertrauen aufbaut. Sie müssen und sollten nicht sofort vollen Zugriff gewähren.
Wenn jemand anderes das Repo kontrolliert
Bringen Sie Ihre Bedenken gegenüber der Person zum Ausdruck, die dies tut, und fördern Sie einen disziplinierteren Prozess für die Planung und Genehmigung von Änderungen. Wenn die Führung für einen Prozess nicht zugänglich ist, können Sie den Status Quo akzeptieren und weiterhin Beiträge leisten, das Projekt teilen und an Ihrer eigenen Version arbeiten (und jeden mitbringen, der mit Ihnen einverstanden ist), oder Sie können wählen, zu gehen und an anderen Dingen arbeiten. In jedem Fall müssen Sie sich nicht weiter darum kümmern.
quelle
Bitte verzeihen Sie meine Stumpfheit, aber Ihr Beitrag liest sich wie ein Scherz.
Sie sagen, es ist der andere, der sinnlose Veränderungen will, aber dann widersprechen Sie sich selbst, wenn Sie über Ihr neues, glänzendes Java-Programm sprechen.
Mach eine Pause; Es ist keine Einbahnstraße, bitte versuchen Sie, Kompromisse zu finden (wenn Sie weiter an dem Projekt arbeiten möchten - Gabelung ist die einfachste Entscheidung, führt Sie jedoch nicht zu nützlichen Zielen, obwohl es Ihr Ego streicheln kann).
Denken Sie auch gründlich über die Arbeitsteilung im Projekt nach - Rasenkriege sind unvermeidlich, wenn Sie keine klaren Grenzen haben, die Ihnen sagen, wer in was kompetent ist . Ja, manchmal muss man dem Urteil anderer vertrauen.
quelle
In mehreren Antworten wurde bereits erwähnt, dass Arbeitsteilung eine Möglichkeit ist, Konflikte zu reduzieren. Hier einige konkrete Beispiele:
Abgesehen vom Aspekt der Konfliktvermeidung ist offensichtlich, dass das Projekt möglicherweise keine ausreichende Governance aufweist .
Warum ist Governance wichtig? Stellen Sie sich vor, eines Tages hat ein ehemaliger Teamkollege ein Stück der Software genommen und das Team wegen Verstoßes verklagt. Oder das Team, das von Patent Troll verklagt wurde. Oder ein Unbekannter hat beschlossen, DMCA-Benachrichtigungen an die Hosting-Site des Projekts zu senden und den Quellcode des Projekts zu löschen.
Zumindest:
Die meisten Open-Source-Projektwebsites bieten fertige Chartas zur Projektsteuerung.
quelle
Ich habe das Problem schon einmal gesehen. Aber nach ein paar Jahren wird man des Projekts wirklich müde, und meine Lösung bestand darin , das Projekt zu verlassen . Es funktioniert vielleicht nicht für Sie, aber das Problem ist grundsätzlich, dass verschiedene Menschen auf unterschiedliche Weise denken. Funktionen, die Sie für sehr wichtig halten, sind für andere Menschen überhaupt nicht wichtig.
Ein guter Plan wäre es, die Aufgaben verschiedener Personen zu teilen . Wenn Sie mit den Personen übereinstimmen können, welcher Teil des Projekts in der Verantwortung jeder Person liegt, trifft nur eine Person Entscheidungen über einen bestimmten Teil des Projekts. Teamwork ist aber immer schwierig. Sie werden die Entscheidungen, die andere Programmierer getroffen haben, immer noch nicht mögen. Die beste Lösung besteht darin, sich nie anzuschauen, was andere Programmierer beschlossen haben. Vertraue einfach darauf, dass sie das Richtige tun.
Gemeinsames Ziel wird Ihre Bemühungen auf das Wichtige konzentrieren. Jeder, der in die gleiche Richtung arbeitet, ist schwer zu bekommen, und Konflikte werden sowieso passieren. Um ein gemeinsames Ziel zu bestimmen, muss der aktuelle Status des Projekts bekannt sein und nach einiger Zeit entschieden werden, wo es sich befinden muss.
Hier ist ein Beispiel für Dinge, die vermieden werden sollten: Beispielsweise glauben viele C ++ - Programmierer, dass Code, der keine STL-Bibliothek verwendet, fehlerhaft ist. Andere Programmierer glauben, dass jede Abhängigkeit von externen Bibliotheken, einschließlich STL, zerstört ist. Solche Konflikte können einfach nicht richtig gelöst werden - beide Situationen können nicht gleichzeitig erfüllt werden - und die problematischsten Menschen werden ihre Meinung vertreten, egal auf welche Opposition sie stoßen.
quelle
Vier Möglichkeiten, würde ich meinen.
Ich persönlich bevorzuge Option 4.
quelle
Google hatte vor ein paar Jahren ein paar technische Gespräche darüber. Beobachte sie:1 ,2 . In einer Nussschale:
Eine umfassende schriftliche Übersicht ist ebenfalls verfügbar, wenn Sie lieber lesen als zuschauen möchten.
quelle
Sie können nicht einfach aufhören, ohne sich Mühe zu geben, Ihre Bedenken und Schwierigkeiten auszudrücken. Ich weiß, dass es schwierig sein kann. Wenn Sie und Ihre Teammitglieder jung genug sind, um nicht aus erster Hand viele soziale Probleme zu erleben, die in einem Entwicklungsteam auftreten, kann dies sehr schwierig sein.
Ich bin jedoch der festen Überzeugung, dass Sie Ihre Bedenken zum Ausdruck bringen sollten. Sie können sie in die E-Mail schreiben und Ihren vertrauenswürdigen Freunden zeigen, die nicht zum Team gehören und kein oder nur geringes Interesse an Ihren Aktivitäten haben. In diesem Fall erhalten Sie möglicherweise ein gutes Feedback, damit die Formulierung Ihrer E-Mail nicht zu hart ist. Halten Sie sich jedoch an die Fakten. Nicht beschuldigen oder beschuldigen. Nur Fakten, dass es schwierig ist, etwas für Sie zu tun, weil "bla" fehlt. Warum 'blah' fehlt, sollte jedem Teammitglied klar sein, dh "der neue Programmierer" hat etwas gelöscht oder nicht erreicht.
Auch hier ist das Senden dieser E-Mail schwierig, aber das allein ist eine großartige Erfahrung, die für Sie in Zukunft sehr nützlich sein kann. Tolle Lektion zum Lernen.
PS: Ich wollte nicht zu elterlich klingen. Allerdings ist es in der Tat etwas, was ich jedem sagen würde, auch meinen Kindern.
quelle