Best practice per il rilascio di un'applicazione PHP open source


10

Sono uno sviluppatore PHP da vivere, ma non ho mai lavorato o contribuito a progetti open source prima d'ora.

Sto sviluppando un CMS per uso personale. Ho un prototipo funzionante e penso che una volta pronto (probabilmente un paio di mesi) questo potrebbe essere qualcosa a cui la comunità PHP sarebbe interessata.

Sono uno sviluppatore abbastanza fiducioso ma ci sono aree in cui le mie conoscenze mancano, soprattutto quando si tratta di problemi open source:

  • Qual è il modo migliore per pubblicizzare il progetto e / o trovare altri che potrebbero essere interessati a collaborare
  • Il mio CMS è alimentato da CakePHP e fondamentalmente si trova come un livello sopra di esso. Ho biforcuto il progetto CakePHP su GitHub: in precedenza ho usato i sistemi di controllo della versione (SVN) ma sono abbastanza nuovo in GIT, quindi voglio essere sicuro di fare le cose nel "modo migliore"
  • Come posso conoscere i problemi di licenza? Quale licenza open source sarebbe la migliore per la mia app? Inoltre, il mio progetto prende in prestito molti altri progetti open source, ad esempio ho sezioni di codice (che ho fortemente modificato) ma con avvisi di copyright / licenze in atto - Non ho idea di quali siano i miei obblighi in termini di mantenendo questi dentro

Questi sono solo un paio di esempi delle domande che ho, ma sento che ci devono essere delle risorse là fuori che potrebbero essermi utili. Qual è il posto migliore per iniziare, quali sono le migliori comunità / siti là fuori che trattano questi problemi? Ho dato un'occhiata in giro ma non sono stato in grado di inventare molto ...


Hai avuto un paio di buone risposte sulle cose relative alle licenze, qualche idea sulle altre domande? Forse avrebbe dovuto dividerlo in un paio di post!
user916336,

Risposte:


5

Non sono un avvocato, ma ci proverò.

CakePHP è concesso in licenza con la licenza MIT , il che significa sostanzialmente che consente il riutilizzo all'interno del software proprietario a condizione che la licenza sia distribuita con quel software. È compatibile con le licenze GPL , sotto cui sono stati rilasciati molti progetti open source.

Per quanto riguarda gli altri progetti che "prendi in prestito", dovrai verificare i loro tipi di licenza e la loro compatibilità tra loro e il tipo di licenza che decidi di utilizzare. Se qualcuno di loro usa una licenza GPL , dovrai rilasciare anche con GPL, come i termini dello stato della licenza

La GPL è la prima licenza copyleft per uso generale, il che significa che le opere derivate possono essere distribuite solo alle stesse condizioni di licenza.

...

La GPL è la prima licenza copyleft per uso generale, il che significa che le opere derivate possono essere distribuite solo alle stesse condizioni di licenza.

Il mio suggerimento è di rilasciare sotto la licenza GNU GPL v3 in quanto ti dà adeguati diritti di proprietà sul tuo lavoro, consentendo agli altri di utilizzarlo potenzialmente sia in progetti commerciali che aperti. Ricorda, tuttavia, che le licenze dei progetti "presi in prestito" devono essere compatibili .


Per quanto riguarda le migliori pratiche con Git e Github, utilizzare git submoduleper includere altri progetti nella propria libreria. È meglio che includere direttamente i file poiché non si consiglia il lavoro come proprio.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init

git submodule è anche qualcosa su cui non sono chiaro. Ad esempio, il mio progetto utilizza l'interfaccia utente jQuery e jQuery: come posso includerlo come sottomodulo poiché l'origine su GitHub è suddivisa in molti file e cartelle. Ho avuto la stessa cosa con HTMLPurifier che sto usando anche. I file di cui ho bisogno sono in una sottocartella, ma con git submodule sembra che non abbia altra scelta che includere un sacco di cose extra che non mi serviranno, che ingombrano inutilmente il mio progetto, o come dici tu commetti il ​​lavoro di qualcun altro come il mio!

Come è la natura delle licenze, non è possibile suddividere e includere solo i file desiderati. Dovresti includere l'intero progetto così come è impacchettato. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
adlawson,

Altri però non sembrano farlo: prendi Wordpress, sembrano aver semplicemente bloccato i file minimizzati di cui hanno bisogno da jQuery in una cartella e li hanno impegnati: github.com/wordpress/wordpress/tree/master/wp-includes/js /…

1
WordPress utilizza SVN per il controllo della versione. Il loro repository Github è semplicemente uno specchio. Per quanto ne so, in SVN non esiste alcuna funzionalità di "sottomodulo", quindi non avevano alcuna opzione se non quella di consigliarlo. In un'altra nota, non prendere WordPress come esempio di best practice.
adlawson,

A meno che non mi manchi qualcosa, non sembra esserci un modo per farlo nel caso di jQuery. Dai un'occhiata al loro repository github.com/jquery/jquery , sono solo centinaia di singoli file .js e uno script di compilazione, quindi non posso includerlo nel mio progetto senza semplicemente scaricare una copia da jquery.com e commetterlo da solo , o mi sbaglio?

0

Dai un'occhiata a questa guida di Eric S. Raymond (vale la pena leggere anche il resto del libro).

Personalmente, non me ne preoccuperei molto: non farai soldi direttamente da questo, e non lo è nemmeno nessun altro, dato che esiste già un'abbondanza di eccellenti CMS generici gratuiti. Ti suggerisco di utilizzare la licenza più liberale che puoi (MIT o BSD), a meno che tu non prenda in prestito codice che è sotto una licenza virale (in genere GPL o una varietà di essa), nel qual caso sei costretto a quella licenza in un modo o nell'altro.

Assicurati di leggere attentamente tutte le licenze delle librerie e degli snippet che stai utilizzando; dovrebbero indicare se ti è permesso ridistribuire e modificare il codice e se devi includerli in qualsiasi lavoro derivato (la maggior parte delle licenze lo richiede e, anche per quelli che non lo fanno, l'attribuzione è il minimo che puoi fare per ringraziare il autori originali per il loro lavoro).

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.