Wie kann ich am besten mit der Versionskontrolle in einem OpenSource-Projekt beginnen?


10

Es wurde vorgeschlagen, mein Projekt aufgrund seiner Größe und meiner mangelnden Fähigkeiten als Open Source-Version zu verwenden. Daher habe ich Google Code überprüft und mit der Erstellung eines Projekts begonnen. Jetzt werde ich gefragt, ob das Projekt Git, Mercurial oder Subversion enthalten soll Code-Hosting.

Ich weiß nicht einmal, was Code-Hosting ist, und eine Suche hat mich nur mehr mit den Debatten zwischen all diesen Dingen verwechselt. Dies wird noch schlimmer, da Google Code mich fragt, welche Art von Lizenz ich möchte.

Ich glaube, ich verstehe nicht ganz, was Open Source wirklich bedeutet. Kann jemand so ziemlich einen schnellen Spickzettel für Laien erstellen, was das alles ist? Sehr geschätzt.

Bearbeiten Es gab viele großartige Antworten auf diese drei Versionen des Code-Hostings, aber ich glaube, ich konnte die eigentliche Frage nicht kommunizieren: Grundsätzlich habe ich keine Ahnung, wie dieses Open-Source-Zeug funktioniert, warum sollte ich den Code irgendwo so hosten ? Und würde das bedeuten, dass ich die Site von meinem aktuellen Hosting entfernen muss, oder ist dies eine ganz andere Art von Hosting? Was passiert, wenn ich meine Website Open Source mache, welche Rechte ich habe, welche Rechte ich verschenke. Wie funktioniert es, kommen die Leute einfach und werfen mir kostenlos Code zu? Vielleicht sind das dumme Fragen, und wenn das der Fall ist, dann brauche ich wohl dumme Antworten. Ich habe ernsthaft keine Ahnung, was Open Source ist, außer dem Konzept, Code zu teilen ...



Das war eine großartige Diashow. Ich denke, es hat mir geholfen, die Grundlagen zu verstehen, danke für das Teilen. Jetzt ist es das detailliertere Zeug, das mich ahnungslos macht.

1
Dies sind wirklich 2 Fragen, und beide sind wahrscheinlich Duplikate. stackoverflow.com/questions/2303136/… und stackoverflow.com/questions/3859/…
Sylvanaar

2
"Mangel an Fähigkeiten" klingt nach einem schrecklichen Grund, etwas Open Source zu machen. Wenn Sie eine großartige Idee haben, aber keine technischen Fähigkeiten haben, dann vielleicht. Ich würde nicht auf Open Source umsteigen, bis ich einen technisch versierten Partner gefunden habe, der bereit ist, einen ersten Teil des Codes zu erstellen, und der gerne auf Open Source umsteigen möchte.
Tripleee

Tripleee, könnten Sie ein Netzwerk oder etwas Ähnliches vorschlagen, in dem ich möglicherweise jemanden finden könnte, mit dem ich zusammenarbeiten kann?
Nathan

Antworten:


7

Warum sollte ich den Code irgendwo so hosten?

Ein wichtiger Punkt bei der Entwicklung von Open Source-Software ist die gemeinsame Nutzung des Quellcodes. Es gibt verschiedene Möglichkeiten, dies zu tun, z. B. Tar / Zip-Dateien auf einem Web- oder FTP-Server abzulegen. Dienste wie Google Code (oder sourceforge.net, gitorious.org, bitbucket.org und viele andere) machen es überflüssig, zu diesem Zweck eigene Server zu betreiben.

Und würde das bedeuten, dass ich die Site von meinem aktuellen Hosting entfernen muss, oder ist dies eine ganz andere Art von Hosting?

Diese Dienste sind keine universellen Webhosts, sondern führen sehr spezialisierte Dienste aus. Sie sind nicht als Homepage eines Produkts gedacht, sondern eher als Entwickler-Dashboard.

Mit Google Code erhalten Sie

  • ein Wiki
  • ein Bugtracker
  • regulärer Dateidownload-Speicherplatz
  • ein Versionskontrollserver

Natürlich können Sie diese Software auf einem normalen Webserver einrichten (die Versionskontrolle mag schwierig sein, aber das hängt zu sehr von Details ab), aber der Hauptvorteil der Verwendung eines Entwicklungshosters besteht darin, dass Sie sich nicht darum kümmern müssen dieser Systeme für Ihre eigenen. Der Hauptnachteil ist, dass Sie keine Kontrolle darüber haben, welche Software auf dem Server verwendet wird. Sie müssen mit dem leben, was auf diesem Host verfügbar ist. Sie müssen auch überlegen, was passiert, wenn der Dienst aus dem Geschäft gerät (ok, Google schlägt nie fehl) und wenn Sie die Daten vom aktuellen Host auf einen anderen oder Ihren eigenen Server übertragen können (denken Sie an Backups).

Was passiert, wenn ich meine Site Open Source mache, welche Rechte habe ich?

Dies ist eine schwierige Frage, da sie vom Recht des Landes abhängt, in dem Sie leben.

Welche Rechte gebe ich weg?

Dies hängt von der Lizenz ab, die Sie für das Produkt vergeben. Es kann von proprietärem Open Source (denken Sie an PGP) ausgehen, wo der Benutzer im Grunde nichts mit dem Code anfangen kann, am anderen Ende der Skala ist gemeinfrei, wo jeder tun kann, was er will.

Wie funktioniert es, kommen die Leute einfach und werfen mir kostenlos Code zu?

Dies ist sehr unwahrscheinlich, da Ihr Produkt genügend Popularität benötigt, um andere Entwickler anzulocken.

[...] und jetzt werde ich gefragt, ob das Projekt Git-, Mercurial- oder Subversion-Code-Hosting enthalten soll.

Dies sind drei verschiedene Versionskontrollsysteme, bei denen Subversion zentralisiert ist, während Git und Mercurial verteilt sind.

Es gibt religiöse Kriege, über die man Gebrauch machen kann, aber der Hauptpunkt ist, einen zu benutzen. Weitere Informationen finden Sie unter http://martinfowler.com/bliki/VersionControlTools.html .

Wann wählen Sie Subversion:

  • Sie haben Binärdateien, die nicht einfach zusammengeführt werden können, und benötigen den Workflow Sperren-> Ändern-> Festschreiben-> Entsperren, den die Subversion unterstützt¹
  • Sie müssen nur einen Teil der Verzeichnisstruktur auschecken.

¹ Es gibt eine Sperrenerweiterung für Quecksilber, aber ich habe keine Erfahrung damit und kann nicht sagen, ob sie verwendbar ist.

Wenn Sie die früheren Funktionen nicht benötigen, ist es besser, Mercurial oder Git zu verwenden. Beide haben gegenüber Subversion folgende Vorteile:

  • schnell (und mit schnell meine ich wirklich schnell )
  • einfaches Verzweigen und Zusammenführen (dies wurde besser, da Subversion> = 1,5 ist, aber es ist nicht dasselbe)
  • Das Festschreiben und Veröffentlichen ist entkoppelt, sodass Sie ungestört an einem Feature arbeiten und das Werk veröffentlichen können, wenn es fertig ist
  • Sie verfolgen den Status des gesamten Produktverzeichnisses
  • Sie erhalten eine vollständige Kopie des gesamten Versionsverlaufs, wenn Sie ein Remote-Repository klonen
  • kryptografisch gesicherte Revisionsnummern, was bedeutet, dass selbst wenn jemand den Server einbricht, er keinen Code einrichten kann, ohne den Revisionsverlauf zu ändern

    • Da jedoch niemand diese Revisionen überprüft, ist diese Funktion praktisch nicht wirksam

9

Code-Hosting ist genau das - irgendwo, wo Sie Ihren Code hosten (oder aufbewahren) können.

Git, Mercurial und Subversion sind alle Tools zur Quellcodeverwaltung, mit denen Sie Ihren Codeverlauf verwalten. Git und Mercurial sind verteilte Systeme, während Subversion ein traditionelleres serverbasiertes Setup ist.

Schauen Sie sich Wikipedia oder ähnliches an und finden Sie heraus, was Sie am meisten anspricht. Persönlich verwenden wir Mercurial und es funktioniert sehr gut für uns.


6

Joel Spolsky hat ein großartiges Tutorial über Hg (Mercurial) geschrieben, und ich glaube, der Einführungsabschnitt behandelt Subversion, einschließlich der Gründe, warum Sie auf Mercurial upgraden. Lesen Sie das durch, es hat mir wirklich geholfen, viel über Mercurial und DVCS im Allgemeinen zu verstehen.

Oh, und wenn Sie bereit sind zu hosten, können Sie Google Code, BitBucket , Github (mit Hilfe dieser hervorragenden Erweiterung ) oder andere verwenden.


Mercurial ist ein ausgezeichnetes System, das mich bereits nach wenigen Minuten von der Subversion überzeugt hat.
Jim in Texas

3

Ich verwende Git, das ich aufgrund der verteilten Steuerung einfacher zu verwalten finde. Hg ist auch für diesen speziellen Zweck gut, aber ich kann Ihnen keinen Rat geben, da ich es nie benutzt habe. SVN ist ein zentrales System und daher weniger praktisch, könnte aber etwas einfacher sein.

Open Source bedeutet im Grunde, dass Sie jedem die Möglichkeit geben, Ihre Arbeit zu nutzen und darauf aufzubauen. Sie können die Grenzen dieser Verwendung festlegen: GPL bedeutet, dass der Benutzer seine hinzugefügte Arbeit Open Source machen muss, LGPL bedeutet, dass er dies beispielsweise nicht tut.


2

Subversion wäre die einfachste Option, da es sich um ein VCS handelt. Git und Mercurial sind DVCS-Systeme. Sie sind moderner und leistungsfähiger, aber schwieriger zu verstehen. Die Verwendung eines Frontends wie TortoiseSVN oder TortoiseHG (für Mercurial aka HG) hilft ebenfalls sehr.

Wenn Ihre Software ein eigenständiges Programm ist, können Sie die GPL verwenden oder sie wirklich mit einer BSD-Lizenz öffnen. Wenn es sich bei Ihrem Projekt um eine Bibliothek handelt, die von einer anderen Person mit LGPL oder erneut BSD verknüpft wird. Verwenden Sie jedoch keine GPL.

[bearbeiten]

Was Ihre ursprüngliche Motivation für Open Sourcing der Software angeht: Leider bedeutet das Erstellen von Open Source-Software nicht, dass Sie einen Zustrom talentierter freier Arbeitskräfte erhalten. Es gibt Hunderttausende von Open Source-Projekten. Nur ein kleiner Prozentsatz von ihnen hat aktive Mitglieder. Die Gründe, die diese Projekte erfolgreich machen oder nicht, sind so vielfältig wie die Gründe, warum Unternehmen erfolgreich sind und scheitern. Wenn Sie ein guter Programmierer werden und gute Software produzieren möchten, müssen Sie viel Zeit damit verbringen, auf Websites wie StackOverflow zu lernen, Code zu schreiben und mit anderen Menschen zu kommunizieren.


1
Warum sagst du, dass svn am einfachsten ist? Bitte begründen Sie diese Aussage.

1
@Richard: Ich denke, er meint, es ist ein bisschen einfacher einzurichten und für den grundlegenden Gebrauch zu verwenden, zumindest stimme ich dieser Annahme zu. Ich bin nicht einverstanden mit der Idee, dass Ihre Bibliothek keine GPL verwenden sollte, es ist wirklich eine politische Haltung.
Kheldar

Verwenden Sie die GPL für eine Bibliothek, wenn Sie deren Verwendung bestimmte Einschränkungen auferlegen möchten. Verwenden Sie LGPL, wenn Sie weniger Einschränkungen auferlegen möchten.
Keith Thompson

0

Es scheint mir , dass die meisten Menschen hier die beantworten wie , niemand die wirklich beantwortet hat , warum in Ihrer Frage.

Eines der ersten Open-Source-Projekte, das ich erlebt habe, war das fabelhafte Fractint- Projekt, das von der Stone Soup Group entwickelt wurde , die von der alten Steinsuppen-Volksgeschichte inspiriert war .

Für mich verkörpert dies den Geist von Open Source besser als jeder Stallman-Rant oder sogar das ursprüngliche GNU-Manifest . Es ist ein Beweis für die Stärke dieser Gemeinschaft, dass Fractint noch 23 Jahre nach dem Anzünden des Feuers unter diesem speziellen Kochtopf entwickelt wird .


0

Open Source bedeutet, dass jeder Ihren Code lesen, kopieren, ändern und verteilen kann. Sie sollten die Auswirkungen davon genau verstehen, bevor Sie fortfahren. Vielleicht sollten Sie ein Buch lesen oder zumindest die Wikipedia-Artikel zum Thema und / oder http://opensource.org/ durchsuchen, bis Sie das Gefühl haben, das Konzept zu verstehen.

(Das O'Reilly-Buch Open Sources http://oreilly.com/openbook/opensources/book/index.html ist hilfreich, aber möglicherweise nicht genau das, wonach Sie suchen.)

Welches Quellcode-Kontrollsystem verwendet werden soll, ist völlig zweitrangig. Sie können Ihren Code kopieren / auf einer Webseite einfügen und fertig sein. Trotzdem ist die Versionskontrolle wichtig und ein gutes Mittel, um die Messlatte für Entwickler zu senken. Alle von Google Code angebotenen Optionen sind in Ordnung. Entscheiden Sie sich für die Frage, die Ihnen gefällt, oder verschieben Sie die Frage, bis Sie Ihren Mitwirkenden fragen können, welche sie verwenden möchten.


0

Wenn Sie Ihren Code oder Ihr Projekt als Open Source-Version erstellen, kann jeder ihn nach seinen Wünschen ändern. Dies hängt davon ab, welche Art von Lizenz Sie verwenden. Open Source bedeutet jedoch im Allgemeinen, dass der Quellcode jedem zur Verfügung steht, um ihn herunterzuladen, zu ändern und nach Belieben zu verwenden.

Auf jeden Fall muss dieser Code für andere Personen erreichbar sein, um ihn zu erhalten.

Der beste Weg, Ihren Code in ein öffentliches Online-Repository wie GitHub zu bringen, ist der beste Weg, dies zu tun. Erstens ist Ihr Code jetzt für die Öffentlichkeit zugänglich. Da solche Dienste auch Versionskontrolle bieten, ist Ihr Code projektorganisiert. Sie können Änderungen verfolgen, die Sie und andere Personen vornehmen. Da Sie damit das Projekt auch in andere Projekte verzweigen (trennen) können, können Sie alle unterschiedlichen Versionen verfolgen, die andere Personen von Ihrem Code erstellt haben.

Dies stellt auch sicher, dass Ihr Code an einem sicheren Ort gespeichert wird. Sie müssen sich keine Sorgen machen, dass er beispielsweise durch eine fehlerhafte Festplatte auf Ihrem PC verloren geht. Und wenn Sie daran arbeiten möchten, können Sie von jedem Ort aus arbeiten, da Ihr Code online ist und Sie ihn überall finden können.

Wenn Sie dann entscheiden, dass es Zeit ist, Ihren Code der Welt zu präsentieren, müssen Sie nur den Link an Ihr Online-Projekt-Repository senden. Es ist eine Technologie, an die sich die Leute gewöhnen. Da jeder sie kennt, ist es einfacher zu verstehen, wie man sie herunterlädt, Nachrichten veröffentlicht, verschiedene Versionen erstellt usw.

Es ist wie ein üblicher Standard, Dinge zu tun, übliche Praxis.

Einige Links, die Sie möglicherweise nützlich finden, um Open Source näher zu erläutern:


-6

Über das Versionskontrollsystem würde ich sagen, dass Sie sich an die am häufigsten verwendete und neuere Alternative halten sollten: Das heißt: "Git". Mercurial ist weniger beliebt und SVN ist alt, langsam und zentralisiert. Mit GIT profitieren Sie von einem modernen und beliebten Versionskontrollsystem. Es gibt praktisch nichts zu verlieren.

Quellen (in Bezug auf die Popularität von DVCS):

/programming/tagged/git ~ 10k Fragen /programming/tagged/mercurial ~ 3k Fragen

http://www.googlefight.com/index.php?lang=de_DE&word1=git&word2=mercurial

11700000 Ergebnisse vs.

1580000 Ergebnisse

In Bezug auf die Lizenz: Vielleicht sollten Sie sich die gängigsten ansehen: GLP, MIT, LGPL, BSD und diejenige auswählen, die besser zu Ihrem Projekt passt.


7
Mercurial ist nicht proprietär ... es ist Open Source genau wie Git!
Christian Specht

4
Fanboy antwortet mit teilweise falschen Argumenten.
Oben Sonne

1
"am häufigsten verwendet" - Bitte geben Sie einen Verweis auf Ihre Quelle dieser Informationen an.
Sylvanaar

Tut mir leid, Leute. Es ist nur meine Wahrnehmung der Dinge: Ich denke, Git wird mehr verwendet als Mercurial, und ich weiß, dass SVN alt, langsam und zentralisiert ist. Ich frage mich, ob Ihre Kommentare weniger Fanboy-Kommentare sind als meine sogenannten Fanboy-Antwort. Komm schon, Git Hub benutzt Git, der Linux-Kernel benutzt Git, jedes Projekt in meiner Abteilung benutzt Git ...
Pedro Rolo

2
Vielleicht zeigt die Fülle an Fragen zu Git auch, dass die Verwendung schwieriger ist? Einige Leute haben ähnliche Daten verwendet, um zu untersuchen, welche Webentwicklungs-Frameworks am „beliebtesten“ waren, wenn derselbe Punkt angesprochen wurde (Kommentar zu den Ungenauigkeiten).
Tim Post
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.