Warum "Fork me on GitHub"? [geschlossen]

50

Ich verstehe, wie GitHub funktioniert, aber eine Sache, die mich verwirrt hat, ist, warum fast jedes OSS- Projekt in letzter Zeit einen "Fork me on GitHub" -Link auf seiner Homepage hat. Zum Beispiel,

http://jqtjs.com/ , http://www.daviddurman.com/flexi-color-picker/ und andere.

Warum ist das so üblich? Ist es so, dass sie eine Codeüberprüfung wünschen / benötigen, um nach Sicherheits- / Leistungsverbesserungen zu suchen, von denen sie möglicherweise nicht wissen, wie sie zu tun sind?

Soll das zeigen, dass es sich um ein Gemeinschaftsprojekt handelt - Sie können gerne Verbesserungen hinzufügen?

Arbeiten sie für GitHub oder möchten sie für ihren Service werben? Seltsamerweise glaube ich nicht, dass ich in letzter Zeit ein "Fork Project on Bitbucket " -Logo gesehen habe.

Meine erste Reaktion auf dieses Logo war, dass das Projekt wahrscheinlich geändert (gegabelt) werden muss, um es in etwas Nützliches zu integrieren. Aber ich denke nicht, dass das die Absicht ist.

NoBugs
quelle
23
Da es einfacher ist als zu schreiben, "wenn Sie zu diesem Projekt beitragen oder die Quelle überprüfen möchten, schauen Sie in unser Repository bei github". ;-)
nietonfir
1
Ich bin ein bisschen erstaunt, dass niemand das erwähnt hat ... Was ist das, ein Wortspiel? Anspielung? Aber dieser spezielle Wortlaut würde mit bitbucket nicht funktionieren. Ihre Website vermittelt die Atmosphäre, professioneller zu sein als Github. Denn so habe ich Ihre Frage in der ersten Lesung verstanden: "Warum hat bitbucket diese nicht?"
Izkata
2
Es handelt sich um soziale Widgets , ähnlich wie die, die mit dem Link "Teilen" in einer SE-Frage / Antwort angezeigt werden: Sie erhalten Widgets für Google+, Facebook und Twitter. Sie sind sofort einsatzbereit und daher einfach zu integrieren. Ich denke, dass es für Bitbucket so etwas nicht gibt, also gibt es nichts zu bemerken: Wenn ein Projekt ein eigenes, selbstgebrautes „Fork Me“ -Widget hat, sehen sie vermutlich nicht wie ein anderes aus.
Luc Danton
Ich stimme dafür, diese Frage als "Off-Topic" zu schließen, da es um Open-Source-Softwarekultur geht. Derzeit sind Fragen dazu, wie Communities zusammenarbeiten, um Open Source-Projekte zu produzieren, zu vertreiben, zu vermarkten und manchmal zu monetarisieren, auf der Open Source Stack Exchange-Website zu finden .
Thomas Owens

Antworten:

20

Abgesehen von der Foster Collaboration-Seite des Problems wird es aus geschäftlicher Sicht den Datenverkehr, die Nutzerbasis und die Marktposition von GitHub verbessern und stärken. Es ist also auch eine gewisse Geschäftsstrategie damit verbunden.

Persönlich stört mich das nicht, weil GitHub der Open Source Community einen wertvollen Service bietet.

AsymLabs
quelle
23
Warum ist deine Antwort aus der Sicht von GitHub? Die Leute platzieren dieses Logo nicht auf ihren Websites, um den Datenverkehr, die Nutzerbasis und die Marktposition von GitHub zu stärken. Das mag ein Nebeneffekt sein, aber das ist nicht der Zweck . Wie ist das eine GitHub "Geschäftsstrategie"? GitHub ist nicht einmal dafür verantwortlich, dieses Logo auf OSS-Sites zu platzieren (OSS-Site-Betreuer sind es).
Ben Lee
3
@Ben Lee Dein Kommentar ist gut aufgenommen. Aber ich würde behaupten, dass es nicht einen Zweck gibt, sondern viele . Ich habe die Ansicht, dass ein Ziel die Förderung der Zusammenarbeit ist, nicht verworfen, nur dass wir auch anerkennen müssen, dass GitHub auch ein Unternehmen ist (man könnte behaupten, dass es der Marktführer in dieser Branche ist) und dass ein weiteres Ziel von Fork Me ist GitHub ist ein strategischer Vorteil. Zugegeben, dies ist freiwillig, aber dennoch wirksam. Es macht GitHub im Internet sichtbarer, ein wichtiger Bestandteil jeder Internet-Geschäftsstrategie.
AsymLabs
2
@BenLee Wie Dmitri bemerkt hat Github diese Seite: github.com/blog/273-github-ribbons Hat Bitbucket oder irgendein anderer Dienst etwas Ähnliches?
NoBugs
75

Soll das zeigen, dass es sich um ein Gemeinschaftsprojekt handelt - Sie können gerne Verbesserungen hinzufügen?

Ja: Sie haben nicht das Recht, ein Commit direkt in ihrem Repo zu pushen.
Sie haben jedoch die Möglichkeit, ihr Repo zu teilen , was es zu Ihrem Repo macht, und von dort aus ein Push-Commit durchzuführen und Pull-Requests vorzubereiten .

Gabel

VonC
quelle
2
Ich weiß, dass du es schaffen kannst, Github zu gabeln und dann die Anfrage zu ziehen. Meine Frage ist, warum sie "mich auf Github gabeln" sagen.
NoBugs
6
@NoBugs, um sicherzustellen, dass Sie wissen, wie Sie zu ihrem Projekt beitragen können.
Vom
19
Ich denke, der Fokus liegt hier mehr auf dem "Fork Me" als auf Github. Es liegt wahrscheinlich einfach daran, dass Github die beliebteste Site dieser Art ist. Ich glaube nicht, dass irgendjemand ein großes Problem hat, wenn Sie sich auf Bitbucket setzen. Gute Frage trotzdem.
JensG
Ich glaube nicht, dass irgendjemand ein großes Problem hat, wenn Sie auf gitorious.org gehen . Es ist nur so, dass fast niemand es tut ...
Michael Paulukonis
37

Das Abzeichen "Fork me on Github" soll anzeigen, dass es sich um das Projekt handelt, für das Sie das Recht haben, einen Beitrag zum Projekt zu leisten oder es als Ausgangspunkt für Ihr eigenes Projekt zu verwenden.

Es zeigt ein bisschen, dass "es ein Gemeinschaftsprojekt ist und dass Sie gerne Verbesserungen hinzufügen können."

Hier können Sie mit dem Code herumspielen oder ein Spin-Off desselben Projekts erstellen, ohne die ursprüngliche Quelle zu beeinträchtigen.

https://help.github.com/articles/fork-a-repo

Das gleiche Prinzip gilt für alle anderen Git-Hosts.

Die wichtigsten Punkte (unter vielen anderen), um das Recht zu geben, ein Projekt zu forken, sind:

  • Förderung der Zusammenarbeit - indem Menschen bei der Verbesserung des Projekts zusammenarbeiten können.
  • Erweitern Sie Ihr Wissen, indem Sie Menschen erlauben, Ihren Code zu studieren.

Einige der Projekte, mit denen Sie möglicherweise zusammentreffen, werden möglicherweise von Github-Mitarbeitern für ihre eigenen privaten Bedürfnisse durchgeführt. Sie wollen Github nicht fördern. Projekte von github finden Sie hier: https://github.com/github

Warum Sie keine Abzeichen von anderen Hosts sehen, liegt daran, dass Github die beliebteste Plattform für Git-Hosting und Zusammenarbeit ist.

Brian Kinyua
quelle
Genau. DVCS-Workflows bedeuten, dass ich meine Ergebnisse veröffentlichen kann, ohne sie anderen zuzufügen. Forking bedeutet, nicht um Erlaubnis bitten zu müssen, um etwas zu teilen, das Sie teilen möchten. Wenn das Internet Ihre Änderungen mag, werden sie diese absorbieren.
Warren P
15

Stellen Sie sich vor, Sie verwenden Ihren bevorzugten Texteditor, und nach einiger Zeit werden Sie feststellen, dass Sie es wirklich lieben würden, eine Funktion zu implementieren (wie die nicht blockierende Option "Datei speichern").

Nachdem Sie gedacht haben, dass Sie zum elften Mal selbst eines schreiben möchten. Nachdem Sie die Github-Seite dieses Projekts gefunden haben, haben Sie zwei Möglichkeiten:

  1. Laden Sie den Quellcode herunter, ändern Sie ihn und bewahren Sie ihn für sich auf.
  2. Gabeln Sie das Projekt auf einem Github und arbeiten Sie an Ihrer Gabel.

Wenn Sie sich für die zweite Option entschieden haben, nachdem Sie Ihr Feature gut geschrieben und getestet haben, könnten Sie eine Pull-Anfrage vorbereiten, und dann würde das gesamte Projekt von Ihnen profitieren.

Wenn Sie jedoch den ersten Weg gewählt haben, ist es sehr wahrscheinlich , dass Sie nur über Ihre Änderung und niemand vergessen , außer Sie davon profitieren wird (ja, können Sie den Code manuell teilen, aber einige andere Codierer könnte leicht vergessen. Github Verwendung zwingt Sie mehr zu bekommen sozialisiert mit den anderen Arbeiten).

Wenn Sie sagen, dass der Eigentümer eines Github-Projekts mich als Fork me bezeichnet, möchten Sie nur sicherstellen, dass Sie Fork on githubstattdessen den Code herunterladen und in Ihrem Home-Verzeichnis veröffentlichen.

Nemanja Boric
quelle
7

Es ist nur da, um zu zeigen, dass dies ein Open Source-Projekt ist, und Sie können es, wenn Sie wollen, aus welchem ​​Grund auch immer. Schauen Sie sich auch diesen Blog-Beitrag auf GitHub an: https://github.com/blog/273-github-ribbons

Update: Ich persönlich füge diese GitHub-Bänder hinzu, damit die Leute mich auf GitHub finden und meine Projekte starten können;)

dmitry
quelle
6

Es bedeutet, dass sie auf Github sind, wo das Forken billig ist, und sie möchten Beiträge ermutigen, um ihre Software und Community zu verbessern.

Florian Margaine
quelle
5

Github ist bemüht, seine Nutzerbasis zu erweitern, um nicht nur das Hosting von Quellcode, sondern auch die Zusammenarbeit zu ermöglichen. und so schieben sie die Gabel und senden eine Pull-Request- Methode. Das Erstellen von Patches und das Versenden per E-Mail wären für die meisten Menschen, außer für Programmierer und ähnliche, nicht attraktiv. Push-Berechtigungen sind hier nicht wirklich wichtig, da die meisten Git- (oder Quecksilber-, Darcs- oder was auch immer) Benutzer mit beträchtlichen Kenntnissen über das Tool und den Entwicklungsworkflow in der Lage wären, eine E-Mail mit einem angehängten Patch zu senden.

Bei Github geht es mehr um soziale Netzwerke als um das Hosten von Code: Ihr Profil, Ihre Repos und Ihre Änderungen kennzeichnen Ihre Identität als Softwareentwickler, genau wie Ihre Tweets und '+ 1'. Alle diese Bänder, Knöpfe und dergleichen werden als Mittel zur Selbstakquise verwendet, als Pfad zum Profil der Person, der das Projekt gehört. Heutzutage ist ein anständiges Github-Profil das erste, was von einem Entwickler erwartet wird. Auch wenn ich Quecksilber für irgendetwas benutze, drücke ich mich aus diesen Gründen über hg-git zu Github.

Letztendlich unterscheidet sich das "Fork me on Github" -Band nur geringfügig vom "Tweet this Article" oder dem "Share this Thing on G +" -Button. (Auch ein Fork eines Repositorys auf Ihrer Repos-Liste bedeutet "Ich bin ein Benutzer dieses Dings". Es gibt Tausende von Linux-Forks auf Github, obwohl Linus Torvalds keine Pull-Anfragen akzeptiert.)


quelle
2

Es ist eine andere Art zu sagen, "Patches sind willkommen".

Anstatt Wünsche und Funktionsanforderungen zu senden, können Benutzer Pull-Anforderungen senden, bei denen der ursprüngliche Autor die Pull-Anforderung überprüft, validiert und zusammenführt.

Historisch gesehen ist Forking eine feindselige Aktion einer Gruppe, die im Widerspruch zur Verwaltung des ursprünglichen Projekts steht, z. B. das OpenOffice von Sun, das verwendet wird, um schnelles C / C ++ SVG-Plugin abzulehnen, weil es aus politischen Gründen sein eigenes langsam defektes Java-basiertes Plugin bevorzugt.

In den meisten Fällen sind Gabeln schlecht und werden von Neidern oder Leuten aus egoistischen Unternehmen getragen, die Pläne haben, die nicht mit der ursprünglichen Community geteilt werden und nicht mit dieser übereinstimmen (z. B. Canonical ). Ein Beispiel hierfür ist libav / avconv In diesen Fällen hat die ursprüngliche Community eine höhere Qualität und Sicherheit und sie begrüßen Patches, die auf Community-Pläne abgestimmt sind.

Dan Walsh bemerkte die alte Definition von Gabel

Ich bin seit langer Zeit in Open Source und meine Definition einer "Gabel" könnte veraltet sein. Ich stelle mir eine "Abzweigung" als eine feindselige Aktion vor, die von einer Gruppe unternommen wird, um andere dazu zu bringen, ihre Version eines vorgelagerten Projekts zu verwenden und dazu beizutragen, die "ursprüngliche" Version zu ignorieren. Zum Beispiel, LibreOffice hat sich von OpenOffice verabschiedet oder Xorg hat sich von Xfree86 verabschiedet.

Dann verglich er das mit Githubs Gabel

Heutzutage hat GitHub die Bedeutung geändert. Wenn auf GitHub oder einer ähnlichen Plattform ein Software-Repository vorhanden ist, muss jeder, der einen Beitrag leisten möchte, auf die Schaltfläche "Fork" klicken und mit dem Erstellen seiner Patches beginnen. Zum jetzigen Zeitpunkt hat Docker auf GitHub 9.860 Gabeln, einschließlich unserer. Nach dieser Definition sind jedoch alle von Distributionen bereitgestellten Pakete, die Patches enthalten, Forks. Red Hat liefert den Linux-Kernel aus, und ich habe nicht gehört, dass dies als Gabel bezeichnet wird. Aber es würde als "Fork" betrachtet, wenn Sie ein Upstream-Projekt in Betracht ziehen, das mit Patches und Fork ausgeliefert wird.

Muayyad Alsadi
quelle
1

Alle Antworten, die besagen, dass dies eine Zusammenarbeit ist, werfen die Frage auf: Warum nicht " Clone me on GitHib" oder "Download .zip from GitHub" sagen ?

Auf GitHub sehen Sie die Anzahl der Gabeln. Aber meines Wissens nicht die Anzahl der Klone oder Zip-Downloads.

Ich würde sagen, dies dient zum einen der Förderung der Zusammenarbeit, zum anderen dem Erhalt von Feedback und der Bestätigung, dass Benutzer Ihren Code verwenden.

PS: Ich bin ziemlich neu bei GitHub. Wenn dies völlig falsch ist, lassen Sie es mich bitte wissen.

user949300
quelle
Ist es nicht viel einfacher zu sagen: "So funktioniert die verteilte Versionskontrolle durch Pull-Anfragen, was natürlich erfordert, dass ich zuerst dein Repo übergebe, dann an meine Gabel übergebe und dann eine Pull-Anfrage ausstelle, wenn ich etwas teile, das es wert ist mit dem ursprünglichen Projekt "
Warren P
1
Ich muss zugeben, dass ich wirklich keinen Blödmann "verstehe". Warum nicht einfach die ZIP-Datei klonen oder abrufen und, wenn ich Änderungen vornehme, das gewünschte VCS einrichten? In den seltenen Fällen, in denen ich nützliche Änderungen an den Vorteilen für alle vornehme, kann ich auf E-Mails zurückgreifen oder dann die Abzweigung vornehmen.
user949300
Diese Antwort ist widersprüchlich. Sie schlagen zu Recht vor, dass sie versuchen, die Zusammenarbeit zu fördern. Der Sinn eines solchen Links besteht nicht darin, den Leuten einen Platz zum Herunterladen Ihres Projekts zu geben, sondern sie in die Entwicklung des Projekts einzubeziehen. Sie könnten eine Zip herunterladen oder klonen, wenn sie nur eine Kopie für sich selbst haben möchten, aber wenn ihre Kopie einen Pfad haben soll, der dazu beiträgt, zum vorgelagerten Projekt zurückzukehren von.
Caleb
@ user949300 kannst du doch einfach benutzen git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.gitund dann git format-patch masterper Email oder ähnliches
verschicken
0

Wenn du auf Github gabelst, klingt es wirklich einfach zu sagen, dass du mir auf Twitter folgst. Ich bringe ein wenig Sozialisation in die Welt der Entwicklung aus meiner eigenen Perspektive und mache deutlich, dass es Open Source ist und für Modifikationen zur Verfügung steht Projekt-Website

Joseph Rex
quelle
Äh. Nein, dafür gibt es 'star' und 'watch' für Repos sowie 'follow' für User. Das Ziel von Forks ist es, eine bestimmte Art von Aktion zu fördern - Beiträge vorab zu senden - und nicht nur sozial zu machen.
Caleb
0

Am besten nehmen Sie einfach die einfachste Antwort: Sie möchten, dass Sie wissen, dass der Code auf GitHub frei verfügbar ist. Ich denke, Ihre Hypothesen sind etwas überlegt.

ashgromnies
quelle
Dies ist die einfachste Antwort, die tatsächlich Sinn macht.
Woland