Qual è il modo migliore per iniziare a utilizzare il controllo della versione in un progetto opensource?

10

È stato suggerito di prendere il mio progetto open source a causa delle sue dimensioni e della mia mancanza di competenze, quindi ho controllato Google Code, ho iniziato a fare un progetto e ora mi chiede se voglio che il progetto abbia Git, Mercurial o hosting del codice di Subversion.

Non so nemmeno cos'è il code hosting, e una ricerca mi ha semplicemente confuso maggiormente con i dibattiti tra tutte queste cose, e questo è reso ancora peggiore dal momento che Google Code mi sta chiedendo quale tipo di licenza voglio.

Penso di non capire del tutto cosa significhi realmente l'open source, che qualcuno possa fare un veloce capriccio di un laico su cosa sia tutto questo? Molto apprezzato.

Modifica Ci sono state molte ottime risposte su queste tre versioni di code hosting, ma penso di non essere riuscito a comunicare la vera domanda: fondamentalmente non ho idea di come funzioni questa roba open source perché dovrei ospitare il codice da qualche parte in questo modo? E questo significa che devo ritirare il sito dal mio attuale hosting, o si tratta di un tipo di hosting completamente diverso? Cosa succede quando realizzo il mio sito open source, quali diritti ho, quali diritti conferisco. Come funziona, le persone vengono e mi danno il codice gratis? Forse queste sono domande stupide, e se è così allora credo di aver bisogno di risposte stupide, non ho seriamente idea di cosa sia l'open source, eccetto il concetto di condivisione del codice ...

    
posta Nathan 31.08.2011 - 14:43
fonte

9 risposte

7

why would I host the code somewhere like this?

Un punto chiave dello sviluppo del software open source è quello di condividere il codice sorgente. Ci sono diversi modi per farlo, come mettere file tar / zip su un server web o ftp. Servizi come google code (o sourceforge.net, gitorious.org, bitbucket.org e molti altri) eliminano la necessità di eseguire i propri server per questo scopo.

And would that mean I have to take the site off of my current hosting, or is this an entirely different type of hosting?

Questi servizi non sono host web generici, ma eseguono servizi molto specializzati. Non sono pensati per essere la homepage di un prodotto, ma più una dashboard per sviluppatori.

Con il codice google ottieni

  • un wiki
  • un bugtracker
  • spazio di download regolare dei file
  • un server di controllo versione

Naturalmente puoi configurare questi software su un normale server web (il controllo delle versioni potrebbe essere complicato, ma dipende molto dai dettagli), ma il vantaggio principale dell'utilizzo di un hoster di sviluppo è che non ti serve prendersi cura di questi sistemi per conto tuo. Lo svantaggio principale è che non si ha il controllo su quale software è utilizzato sul server, bisogna vivere con ciò che è disponibile su quell'host. È inoltre necessario considerare cosa accade se il servizio ha cessato l'attività (ok, Google non fallisce mai) e se è possibile trasferire i dati dall'host corrente a un altro server o al proprio server (si pensi ai backup).

What happens when I make my site open source, what rights do I have,

Questa è una domanda difficile, poiché dipende dalla legge del paese in cui vivi.

what rights do I give away.

Dipende dalla licenza che si fornisce al prodotto. Può passare da open source proprietario (pensate a PGP) in cui l'utente non può praticamente fare nulla con il codice, dall'altra parte della scala è di dominio pubblico, dove ognuno può fare ciò che vuole.

How does it work, do people just come and throw code at me for free?

È molto improbabile che ciò accada, dal momento che il tuo prodotto ha bisogno di abbastanza popolarità per attirare altri sviluppatori.

[...] and now it's asking me if I want the project to have Git, Mercurial, or Subversion code hosting.

Questi sono tre diversi sistemi di controllo della versione, in cui Subversion è centralizzato, mentre Git e Mercurial sono distribuiti.

Ci sono guerre religiose su quale usare, ma il punto principale è usarne uno. Vedi link per ulteriori dettagli.

Quando scegliere Subversion:

  • Hai file binari, che non possono essere facilmente uniti e hanno bisogno del workflow lock- > modify- > commit- > unlock, che subversion supporta¹
  • Devi controllare solo una parte della struttura della directory.

¹ C'è un'estensione di blocco per mercurial, ma non ne ho esperienza e non posso dire se è utilizzabile.

Quando non hai bisogno delle funzioni precedenti, è meglio usare Mercurial o Git. Entrambi hanno i seguenti vantaggi rispetto a Subversion:

  • veloce (e con veloce intendo veramente veloce )
  • facile ramificazione e unione (questo è migliorato da Subversion > = 1.5, ma non è lo stesso)
  • commit e publish è disaccoppiato, quindi puoi lavorare senza disturbi su una funzione e pubblicare il lavoro quando è finito
  • tracciano lo stato della directory del prodotto come intero
  • ottieni una copia completa dell'intera cronologia delle versioni quando cloni un repository remoto
  • numeri di revisione protetti crittograficamente, il che significa che anche quando qualcuno interrompe il server, non può mettere il codice sul posto senza modificare la cronologia delle revisioni

    • ma poiché nessuno controlla queste revisioni, questa funzione non è praticamente efficace
risposta data 31.08.2011 - 18:27
fonte
9

L'hosting del codice è esattamente questo: da qualche parte per ospitare (o mantenere) il tuo codice.

Git, Mercurial e Subversion sono tutti strumenti di controllo del codice sorgente che usi per gestire la cronologia del codice. Git e Mercurial sono sistemi distribuiti mentre Subversion è una configurazione basata su server più tradizionale.

Dai un'occhiata a Wikipedia o ad alcuni di essi e vedi quali sono i più interessanti per te. Personalmente usiamo Mercurial e funziona molto bene per noi.

    
risposta data 31.08.2011 - 14:47
fonte
6

Il di Joel Spolsky ha scritto un ottimo tutorial su Hg (Mercurial) e credo che la sezione introduttiva copra Subversion, compresi i motivi per cui stai aggiornando a Mercurial. Dai una lettura, mi ha davvero aiutato a capire molto su Mercurial e DVCS in generale.

Oh, e quando sei pronto per ospitare, puoi utilizzare Google Code, BitBucket , Github (con l'aiuto di questa eccellente estensione ) o altri.

    
risposta data 31.08.2011 - 14:46
fonte
3

Uso git, che trovo più facile da gestire grazie al controllo distribuito. Hg è buono anche per questo particolare scopo, ma non posso darti consigli su di esso, non averlo mai usato. SVN è un sistema centralizzato e quindi meno pratico, ma potrebbe essere leggermente più semplice.

L'open source in pratica significa che puoi dare a chiunque la possibilità di utilizzare il tuo lavoro e costruire su di esso. È possibile impostare i limiti di tale utilizzo: GPL significa che l'utente deve rendere il proprio lavoro aggiunto open source, LGPL significa che non lo fa, per esempio.

    
risposta data 31.08.2011 - 14:52
fonte
2

Subversion sarebbe l'opzione più semplice perché è un VCS. Git e Mercurial sono sistemi DVCS. Sono più moderni e più potenti ma più difficili da capire. Anche un front-end come TortoiseSVN o TortoiseHG (per Mercurial aka HG) aiuta davvero.

Se il tuo software è un programma stand-alone potresti usare GPL o davvero aprirlo con una licenza BSD. Se il tuo progetto è una libreria che qualcun altro collegherà con LGPL o di nuovo BSD; ma non usare GPL.

[modifica]

Per quanto riguarda la tua motivazione originale per l'open sourcing del software: Sfortunatamente solo creare software open source non significa che avrai un afflusso di manodopera gratuita di talento. Ci sono centinaia di migliaia di progetti open source. Solo una piccola percentuale di essi ha membri attivi che contribuiscono. Le ragioni per cui questi progetti hanno successo o meno sono molteplici come il motivo per cui le aziende riescono e falliscono. Se vuoi diventare un buon programmatore e produrre un buon software, dovrai dedicare molto tempo all'apprendimento, alla scrittura di codice e alla comunicazione con altre persone su siti come StackOverflow.

    
risposta data 31.08.2011 - 14:48
fonte
0

Mi sembra che mentre la maggior parte delle persone qui sta rispondendo come , nessuno ha veramente risposto perché nella sua domanda.

Uno dei primi progetti open source che ho sperimentato è stato il favoloso progetto Fractint , sviluppato da Stone Soup Group che sono stati ispirati dalla vecchia storia popolare della zuppa di pietra .

Per me, questo incapsula lo spirito dell'open source meglio di qualsiasi Stallman rant o persino dell'originale Manifesto GNU . È una testimonianza della forza di quella comunità che Fractint è ancora in fase di sviluppo 23 anni dopo che l'incendio è stato acceso sotto quel particolare pentola di cottura del codice .

    
risposta data 31.08.2011 - 16:43
fonte
0

Open source significa che chiunque può leggere, copiare, modificare e distribuire il tuo codice. Dovresti avere una chiara comprensione delle implicazioni di questo prima di procedere. Forse dovresti leggere un libro o almeno sfogliare gli articoli di Wikipedia sull'argomento e / o link finché non senti di avere una comprensione del concetto.

(Il link O'Reilly Open Sources link è utile ma forse non proprio quello che stai cercando per.)

Quale sistema di controllo del codice sorgente da utilizzare è completamente secondario. È possibile copiare / incollare il codice su una pagina Web e fare. Detto questo, il controllo della versione è importante e un buon veicolo per abbassare la barra per consentire agli sviluppatori di contribuire. Qualsiasi delle opzioni offerte da Google Code va bene; vai con quello che ti piace, o forse rimanda la domanda fino a quando non puoi chiedere ai tuoi contributori quale vorrebbe usare.

    
risposta data 09.09.2011 - 10:20
fonte
0

Rendere il tuo codice o progetto open source significa che tutti possono prenderlo e modificarlo come (s) vuole. Ciò dipende dal tipo di licenza che si sceglie di utilizzare, ma in generale l'open source indica che il codice sorgente è disponibile a chiunque per scaricarlo, modificarlo e utilizzarlo a proprio piacimento.

In ogni caso questo codice deve essere raggiungibile da altre persone per ottenerlo.

Portare il codice in un repository pubblico online come GitHub è il modo migliore per farlo. Innanzitutto, il tuo codice è ora accessibile al pubblico. Quindi, dal momento che tali servizi offrono anche Controllo versione, il tuo codice è organizzato per il progetto. Puoi tenere traccia dei cambiamenti fatti da te e da altre persone. Dal momento che consente anche la diramazione (separando) il progetto in altri progetti diversi, puoi tenere traccia di tutte le versioni di altre persone create dal tuo codice.

Ciò garantisce anche che il tuo codice sia conservato in un luogo sicuro, per cui non devi preoccuparti che venga perso da un hard disk difettoso sul tuo pc. E quando vuoi lavorarci, puoi lavorare da qualsiasi luogo perché il tuo codice è online, puoi trovarlo ovunque.

Se decidi che è ora di mostrare il tuo codice al mondo, è solo questione di inviare il link al tuo repository di progetti online. È una tecnologia a cui le persone si stanno abituando, quindi poiché tutti lo sanno, è più facile capire come scaricarlo, postare messaggi, creare versioni diverse, ecc.

È come uno standard comune di fare le cose, pratica comune.

Alcuni link che potresti trovare utili per spiegare ulteriormente l'open source:

risposta data 09.09.2011 - 10:41
fonte
-6

Riguardo al sistema di controllo delle versioni, direi che dovresti seguire l'alternativa più usata e più recente: "Git". Mercurial è meno popolare e SVN è vecchio, lento e centralizzato. Con GIT beneficerai di un sistema di controllo delle versioni moderno e popolare. Non c'è praticamente nulla da perdere.

Fonti (popolarità del DVCS reggarding):

link ~ 10k domande link ~ 3k domande

link

11700000 risultati vs

1580000 risultati

Per quanto riguarda la licenza: forse dovresti dare un'occhiata ai più comuni: GLP, MIT, LGPL, BSD e scegliere quello più adatto al tuo progetto.

    
risposta data 31.08.2011 - 14:57
fonte

Leggi altre domande sui tag