Gabel (Softwareentwicklung)

Im Softwareentwicklung, a Projektgabel passiert, wenn Entwickler eine Kopie von nehmen Quellcode von einem Softwarepaket und starten Sie die unabhängige Entwicklung damit und erstellen Sie eine eigenständige und separate Software. Der Begriff impliziert oft nicht nur a Entwicklungszweig, aber auch eine Trennung in der Entwicklergemeinschaft; Als solche ist es eine Form von Schisma.[1] Die Gründe für die Gabelung sind unterschiedliche Benutzerpräferenzen und stagnierte oder abgebrochene Entwicklung der ursprünglichen Software.
Kostenlose und Open-Source-Software ist das, was per Definition ohne vorherige Erlaubnis aus dem ursprünglichen Entwicklungsteam und ohne Verletzung ausgestattet werden kann Urheberrechte © Gesetz. Lizenzierte Gabeln für proprietäre Software (jedochz.B. Unix) auch passieren.
Etymologie
Das Wort "Gabel" wurde verwendet, um "bereits im 14. Jahrhundert in Zweigen getrennt zu sein".[2] In der Software -Umgebung ruft das Wort das hervor Gabel Systemaufruf, der dazu führt, dass sich ein laufender Prozess in zwei (fast) identische Kopien aufteilt, die (typischerweise) unterschiedliche Aufgaben unterscheiden.[3]
Im Kontext der Softwareentwicklung wurde "Fork" verwendet, um eine Revisionskontrolle zu erstellen. "Zweig" durch Eric Allman Bereits 1980 im Kontext von SCCS:[4]
Erstellen einer Filiale "Forks aus" einer Version des Programms.
Der Begriff wurde verwendet Usenet Bis 1983 für den Prozess der Erstellung einer Untergruppe, um Diskussionsthemen auf zu verschieben.[5]
"Fork" ist nicht bekannt, dass es im Sinne eines Community -Schisma während der Ursprünge von lucid Emacs (jetzt Xemacs) (1991) oder die BSDS (1993–1994); Russ Nelson verwendete den Begriff "erschütternd" für diese Art von Gabel im Jahr 1993, die ihn zuschreibt John Gilmore.[6] "Fork" wurde jedoch im vorliegenden Sinne 1995 verwendet, um die Xemacs -Spaltung zu beschreiben,[7] und war eine verstandene Verwendung in der GNU Projekt bis 1996.[8]
Gabelung von freier und Open-Source-Software
Frei und Quelloffene Software kann legal ohne vorherige Genehmigung derjenigen, die die derzeit entwickeln, verwalteten oder verteilen Die kostenlose Software -Definition und Die Open -Source -Definition:[9]
Die Freiheit, Kopien Ihrer modifizierten Versionen an andere zu verteilen (Freiheit 3). Auf diese Weise können Sie der gesamten Community die Möglichkeit geben, von Ihren Änderungen zu profitieren. Der Zugriff auf den Quellcode ist dafür eine Voraussetzung.
3. Abgeleitete Arbeiten: Die Lizenz muss Änderungen und abgeleitete Arbeiten ermöglichen und sie ermöglichen, unter den gleichen Bedingungen wie die Lizenz der ursprünglichen Software verteilt zu werden.
In der kostenlosen Software resultieren Gabeln häufig aus einem Schisma über verschiedene Ziele oder Persönlichkeitskollisionen. In einer Gabel nehmen beide Parteien nahezu identische Codebasen aus, aber in der Regel behält nur die größere Gruppe oder wer die Website kontrolliert, den vollständigen Originalnamen und die zugehörige Benutzergemeinschaft. Somit ist eine Reputationsstrafe im Zusammenhang mit der Gabelung verbunden.[9] Die Beziehung zwischen den verschiedenen Teams kann herzlich oder sehr bitter sein. Andererseits a Freundliche Gabel oder ein weiche Gabel ist eine Gabel, die nicht beabsichtigt, sich zu konkurrieren, sondern sich schließlich mit dem Original verschmelzen.
Eric S. Raymondin seinem Aufsatz Homesteading der Nosphäre,[12] erklärte, dass "das wichtigste Merkmal einer Gabel ist, dass sie konkurrierende Projekte hervorbringt, die den Code nicht später austauschen können und die potenzielle Entwicklergemeinschaft aufteilt". Er bemerkt in der Jargon -Datei:[13]
Gabing gilt als schlechte Sache - nicht nur, weil es in Zukunft viel verschwendete Anstrengungen impliziert, sondern weil Gabeln in der Regel von viel Streit und Schärfe zwischen den Nachfolgergruppen wegen Legitimität, Nachfolge und Entwurfsrichtung begleitet werden . Es gibt ernsthaften sozialen Druck gegen die Gaber. Infolgedessen große Gabeln (wie die Gnu-emacs/Xemacs Split, die Spaltung der 386bs Gruppe zu drei Tochterprojekten, und die kurzlebigen GCC/EGCs-Split) sind selten genug, dass sie in Hacker-Folklore einzeln in Erinnerung bleiben.
David A. Wheeler bemerkt[9] Vier mögliche Ergebnisse einer Gabel mit Beispielen:
- Der Tod der Gabel. Dies ist bei weitem der häufigste Fall. Es ist einfach, eine Gabel zu deklarieren, aber erhebliche Anstrengungen, um die unabhängige Entwicklung und Unterstützung fortzusetzen.
- Eine Wiederverwendung der Gabel (z.B., EGCS "gesegnet" wie die neue Version von GCC.))
- Der Tod des Originals (z.B. das X.org Server Erfolg und Xfree86 Absterben.)
- Erfolgreiche Verzweigung, typischerweise mit Differenzierung (z.B., OpenBSD und Netbsd.))
Distributed Revision Control (DVCs) Tools haben eine weniger emotionale Verwendung des Begriffs "Gabel" populär gemacht, wodurch die Unterscheidung mit "Zweig" verwischt wird.[14] Mit einem DVCs wie z. Quecksilber oder GitDer normale Weg, um zu einem Projekt beizutragen, besteht darin, zunächst einen persönlichen Zweig des Repositorys zu erstellen, der unabhängig vom Haupt -Repository ist, und später versucht, Ihre Änderungen in sie integrieren zu lassen. Websites wie GitHub, Bit Bucket und Launchpad Bereitstellung kostenloser DVCs -Hosting, die ausdrücklich unabhängige Filialen unterstützen, sodass die technischen, sozialen und finanziellen Hindernisse für die Abgabedozierung eines Quellcode -Repositorys massiv reduziert werden, und GitHub verwendet "Gabel" als Begriff für diese Beitragsmethode zu einem Projekt.
Gabeln starten häufig die Versionsnummerierung von 0,1 oder 1,0 neu, selbst wenn sich die Originalsoftware in Version 3.0, 4.0 oder 5.0 befand. Eine Ausnahme besteht darin z.B. Mariadb zum Mysql[15] oder Libreoffice zum OpenOffice.org.
Das BSD -Lizenzen Gabeln erlauben, proprietäre Software zu werden, und Copyleft Befürworter sagen, dass kommerzielle Anreize die Proprietisierung fast unvermeidlich machen. (Copyleft-Lizenzen können jedoch durch Dual-Licensing mit einem proprietären Zuschuss in Form von a umgangen werden Mitwirkungslizenzvereinbarung.) Beispiele beinhalten Mac OS (basierend auf dem Eigentum Nächster Schritt und die Open Source Freebsd), Cedega und Crossover (proprietäre Gabeln von Wein, obwohl Crossover Wein verfolgt und erheblich beiträgt), EnterprisedB (eine Gabel von PostgreSQLHinzufügen von Oracle -Kompatibilitätsfunktionen[16]), Unterstützt postgreSQL mit ihrem proprietären ESM -Speichersystem,[17] und Netezza[18] Proprietär hoch skalierbares Derivat von PostgreSQL. Einige dieser Anbieter tragen Änderungen im Community -Projekt bei, während andere ihre Änderungen als ihre eigenen Wettbewerbsvorteile beibehalten.
Gabel proprietäre Software
Im proprietäre SoftwareDas Urheberrecht wird normalerweise von der Beschäftigungseinheit gehalten, nicht von den einzelnen Softwareentwicklern. Der proprietäre Code wird daher häufiger aufgebracht, wenn der Eigentümer zwei oder mehr Versionen entwickeln muss, wie z. Fenster Version und a Befehlszeile Version oder Versionen für unterschiedliche Betriebssysteme wie a Textverarbeitungssystem zum IBM PC kompatible Maschinen und Macintosh Computers. Im Allgemeinen konzentrieren sich solche internen Gabeln darauf, das gleiche Erscheinungsbild, das gleiche Gefühl, das Datenformat und das gleiche Verhalten zwischen Plattformen zu haben, sodass ein mit einem vertrauter Benutzer auch produktiv sein kann oder Dokumente teilen kann, die auf dem anderen generiert werden. Dies ist fast immer eine wirtschaftliche Entscheidung, um eine größere zu generieren Marktanteil und zahlen Sie so die damit verbundenen zusätzlichen Entwicklungskosten zurück, die durch die Gabel entstehen.
Eine bemerkenswerte proprietäre Gabel, die nicht von dieser Art ist Unix- fast alle abgeleitet von AT & T Unix unter Lizenz und "Unix" genannt, aber zunehmend gegenseitig nicht kompatibel.[19] Sehen Unix -Kriege.
Siehe auch
- Liste der Softwaregabeln
- Quellport
- Nachgeschaltet (Softwareentwicklung)
- Gruppenentscheidung
- Modulare Programmierung
- Kundenspezifische Software
- Personalisierung
- Teameffektivität
- ROM Hacking
Verweise
- ^ "Schisma" mit seinen Konnotationen ist eine gemeinsame Verwendung, z.B. "Das Lemacs/FSFMACS -Schisma" Archiviert 12. Dezember 2009 bei Webcite (Jamie Zawinski, 2000), "Hinter dem Koffice Split" " Archiviert 6. Juli 2013 bei der Wayback -Maschine (Joe Brockmeier, Linux Weekly News, 2010-12-14), "Urheberrechtszuweisung - Einmal gebissen, zweimal schüchtern" Archiviert 30. März 2012 bei der Wayback -Maschine (Richard Hillesley, H-online, 2010-08-06), "Gabel ist eine Funktion" Archiviert 29. Februar 2012 bei der Wayback -Maschine (Anil Dash, 2010-09-10), "Die große Softwareschism" Archiviert 6. Januar 2012 bei der Wayback -Maschine (Glyn Moody, Linux Journal, 2006-09-28), "Zu Fork oder nicht zu Fork: Lektionen von Ubuntu und Debian" Archiviert 26. Februar 2012 bei der Wayback -Maschine (Benjamin Mako Hill, 2005).
- ^ Eintrag "Fork" im Online -Etymologie -Wörterbuch Archiviert 25. Mai 2012 bei der Wayback -Maschine
- ^ "Der Begriff Fork wird aus dem POSIX -Standard für Betriebssysteme abgeleitet: Der verwendete Systemaufruf, so dass ein Prozess eine Kopie von sich selbst generiert, heißt fork ()." Robles, Gregorio; González-Barahona, Jesús M. (2012). Eine umfassende Untersuchung von Software -Gabeln: Daten, Gründe und Ergebnisse (PDF). OSS 2012 Die achte internationale Konferenz über Open -Source -Systeme. doi:10.1007/978-3-642-33442-9_1. Archiviert (PDF) Aus dem Original am 2. Dezember 2013. Abgerufen 20. Oktober 2012.
- ^ Allman, Eric. "Eine Einführung in das Quellcode -Steuerungssystem." Archiviert 6. November 2014 bei der Wayback -Maschine Projekt Ingres, University of California in Berkeley, 1980.
- ^ Kann jemand ein "net.philosophy" ausgehen? (John Gilmore, net.misc, 18. Januar 1983)
- ^ Erschütternd - gut oder schlecht? (Russell Nelson, Gnu.Misc.Discuss, 1. Oktober 1993)
- ^ Re: Hey Franz: 32k Windows Saug !!!!! (Bill Dubuque, Cu.Cs.Macl.info, 21. September 1995)
- ^ Lignux? (Marcus G. Daniels, Gnu.Misc.Discuss, 7. Juni 1996)
- ^ a b c Warum Open -Source -Software / kostenlose Software (OSS / FS, FLOSS oder FOSS)? Schau dir die Zahlen an !: Gabelung Archiviert 5. April 2006 bei der Wayback -Maschine (David A. Wheeler)
- ^ Stallman, Richard. "Die kostenlose Software -Definition". Kostenlose Software -Stiftung. Archiviert Aus dem Original am 14. Oktober 2013. Abgerufen 15. Oktober 2013.
- ^ "Die Open -Source -Definition". Die Open -Source -Initiative. Archiviert Aus dem Original am 15. Oktober 2013. Abgerufen 15. Oktober 2013.
- ^ Raymond, Eric S. (15. August 2002). "Promiscusionstheorie, puritanische Praxis". Archiviert Aus dem Original am 6. Oktober 2006.
- ^ Gegabelt Archiviert 8. November 2011 bei der Wayback -Maschine (Jargon -Datei), zuerst hinzugefügt zu v4.2.2 Archiviert 14. Januar 2012 bei der Wayback -Maschine, 20. August 2000)
- ^ z.B. Willis, Nathan (15. Januar 2015). "Eine" offene Governance "Gabel von Node.js". Lwn.net. Archiviert Aus dem Original am 21. April 2015. Abgerufen 15. Januar 2015.
Gabeln sind ein natürlicher Bestandteil des offenen Entwicklungsmodells - so sehr, dass Github auf fast jeder Seite eine "Gabel Ihrer eigenen Kopie" plastert.
Siehe auch Nyman, Linus (2015). Verständnis der Code -Gaber in Open Source -Software (Ph.D.). Hanken School of Economics. p. 57. HDL:10138/153135.Wo Praktizierende zuvor ziemlich enge Definitionen einer Gabel hatten, [...] scheint der Begriff jetzt viel mehr verwendet zu werden. Aktionen, die traditionell als Zweig, eine neue Verteilung, Codefragmentierung, ein Pseudo-Gabel usw. bezeichnet worden wären. Dies scheint aufgrund der breiten Definition und Verwendung des Begriffs Gabel von GitHub in keiner unbedeutenden Teil zu liegen.
- ^ Ein Projekt, wo beginnen meine Versionsnummern? Archiviert 26. August 2011 bei der Wayback -Maschine
- ^ EnterprisedB Archiviert 13. November 2006 bei der Wayback -Maschine
- ^ Fujitsu unterstützte Postgresql Archiviert 20. August 2006 bei der Wayback -Maschine
- ^ Metezza Archiviert 13. November 2006 bei der Wayback -Maschine
- ^ Angst vor dem Gabel Archiviert 17. Dezember 2012 bei der Wayback -Maschine - Ein Aufsatz über Gabering in gratis Software Projekte von Rick Moen
Externe Links
- Recht auf Gabel bei Fleischbällchen -Wiki
- Eine Doktorarbeit, in der die Gabele untersucht wird: (Nyman, 2015) "Verständnis der Code -Gaber in Open Source -Software - Eine Prüfung der Code -Gaber, ihre Auswirkungen auf Open Source -Software und wie sie von Entwicklern betrachtet und praktiziert wird"