SourceForge, CodePlex, GoogleCode e GitHub: quale scegliere?

Stimolato da una recente conversazione con Lorenzo, ho iniziato seriamente a cercare un code repository dove appoggiare i progetti open-source che di tanto in tanto sviluppo.

Di alternative per l’SCM (Source Code Management) ce ne sono diverse, e quelle che ho preso in considerazione sono state: CodePlex, GoogleCode, SourceForge, GitHub.

Alla fine, per ospitare i miei progetti, ho scelto SourceForge, nonostante i pessimi diritti che si arroga sul codice che ospitero’ nei loro server e l’indecisione, fino all’ultimo, con GitHub. Motivazioni principali l’ottima molto orientata allo sviluppatore nei servizi offerti (l’rsync per fare il mirror del repository e’ fantastico), l’ampio numero di SCM e DSCM supportati, la grande disponibilita’ di client nei principali IDE per gestire Subversion  e nonostante abbia influito in maniera impercettibile, il fatto che e’ il suo nome e’ stato, da sempre, sinonimo per l’hosting per progetti open source.

Se dovessi fare pero’ qualcosa in azienda, non ci penserei due volte a metter su un server con Git e tutto il resto, interfacce web ai progetti comprese.

Di seguito riporto le mie considerazioni personali su ognuno dei servizi esaminati, magari potrebbero tornare utili a qualcuno.

CodePlex

Made in Microsoft, la scelta e’ quasi scontata se si vogliono ospitare applicazioni realizzate per questo ambiente. Qui i termini del servizio che governano il tutto.

Pro

  • Startup del progetto facile e veloce, con una fase di creazione dietro le quinte e successiva pubblicazione (entro 30 giorni) di quanto fatto.
  • Viene offerto un servizio di donwload delle release del programma, un forum, un Issues tracker e feed RSS per ognuna delle sezioni del progetto.
  • Il codice puo’ essere gestito via Subversion e Team Foundation Server.
  • Approfondito controllo dei ruoli e dei permessi alle varie sezioni e azioni possibile nel contesto del progetto, che arrivano a gestire, ad esempio, chi puo’ aprire un nuovo ticket oppure creare una nuova release del programma.
  • Supporto agli strumenti di Continuous Integration come CruiseControl.NET.
  • Presenti alcune funzionalita’ di community sull’intero sito, come i progetti
    piu’ scaricati, una newsletter con le novita’ ed altro.
  • Pochi i diritti che Microsoft si prende sul codice caricato (il grassetto e’ mio): “However, by posting, uploading, inputting, providing or submitting (“Posting”) your Submission you understand and agree that you’re giving a license under your intellectual property rights to all authorized users, including the rights to download, copy, modify, distribute and repost, unless the project licenses specify otherwise. In addition, you’re giving Microsoft all the necessary rights to make your Submission(s) available on this site and to make improvements to the CodePlex site based on your suggestions
  • Microsoft is hosting the CodePlex site solely as a web storage site as a service to the developer community.“. L’unica che ha messo per iscritto una cosa del genere. Negli altri servizi analizzati, il perche’ il servizio e’ stato realizzato non viene mai esplicitato.

Contro

  • La licenza GPL v3 non e’ ancora supportata.
  • Ha solo il supporto a Subversion e Team Foundation Server.

GoogleCode

Tra la miriade di servizi offerti da Google, questi i termini del servizio.

Pro

  • Startup facile e veloce.
  • Viene offerto nativamente il servizio di donwload delle release del programma, un Wiki e un Issues Tracker, e la possibilita’ di agganciare al progetto una mailing list aperta su Google Groups e le statistiche di Analitycs.Il codice puo’ essere gestito via Subversion.
  • Posso scegliere anche la GPL v3 come tipo di licenza.
  • La policy sulla concessione dei diritti sui contenuti pubblicati e’, secondo me, accettabile (il grassetto e’ mio): “By submitting, posting or displaying Content on or through Google services which are intended to be available to the members of the public, you grant Google a worldwide, non-exclusive, royalty-free license to reproduce, adapt, modify, publish and distribute such Content on Google services for the purpose of displaying, distributing and promoting Google services.”

Contro

  • Ha solo il supporto a Subversion.
  • Il cambio dei termini del servizio puo’ essere notificato “by email, regular mail, or postings on Google services“. Quindi potrebbero cambiare e dovrei essere io ad andare a controllare regolarmente questi termini per vedere se c’è stata qualche modifica, senza ricevere nessuna forma di notifica diretta.
  • Il mio codice non sara’ accessibile da Cuba, Iran, Libya, North Korea, Sudan e Syria e tutti gli altri paesi sanzionati dallo United States Office of Foreign Assets Control.

GitHub

Strumento di grido per quanto riguarda progetti open source (l’ultimo che e’ stato migrato a questo sistema e’ stato quello relativo alle librerie QT). Qui i termini del servizio.

Pro

  • E’ un DSCM (Distributed Source Code Management), quindi permette di avere un SCM locale che si va a sincronizzare con un SCM su un server centralizzato.
  • Pagando qualcosina (a partire da 7 dollari al mese) si possono avere repository privati, oltre che pubblici.
  • Viene offerto un servizio di donwload delle release del programma, un Issues tracker, un wiki, la lista di tutti gli ultimi commit del progetto e un’integrazione per le donazioni fatte al progetto.
  • Il sito e’ molto ben fatto ed incentrato sulla caratteristica tipicamente collaborativa e di community che hanno i DSCM.
  • Non sembrano esserci particolari diritti garantiti a Logical Awesome LLC riguardo al codice ospitato su GitHub.

Contro

  • Per gli account gratuiti, lo storage non può eccedere i 300 Mb, anche se, da quanto scritto nella pagine con la politica di pricing, “The 300MB is a soft limit setup to prevent abuse of the service. If your open source project needs more space, email us, we’re happy to provide it.
  • C’e’ un limite di utilizzo di banda di 500 Mb al mese, oltre i quali il servizio puo’ essere sospeso a loro discrezione. Quando questo consumo rientrera’ nelle medie da loro stabilite, il servizio sara’ riabilitato.

SouceForge

Lo storico repository per progetti opensource, nato prima di tutti gli altri e che continua a godere di vita lunga e prosperosa, con un recente restyle grafico che l’ha reso anche abbastanza carino da vedere. Qui le condizioni di utilizzo, che prevedono un avviso per email in caso di modifiche.

Pro

  • Il codice puo’ essere gestito via Subversion, CVS, Git, Mercurial, Bazaar e possono essere abilitarli/disabilitarli in qualunque momento.
  • Posso effettuare backup via rsync dell’intero repository, contro eventuali perdite di dati da parte di SourceForge.
  • SourceForge e’ una vera community: statistiche sui progetti piu’ attivi, nomination sui migliori progetti e molto altro.
  • Possibilita’ di accettare donazioni direttamente dal sito di SourceForge, anche se in questo caso una piccola percentuale la terranno loro.

Contro

  • Ogni progetto che si vuole creare deve passare per l’approvazione del team di SourceForge, che potrebbe anche riservarsi il diritto di bocciarlo a sua discrezione. In generale, da quando viene spedita la richesta di approvazione, passano come minimo 2-3 giorni lavorativi prima di avere una risposta.
  • La policy sui contenuti pubblicati sono tra le piu’ pessime che ho visto (il grassetto e’ mio): “By submitting, posting or displaying Content on or through SourceForge.net, you grant Sourceforge, Inc. a worldwide, non-exclusive, irrevocable, perpetual, fully sublicensable, royalty-free license to use, reproduce, adapt, modify, translate, create derivative works from, publish, perform, display, rent, resell and distribute such Content (in whole or part) on SourceForge.net and incorporate Content in other works, in any form, media, or technology developed by Sourceforge, Inc., though Sourceforge, Inc. is not required to incorporate Feedback into any Sourceforge, Inc. products or services”. Se non ho capito male, possono rivendere il mio lavoro, anche se continuo a conservarne la paternita’.
  • La licenza GPL v3 non e’ ancora supportata.
  • Il mio codice non sara’ accessibile da Cuba, Iran, Libya, North Korea, Sudan e Syria e tutti gli altri paesi sanzionati dallo United States Office of Foreign Assets Control.

12 Comments

  1. A me non sembra che le policy di SourceForge siano “peggiori” di altre. In fondo chiedono soltanto (vedi il tuo grassetto) ciò che ciascuna licenza open source consente (GPL in primis, almeno la 2, la 3 non la conosco). O intendevi qualcos’altro?

  2. Credo che si riferisca al fatto che se io rilascio codice con una licensa che ne consente l’utilizzo per le sole applicazioni open source (con fini esclusivamente non commerciali, non ricordo al volo l’esatto codice della licenza), SF puo’ bypassare la mia licenza e vendere prodotti che usano il mio codice in virtù del license agreement che consente loro condizioni ‘di favore’.
    Stessa cosa puo’ accadere con le policy in Google Code (vedi sempre frasi evidenziate in grassetto) anche se meno ‘spudorata’, la sostanza è la stessa.

  3. Il software libero, e l’open source in generale, prevede che il software sia utilizzabile, studiabile, modificabile e ridistribuibile liberamente da chiunque (posto ovviamente il copyright delle versioni originali e delle eventuali modifiche, altrimenti sarebbe pubblico dominio). Non si pongono limiti sulla ridistribuzione anche commerciale. Io potrei, per esempio, scaricarmi Debian (o qualunque altro FOSS), masterizzarmi i DVD e venderli, il tutto rimanendo perfettamente aderente alle licenze. Certo, chiunque ha il diritto di procurarselo in altro modo, ma lo si può fare. La clausola è talmente forte che un software “free for non commercial use only” non può essere considerato FOSS.
    Quindi, Alfredo, sappi che potrei anche mettermi a rivendere i tuoi software! :D
    Probabilmente SF usa quella formula per indicare che sono ammessi solo software con quel tipo di licenza (cosa tra l’altro indicata chiaramente anche in altri posti non legalesi).

  4. [b]non-exclusive, irrevocable, perpetual, fully sublicensable, royalty-free license to use[/b]

    Un software GPLv2, e ancora di piu’ GPLv3 (ma SourceForge quest’ultima licenza non la supporta) puo’ essere certo venduto, ma deve conservare licenza GPL e deve attribuire la proprieta’ del codice a chi ne e’ il proprietario… e anche lavori derivati da quel codice devono conservare lo stesso tipo di licenza (ecco perche’ si dice anche che la GPLv2 e’ una licenza virale)

    Con [b]fully-sublicensable[/b] secondo me SourceForge vuole dire che lei puo’ anche fare proprio un tuo software rilasciato con licenza GPL, attribuirgli un’altra licenza commerciale e rivenderlo, facendocisi i suoi comodi…

    Forse sbaglio io ad interpretare?

  5. Ciao, ho trovato davvero molto molto utile il tuo articolo.
    Ci sono una miriadi di siti e in questa giungla serviva un’analisi pro/contro. Io non scrivo codice per progetti esterni, ma solo per progetto universitari e un hosting mi serve.

    Io userò google code solo per comodità e x la tua analisi è un buon servizio. La cosa che non so ancora scegliere è la licenza, poco male la scelta tanto lo uso io il codice, ma vorrei capire cosa scelgo.
    GoogleCode offre un sacco di tipi di licenze, te sapresti indicarmi i principi generali, o quale secondo te è la più giusta per il codice sorgente.

    Grazie
    Ciao FAbio

  6. Guarda, direi che in primis devi scegliere tra due “orientamenti”: il primo punta verso un codice che non potra’ mai essere utilizzato in progetti commerciali, il secondo invece ne permettera’ l’utilizzo.

    Google, ad esempio, sta rilasciando molti suoi prodotti con licenza Apache 2.0, appartenente al secondo orientamento che ti ho detto. Quindi se io uso una loro libreria, posso farlo anche in un progetto con una licenza di copyright di tipo commerciale, senza redistribuzione del codice sorgente, modifiche ecc ecc…

    Il kernel linux, invece, e’ rilasciato con licenza GPL ed appartiere al primo orientamento, quindi non potro’ mai fare una versione di linux “personalizzata”, montarla sul mio device e venderlo vietandone la diffusione, vietandone l’accesso al codice sorgente ecc…

    in soldoni, e a parole molto semplici, la differenza maggiore e’ quindi questa. vuoi che quello che rilasci sia utilizzabile anche in prodotti “commerciali”, oppure sei un purista che crede prepotentemente nei principi del software libero?

    A te la scelta, a questo punto… io, personalmente, sto rilasciando alcune librerie che sviluppo con licenza apache (si sa mai che qualcuno le usi, gli piacciano, contribuisca al loro sviluppo e magari mi ingaggi pure per qualche lavoretto), mentre software “completi”, tipo quelli che realizzo per smarthpone, e che magari usano quelle librerie, con licenza gpl 3…

  7. Non ti ho più ringraziato della riposta che mi hai dato :D

    Grazie mille. Dal tuo consiglio ho scelto:

    – Piattaforma Hosting: Google Code
    – Licenza progetti: GPL 3

    anche se la licenza mi ha dato da pensare, il tuo commento mi ha fatto puntare su gpl.

    Già che ci sono avrei due dubbi sulla piattaforma di google:

    – c’è modo di sapere se ci sono stati checkout del progetto, o il numero di download effettuati?
    – secondo te è buona cosa venire indirizzati nel motore di ricerca di google, invece che lasciare “nascosti” i progetti e lasciare solo al creatore dire se vuoi essere immesso in un motore di ricerca?

    Comunque anche se non ho risposta, ringrazio del commento e dell’articolo è stato davvero utile.

    Ciao FAbio :)

  8. – c’è modo di sapere se ci sono stati checkout del progetto, o il numero di download effettuati?
    non saprei…

    – secondo te è buona cosa venire indirizzati nel motore di ricerca di google?
    se il progetto e’ open source, perche’ no? a me sono serviti diversi snippet di codice che mi ha “trovato” google scrivendo certe classi o certi nomi di metodi… forse gli autori neanche hanno pensato che potevano fornirmi questo aiuto, ma come “side effect” si e’ rivelato molto utile!

  9. Salve a tutti,

    perdonate l’ignoranza, ma Sourceforge per me può prendersi tutti i diritti che vuole e rivendere senza darmi un centesimo, ma la cosa importante per me è: Conserva il nome dell’autore del software in tutte le versioni che modifica, distribuisce, vende, et cetera??? Oppure può escludermi del tutto dalla cosa?

    Grazie.

  10. Ciao UnoSD. Innanzitutto ti consigli di andare a rivedere i TOS di Sourceforge, l’articolo risale a quasi 3 anni fa e le cose potrebbero essere cambiate nel frattempo.
    Per rispondere alla tua domanda, ti direi che, secondo la GPLv2, i direitti di paternita’ del codice devono essere rispettati, quindi va citato l’autore e tutto quello che la licenza impone

  11. Salve Alfredo, grazie mille per la risposta, durante l’attesa sono andato su un canale IRC su Freenode (#fsf e #gnu) e mi hanno detto ciò che tu mi hai confermato. Inoltre, visto che l’articolo riguarda l’hosting di codice open source, riporto che mi hanno anche consigliato GNU Savannah e Gitorious (dicendo che si curano maggiormente della “freedom”), voi cosa ne pensate? (P.s. Alla fine, vista la fama e Ssh ho scelto SourceForge ma non ho visto se effettivamente erano migliori)

Leave a Reply