Perché "Fork me on GitHub"? [chiuso]


50

Capisco come funziona GitHub , ma una cosa di cui sono stato confuso è, perché quasi tutti i progetti OSS recentemente hanno un link "Fork me on GitHub" sulla loro homepage. Per esempio,

http://jqtjs.com/ , http://www.daviddurman.com/flexi-color-picker/ e altri.

Perché è così comune? È loro che vogliono / hanno bisogno della convalida del codice, controllando i miglioramenti di sicurezza / prestazioni che potrebbero non sapere come fare?

Ha lo scopo di dimostrare che si tratta di un progetto collaborativo: sei invitato ad aggiungere miglioramenti?

Lavorano per GitHub o vogliono promuovere il loro servizio? Stranamente, non credo di aver visto di recente un logo " Progetto Fork su Bitbucket ".

La mia prima reazione a quel logo è stata che probabilmente il progetto deve essere modificato (biforcuto) per integrarlo con qualcosa di utile - o che stanno incoraggiando una base di codice frammentata, incoraggiando tutti a creare il proprio fork del progetto. Ma non penso che sia questo l'intento.


23
Perché è più facile che scrivere "se vuoi contribuire a questo progetto o controllare la fonte, guarda il nostro repository su github". ;-)
nietonfir il

1
Sono un po 'stupito che nessuno abbia menzionato il ... Cos'è, un gioco di parole? Innuendo? Ma quella particolare formulazione non funzionerebbe con bitbucket; il loro sito emana un'atmosfera più professionale di Github. Perché è così che ho capito la tua domanda in prima lettura - "perché bitbucket non li ha?"
Izkata,

2
Sono widget sociali , proprio come quelli che appaiono con il link 'condividi' su una domanda / risposta SE: ottieni widget per Google+, Facebook e Twitter. Sono pronti per l'uso per i progettisti del sito, quindi facili da integrare. Penso che non esista nulla del genere, ad esempio Bitbucket, quindi non c'è nulla da notare: se un progetto ha il suo widget "fork me" fatto in casa, probabilmente non assomiglierebbe a nessun altro, presumibilmente.
Luc Danton,

Sto votando per chiudere questa domanda come fuori tema perché riguarda la cultura del software open source. Attualmente, le domande su come le comunità collaborano insieme per produrre, distribuire, commercializzare e talvolta monetizzare progetti open source sono in discussione nello scambio di stack open source .
Thomas Owens

Risposte:


20

A parte il lato della collaborazione affido del problema, dal punto di vista aziendale migliorerà e rafforzerà il traffico, la base di utenti e la posizione di mercato di GitHub. Quindi c'è anche un po 'di una strategia aziendale associata ad essa.

Personalmente non mi dispiace perché GitHub offre un servizio prezioso alla comunità open source.


23
Perché la tua risposta è dal punto di vista di GitHub? Le persone non stanno inserendo quel logo sui loro siti per rafforzare il traffico, la base di utenti e la posizione di mercato di GitHub. Potrebbe essere un effetto collaterale, ma non è questo lo scopo . In che modo questa è una "strategia aziendale" di GitHub? GitHub non è nemmeno responsabile di mettere questo logo sui siti OSS (i manutentori dei siti OSS lo sono).
Ben Lee,

3
@Ben Lee Il tuo commento è ben ripreso. Ma direi che non c'è uno scopo, ma molti . Non ho respinto l'idea che uno scopo sia favorire la collaborazione, semplicemente che dobbiamo anche riconoscere che GitHub è anche un'azienda (si potrebbe sostenere che sono i leader di mercato in questo settore) e che un altro scopo di Fork Me su GitHub è per vantaggio strategico. Concesso che questo è volontario, ma è comunque efficace. Rende GitHub più visibile su Internet, una parte fondamentale di qualsiasi strategia aziendale su Internet.
AsymLabs

2
@BenLee Come notato da Dmitri, Github ha questa pagina: github.com/blog/273-github-ribbons Bitbucket o altri servizi hanno qualcosa di simile?
NoBugs

75

Ha lo scopo di dimostrare che si tratta di un progetto collaborativo: sei invitato ad aggiungere miglioramenti?

Sì: non hai il diritto di inviare un commit direttamente nel loro repository.
Ma hai la possibilità di fork il loro repository , che lo rende il tuo repository, e spingere commit da lì, preparando le richieste pull .

forchetta


2
So che puoi fork, quindi tirare la richiesta su Github, la mia domanda è perché dicono "fork me su Github"?
NoBugs,

6
@NoBugs per assicurarti di sapere come contribuire al loro progetto.
VonC,

19
Penso che il focus qui sia più sul "fork me" che su Github. Probabilmente è semplicemente perché Github è il sito più popolare di questo tipo. Non penso che qualcuno abbia un grosso problema se batti Bitbucket. Buona domanda comunque.
JensG,

Non penso che nessuno abbia un grosso problema anche se vai su gitorious.org . Solo che quasi nessuno lo fa ...
Michael Paulukonis,

37

Il badge "Fork me on Github" ha lo scopo di mostrare che al progetto ti è concesso il diritto di contribuire al progetto o usarlo come punto di partenza per il tuo progetto.

Dimostra che "è un progetto collaborativo e che puoi aggiungere miglioramenti".

Ti permette di giocare con il codice o fare uno spin-off dello stesso progetto senza influenzare la fonte originale.

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

Lo stesso principio si applica a tutti gli altri host git.

Il punto principale (tra molti altri) di dare il diritto a fork un progetto è

  • favorire la collaborazione, consentendo alle persone di lavorare insieme per migliorare il progetto.
  • aggiungi alla conoscenza - consentendo alle persone di studiare il tuo codice.

Alcuni dei progetti che potresti incontrare potrebbero essere dello staff di Github per le loro esigenze private. Non vogliono promuovere Github. Puoi trovare progetti di github qui: https://github.com/github

Il motivo per cui non vedi badge da altri host è perché Github è la piattaforma di hosting e collaborazione git più popolare.


Esattamente. I flussi di lavoro DVCS significano che posso pubblicare i miei risultati senza infliggerli agli altri. Forking significa non dover chiedere il permesso di condividere tutto ciò che si desidera condividere. Se a Internet piacciono le tue modifiche, le assorbiranno.
Warren P,

15

Immagina di utilizzare il tuo editor di testo preferito e dopo qualche tempo scopri che ti piacerebbe davvero implementare alcune funzionalità (come l'opzione Salva file non bloccante).

Dopo aver pensato che per l'undicesima volta decidi di scriverne uno da solo. Dopo aver trovato la pagina github di questo progetto hai due opzioni:

  1. Scarica il codice sorgente, modificalo e conservalo per te.
  2. Fork il progetto su un github e lavorare sulla forcella.

Se hai scelto la seconda opzione, dopo aver reso la tua funzionalità ben scritta e ben testata, potresti preparare la richiesta pull e quindi l'intero progetto trarrebbe beneficio da te.

Tuttavia, se hai scelto il primo percorso, è molto probabile che ti dimenticherai della modifica e nessuno tranne te ne trarrà beneficio (sì, potresti condividere il codice manualmente, ma alcuni altri programmatori potrebbero facilmente dimenticarlo. ti sta costringendo a socializzare di più con il lavoro dell'altro).

Dire che il proprietario del progetto 'fork me on a github' vuole solo assicurarsi di aver scelto Fork on githubinvece di scaricare il codice e pubblicarlo nella tua home directory.


7

È lì solo per dimostrare che si tratta di un progetto open source e lo biforchi se vuoi, qualunque sia la ragione. Inoltre, dai un'occhiata a questo post di blog su GitHub: https://github.com/blog/273-github-ribbons

Aggiornamento: Personalmente, aggiungo questi nastri GitHub in modo che le persone possano trovarmi su GitHub e iniziare i miei progetti;)


6

Significa che sono su github, dove il fork è economico e vogliono incoraggiare i contributi per migliorare il loro software e la loro comunità.


5

Github sta cercando di ampliare la propria base di utenti per includere qualsiasi lavoro collaborativo, non solo l'hosting di codice sorgente; e quindi spingono la forcella e inviano un metodo di richiesta pull . Creare patch e inviarle via e-mail non sarebbe attraente per la maggior parte delle persone oltre ai programmatori e simili. Le autorizzazioni push non sono davvero importanti qui, poiché alla fine la maggior parte degli utenti git (o mercurial, darc o altro) con una notevole conoscenza dello strumento e del flusso di lavoro di sviluppo sarebbero in grado di inviare in qualche modo un'e-mail con una patch allegata.

Inoltre, Github si occupa più dei social network che dell'hosting di codice: il tuo profilo, i repository e le modifiche costituiscono la tua identità di sviluppatore di software, proprio come i tuoi tweet e i "+1". Tutti quei nastri, pulsanti e simili sono usati come mezzo di auto-ricerca, un percorso per il profilo della persona a cui appartiene il progetto. Al giorno d'oggi, avere un profilo Github decente è la prima cosa che ci si aspetta da uno sviluppatore. Anche se uso mercurial per qualsiasi cosa, spingo su Github tramite hg-git per questi motivi.

Alla fine, il nastro "Fork me on Github" differisce leggermente di proposito dal pulsante "Tweet questo articolo" o dal pulsante "Condividi questa cosa su G +". (Anche avere un fork di un repository nell'elenco dei repository significa "Sono un utente di questa cosa", ci sono migliaia di fork di Linux su github, anche se Linus Torvalds non accetta richieste pull.)


2

è un altro modo per dire "le patch sono benvenute".

invece di inviare desideri e richieste di funzionalità, le persone possono inviare richieste pull in cui l'autore originale rivede, convalida e unisce la richiesta pull.

storicamente il fork è un'azione ostile fatta da un gruppo che è in conflitto con la gestione del progetto originale, ad esempio OpenOffice di Sun ha usato per rifiutare il veloce plugin SVG C / C ++ perché preferisce il proprio plugin lento basato su Java per motivi politici.

Nella maggior parte dei casi le forcelle sono cattive e trasportate da persone invidiate o da aziende egoiste che hanno piani che non sono condivisi con la comunità originale e non sono in linea con esso (es. Canonico ) e un esempio di questo è libav / avconv (che è un fork di FFMPEG), in quei casi la community originale ha una qualità e una sicurezza superiori e accolgono con favore le patch allineate ai piani della community.

Dan Walsh ha notato la vecchia definizione di fork

Sono stato in open source per molto tempo e la mia definizione di "fork" potrebbe essere datata. Penso a un "fork" come un'azione ostile intrapresa da un gruppo per indurre gli altri a utilizzare e contribuire alla loro versione di un progetto a monte e ignorare la versione "originale". Ad esempio, LibreOffice si stacca da OpenOffice o torna indietro a Xorg da Xfree86.

Poi lo ha confrontato con la forchetta di Github

Oggi GitHub ha cambiato il significato. Quando esiste un repository software su GitHub o su una piattaforma simile, tutti coloro che vogliono contribuire devono premere il pulsante "fork" e iniziare a creare le proprie patch. Al momento della stesura di questo documento, Docker su GitHub ha 9.860 fork, incluso il nostro. In base a questa definizione, tuttavia, tutti i pacchetti distribuiti che includono patch sono fork. Red Hat distribuisce il kernel Linux e non ho sentito questo definito un fork. Ma sarebbe considerato un "fork" se stai considerando un progetto a monte spedito con patch un fork.


1

Tutte le risposte dicendo che questa è la domanda Beg collaborativo: perché non dire " Clone me sul GitHib" o "Download .zip da GitHub"?

Su GitHub puoi vedere il conteggio del numero di forchette. Ma, per quanto ne sappia, non un conteggio del numero di cloni o download zip.

Quindi, direi che è in parte per incoraggiare la collaborazione, in parte per ottenere feedback e convalida che le persone stiano usando il tuo codice.

PS: sono abbastanza nuovo su GitHub, quindi se questo è totalmente sbagliato di base fammelo sapere.


Non è molto più semplice dire semplicemente "è così che funziona il controllo della versione distribuita, tramite richieste pull, che ovviamente richiede che io per prima cosa fork il tuo repository, poi mi impegni con il mio fork, quindi emetto una richiesta pull se costruisco qualcosa che vale la pena condividere con il progetto originale "
Warren P

1
Devo ammettere che davvero non "ottengo" git. Perché non solo clonare o ottenere il file zip e, se apporto delle modifiche, installare qualunque VCS desidero? Nei rari casi apporto utili modifiche di beneficio a tutti, potrei ricorrere all'e-mail o fare il fork allora.
user949300

Questa risposta è contraddittoria. Giustamente suggerisci che stanno cercando di incoraggiare la collaborazione. Il punto di tale collegamento non è quello di dare alle persone un posto dove scaricare il tuo progetto, il punto è coinvolgerli nello sviluppo. Potrebbero scaricare una zip o clonarla se volessero semplicemente una copia per se stessi, ma se vogliono che la loro copia abbia un percorso stabilito per contribuire al progetto a monte che viene fatto attraverso un fork in cui l'upstream può ottenere i tuoi contributi a partire dal.
Caleb,

@ user949300, puoi ancora usare git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.gite poi git format-patch mastere inviare via e-mail o simili
Sebastian Godelet,

0

biforcarsi su github rende davvero facile dire come seguimi su Twitter. Porta un po 'di socializzazione nel mondo dello sviluppo dal mio personale punto di vista, rendendo anche ovvio che è open source e disponibile per modifiche. Penso anche che sia un bel concetto con il banner "fork me on github" su un'estremità del tuo sito web del progetto


Um. No. Per questo ci sono 'star' e 'watch' per i repository e 'follow' per gli utenti. Il punto delle forcelle è incoraggiare un tipo specifico di azione - inviare contributi a monte - non solo renderlo sociale.
Caleb,

0

Probabilmente stai meglio prendendo semplicemente la risposta più semplice: vogliono che tu sappia che il codice è disponibile gratuitamente su GitHub. Penso che le tue ipotesi siano un po 'troppo ripensate.


Questa è la risposta più semplice che ha effettivamente senso.
Woland,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.