2009-07-24 5 views
3

Ich habe ein Open Source-Projekt erstellt, das von Visual Studio ausgeführt wird. Aber es hängt auch von einigen externen Bibliotheken ab, die funktionieren. Diese Bibliotheken sind auch Open Source. Die Frage, die ich frage mich, wenn ich sollteWie sollte ich externe Bibliotheken in ein Open Source-Projekt einbeziehen?

  1. Punkt Benutzer auf diese Bibliotheken und haben sie den Quellcode herunterladen und sie dann an die dll
  2. Punkt Benutzer in das Projekt ein und sie direkt Referenz haben
  3. Fügen Sie die dLL direkt in das Projekt
  4. den Quellcode dieser Bibliotheken Fügen Sie direkt in das Projekt

Welches ist die beste Art und Weise oder Standard-Weg, dies zu tun?

+0

Danke an alle, die geantwortet haben. Grundsätzlich waren die Antworten ziemlich gleich und ich wähle nur den schnellsten Antworter. – sean

Antwort

3

Es gibt Richtlinien, die nicht Open-Source-spezifisch sind, aber ich denke, sie gelten.

Ich schließe immer Binärdateien aller externen Bibliotheken (mit Ausnahme von Standard-Bibliotheken wie System.dll) in die Quellcodeverwaltung ein. Auf diese Weise können Leute, die Quellcode auschecken, sofort das Projekt erstellen. Außerdem kann ich leicht zu einer älteren Version des Projekts wechseln und habe sofort Abhängigkeiten in Versionen, die zum Erstellen dieser Revision verwendet wurden - das ist besonders nützlich, wenn ältere Versionen von Software debuggt werden.

1

Die meisten Projekte, die ich gesehen habe, enthalten einen ThirdParty-Ordner (oder etwas Ähnliches) mit den DLL-Dateien im Projekt, und das Projekt verweist auf diese. Dies stellt sicher, dass alle die gleiche Version haben und die Referenzen nicht geändert werden müssen.

Wenn es in Versionskontrolle ist, macht es auch einfacher zu debuggen, wenn Sie zu einer früheren Version wechseln müssen.

1

(1) ist in Ordnung für Benutzer herunterladen die Quelle für Ihr Projekt, vorausgesetzt, dass die Liste der Abhängigkeiten nicht außer Kontrolle geraten und sie bleiben leicht zu erwerben.

(2) ist im Grunde das gleiche wie (1), solange Sie sich auf eine Binärdatei beziehen, die jemand anderes erstellt. Ich würde die DLLs nicht außerhalb Ihres eigenen Pakets erstellen und verteilen.

(3) Für Binärdistributionen, ich würde das tun, und jede erhaltene Abhängigkeit so meine Software läuft „out of the box“

(4) Tun Sie dies nicht, wenn Sie die anderen Bibliotheken gabeln müssen aus irgendeinem Grund (hoffentlich passiert das nie)

EDIT: Für Ihre eigene Quellcodeverwaltung, tun was auch immer das einfachste ist. Meine Empfehlungen beziehen sich nur auf Ihre Distributionen (Quelle und Binärdatei). Es ist nicht ungewöhnlich, den Quellcode in Bibliotheken von Drittanbietern in Ihrer eigenen Revisionskontrolle zu legen, oder einfach die Header und Binärbibliotheken in die Bibliothek einzufügen - was für Ihre Situation am besten geeignet ist.

0

Ich würde sagen, es hängt von der Größe und Verfügbarkeit und Volatilität der Bibliotheken ab.

Je größer sie sind, desto weniger möchten Sie sie einschließen und desto mehr möchten Sie auf sie zeigen.

Je mehr Probleme Ihre Benutzer haben, um sie zu bekommen, desto mehr möchten Sie sie einschließen. Etwas auf Sourceforge wird wahrscheinlich dort bleiben, aber etwas auf Joes persönlicher Website wird es wahrscheinlich nicht tun.

Wenn sich die Bibliotheken wahrscheinlich ändern, um Probleme zu verursachen, möchten Sie eine Version in Ihr Projekt einfügen.

Wenn sich die Bibliotheken wahrscheinlich ändern, um etwas zu verbessern, ohne die Dinge zu ändern, möchten Sie darauf verweisen.

Zumindest sollten Sie die DLLs bereitstellen, sofern sie nicht zu groß sind, und sie mit der Version markieren.

Überprüfen Sie auch die Lizenzen. Insbesondere unter einer Copyleft-Lizenz wie der GPL besteht die Verpflichtung, dafür zu sorgen, dass die Quelle für alles selbst verfügbar ist.

+0

was meinst du mit markieren sie mit der version? Geben Sie die Version an, die sie verwenden sollen? – sean

+0

Geben Sie die verwendete Version trotzdem an. Auf diese Weise ist es ziemlich sicher, dass sie dieselbe Software erstellen, die Sie bereitstellen. –

0

Sie können es so einfach oder komplex wie Sie möchten. Als Benutzer bevorzuge ich, dass alle Bibliotheken in herunterladbaren Distributionen des Produkts enthalten sind. Das macht es so einfach wie möglich für Leute, die Ihr Projekt nur mit minimalem Aufwand nutzen wollen. Das Herunterladen externer Bibliotheken kann für einen Benutzer (insbesondere in der .Net-Welt) wirklich schwierig sein, und ihnen eine bekannte gute Menge von Abhängigkeiten zu geben, kann eine echte Hilfe sein.

0

Sie sollten ihnen mindestens zwei Möglichkeiten geben:

  • eine binären herunterladen, alle ausführbaren Dateien und Bibliotheken (keine Quelle)
  • vollständige Quelle für Ihre eigene Code (mo externen Bibliothek Quelle)

Sie sollten die Quelle für die externen Bibliotheken nicht bereitstellen, außer Sie haben sie geändert, in diesem Fall MÜSSEN Sie dies tun. Das Bereitstellen der libararen Quelle multipliziert die verschiedenen Orte, von denen Sie die Quelle beziehen können, und führt zu Verwirrung darüber, welche Version Sie erhalten haben.

Sie sollten natürlich Links zu den Homepages der Bibliothek bereitstellen. Wenn Sie unter der GPL vertreiben, müssen Sie auch bereit sein, die Bibliotheksquelle direkt selbst zu liefern.

Verwandte Themen