Woher wissen Sie, ob ein Open Source-Projekt ausgereift genug ist, um in einem Produkt verwendet zu werden?

15

Es gibt einige Open-Source-Projekte, die ich bei der Arbeit in ein Produkt integrieren möchte. Wir haben weder die Bandbreite noch das Fachwissen, um dies selbst zu tun. Ich fand diese durch die Suche in Google. Ich kenne keine "Hauptakteure", die die Projekte nutzen, aber ich bin von dem, was ich sehe, ziemlich ermutigt.

Jetzt bin ich ein bisschen besorgt über das Risiko, dem ich durch die Verwendung von Joe-Blows Open-Source-Projekt ausgesetzt bin. Wenn ich 95% des Weges dorthin benötige, können die restlichen 5% leicht hinzugefügt oder behoben werden. Vielleicht ist es nicht trivial.

Wie bestimmen die Leute, ob ein Open Source-Projekt ausgereift genug ist, um in einem Produkt verwendet zu werden?

Dies ist kein Hobbyprojekt, daher sind Stabilität, Wartbarkeit usw. von größter Bedeutung.

jglouie
quelle
Das weiß man nie genau. Ist Windows ausgereift genug? Testen Sie es und versuchen Sie, Kontakt mit Entwicklern aufzunehmen - der persönliche Kontakt (E-Mail?) Kann viel über die Vernunft / Reife des von ihnen erstellten Projekts aussagen.
SChepurin
3
Wichtig ist nur, ob es Ihren Anforderungen entspricht. Wenn ja, benutzen Sie es einfach. Wenn es nicht "ausgereift" ist (dessen Definition umstritten ist), können Sie anfangen, zum Code / discussion / docs / community / bugs / xyz beizutragen, um es zu reifen.
Treecoder
1
Schreiben Sie einen wirklich guten Satz von Komponententests, bevor Sie die neue Bibliothek in Ihr tatsächliches Produkt aufnehmen.
Jim In Texas
@greengit: Es muss nicht einmal allen Anforderungen entsprechen, solange keine Alternative besser zu ihnen passt.
Jan Hudec

Antworten:

17

Die Kriterien, die ich verwende, sofern das Projekt meinen Anforderungen entspricht:

  1. Gibt es eine aktive Gemeinschaft mit Menschen, die Hilfe leisten können?
  2. Passt die Lizenz zu meiner Entwicklung?
  3. Befindet sich das Produkt noch in der aktiven Entwicklung?
  4. Ist es ein häufig verwendetes Framework?
  5. Kann ich Bewertungen / Blogeinträge / usw. des Produkts finden und wie haben sich die Nutzer in das Produkt integriert?

4 & 5 helfen nicht wirklich bei Nischenprojekten, wie es sich anhört.

Das Wichtigste ist, ob es Ihren Anforderungen entspricht? Wenn Sie der Meinung sind, dass dies der Fall ist, müssen Sie als Nächstes ein Gurtzeug erstellen, um das Projekt zu testen und festzustellen, ob Sie das tun können, was Sie möchten. Auf diese Weise erhalten Sie ein Gefühl für die API (sofern es sich um eine Bibliothek handelt) und deren Funktionsweise.

Am Ende des Tages, wenn es etwas Open Source gibt, das 90% von dem macht, was Sie tun, verzweigen Sie es, fügen Sie die zusätzliche Funktionalität hinzu und senden Sie es an die Community zurück. Ich habe das schon bei kommerziellen Projekten gemacht.

Sam
quelle
6
Vergessen Sie nie, dass 95% erledigt bedeuten, dass nur noch 95% zu erledigen sind ...
mattnz
6
  1. Für Framework gehe ich generell nur mit großem und ausgereiftem Framework mit vielen vorgefertigten Modulen und großer Community um. Im Allgemeinen würde die Auswahl eines Frameworks gegenüber dem anderen den Arbeitsaufwand für Ihren eigenen Code nicht wesentlich verringern. Einige Frameworks können einen schöneren Code fördern, andere können bestimmte Vorgänge vereinfachen, aber sie summieren sich im Allgemeinen auf sehr viel kleiner Unterschied zum gesamten Entwicklungsaufwand. In gängigen Frameworks gibt es jedoch mehr vorgefertigte Module, die Sie nutzen können. Auf diese Weise können Sie in der Regel viel mehr Zeit und Mühe sparen.
  2. Bei kleinen Nicht-Framework-Bibliotheken können Sie im Allgemeinen bei Bedarf problemlos Änderungen selbst vornehmen. Daher würde ich in der Regel eine Community als zusätzlichen Bonus in Betracht ziehen. Die meisten kleinen Bibliotheken werden nur von einer einzelnen Person verwaltet, aber sie sind immer noch besser als selbst zu bauen. Für große Bibliotheken ist es jedoch wichtig, eine ausgereifte, aktive Community und Dokumentation zu haben, da es unwahrscheinlich ist, dass Sie selbst so einfach Änderungen vornehmen können.
  3. Lizenz ist unerlässlich. Für Ein-Mann-Bibliotheken ist es wahrscheinlich, dass Sie Änderungen an der Bibliothek vornehmen müssen. Daher ist es wichtig, dass die Lizenz dies unter Bedingungen erlaubt, mit denen Sie einverstanden sind.

Bei kleinen Bibliotheken sollten Sie immer davon ausgehen, dass Sie sich trennen müssen und das Projekt bereits abgebrochen wurde. Dies ist normalerweise kein Problem, besonders wenn das Projekt auf Github oder BitBucket gehostet wird, weil sie es dumm machen, das Projekt anderer Leute zu forken. Bei kleinen Bibliotheken können Sie die Wartung des Projekts jederzeit selbst übernehmen, wenn der ursprüngliche Projektbetreuer nicht mehr vorhanden ist oder die Projektrichtung an Orten übernehmen möchte, an denen Sie nicht mehr arbeiten möchten.

Ich mache mir weniger Sorgen um die Projektaktivität, da ausgereifte Bibliotheken, die ihr Gefühl der "Perfektion" erlangt haben, im Allgemeinen nur noch Fehlerbehebungen vornehmen müssen, sodass sich ihre Aktivität verlangsamt. Die Projektaktivität ist nur wichtig, wenn die Bibliothek ein sich aktiv entwickelndes Ziel enthält. Beispielsweise müsste ein Wrapper für externe Services ständig aktualisiert werden, wenn sich der externe Service weiterentwickelt. Daher ist eine aktive Entwicklung unerlässlich, eine Mathematikbibliothek jedoch nicht viel Neuentwicklung, wenn sie alle Funktionen hat, die sie benötigt.

Für größere Bibliotheken wird es schwieriger. Die Übernahme ist viel aufwendiger, zum Glück bewegen sich größere Bibliotheken in der Regel nicht so schnell, da sie in der Regel ausgereifter sind.

Wie @Sam in seiner Antwort sagte, stimme ich zu, dass das Wichtigste bei der Bewertung von Open Source-Bibliotheken darin besteht, wie weit es Ihren Anforderungen entspricht. Sobald alle Lizenzprobleme geklärt sind, ist die Verwendung einer Open-Source-Bibliothek selten ein Fehler, da Sie immer nach Süden gehen können.

Lüge Ryan
quelle
3

Schauen Sie in den Bug-Tracker des Projekts. Wenn Sie viele Tickets sehen, die von vielen verschiedenen Personen eingereicht wurden, und auch Antworten von verschiedenen Personen, dann ist das ein gutes Zeichen. Mehr Fehlertickets == Größere Benutzergemeinschaft == Wahrscheinlicher, dass Sie produktionsbereit sind.

Karl Fogel
quelle
2
Auf diese Weise können Sie auf jeden Fall feststellen, ob ein Projekt in irgendeiner Form genutzt wird. Sie benötigen jedoch mehr Kontext als nur eine Reihe von Fehlertickets, um zu ermitteln, ob das Projekt für ein Produktionssystem zuverlässig genug ist. Wenn zum Beispiel die Mehrheit der Fehlertickets für eine Weile offen war und immer noch nicht behoben ist, möchte ich sie nicht in ein geschäftskritisches System integrieren.
Derek
Eigentlich finde ich es in Ordnung, wenn selbst die meisten Tickets schon länger offen sind und noch nicht geklärt sind. Dies kann eher ein Hinweis auf die Größe und das Engagement der Anwenderbasis als auf irgendetwas an der Software selbst sein. Mehr zu diesem Thema hier: rants.org/2010/01/bugs-users-and-tech-debt .
Karl Fogel
1

Die Nachrichten sind nicht gut, aber das heißt nicht, dass sie falsch sind: Sie wissen es nicht.

Wenn es analoge Implementierungen in der Produktion gäbe, wüsste man, dass dies machbar ist, aber wie Sie sagten, verwenden keine "Hauptakteure" die Projekte.

Wenn Sie sich im eigenen Haus entwickelt hätten, würden Sie wissen, aber wie Sie sagten, haben Sie nicht die Ressourcen.

Es ist vernünftig, es wissen zu wollen, aber ... das tust du nicht.

Ich hoffe, diese Antwort hilft, denn Sie sollten Notfallpläne haben, um die Verbindung zu einer Technologie herzustellen, auf die Sie angewiesen sind, die Sie jedoch nicht kontrollieren ... und zu wissen, dass Sie nicht wissen, ob sie zuverlässig ist, ist ein Schritt in diese Richtung.

wilsonmichaelpatrick
quelle
1

Die Frage muss anders gestellt werden. Was Sie wirklich fragen, ist, ob Sie mit diesem Open-Source-Projekt das Produkt am besten entwickeln können?

Dies betrifft notwendigerweise nicht nur das betreffende Open Source-Projekt, sondern auch Ihre anderen Optionen. Wenn Ihre einzige andere Option darin besteht, alles selbst zu schreiben, ist es besser, das Projekt zu verwenden, wenn Sie den Code so gut verstehen, dass Sie ihn ändern können.

Dann stellt sich natürlich die andere Frage, ob Ihr Projekt überhaupt realisierbar ist. Das heißt, Sie müssen den Aufwand abschätzen, einschließlich des Risikos, die vom Open-Source-Code erhoffte Funktionalität reparieren oder vervollständigen zu müssen. Wenn das Projekt nicht häufig verwendet wird, müssen Sie den Code dafür überprüfen.

Jan Hudec
quelle