Il codice sorgente rilasciato sotto GPL deve essere leggibile dall'uomo?


Risposte:


37

La GPL richiede che sia la versione preferita per la modifica. Se normalmente scrivi in ​​codice offuscato e apporti le modifiche direttamente al suo interno, è la fonte di GPL. Se lavori su una versione leggibile e poi la esegui su qualsiasi tipo di offuscatore, la versione leggibile è ciò che la GPL considera la fonte.

La "leggibilità" è soggettiva e non definita. È legale rilasciare codice veramente scadente, difficile da comprendere, sotto la GPL. Non è legale prendere la versione in cui si apportano modifiche, rimuovere lo spazio bianco o renderlo meno leggibile, e chiamarlo come fonte sotto GPL.


1
molto interessante, grazie. C'è una parte particolare della licenza che lo afferma?
Armand,

12
GPLv2, Termini e condizioni, dalla clausola 3: "Il codice sorgente di un'opera indica la forma preferita dell'opera per modificarla.".
David Thornley,

4
Questa limitazione si applica solo ai licenziatari. Per il tuo codice (nessun codice GPL esterno inserito) puoi offuscare quanto vuoi e ancora mettere l'adesivo GPL su di esso (per garantire i diritti ad altri). nVidia ha fatto questo con il codice del driver indietro nel tempo (1998 o giù di lì)
Patrick Georgi

2
Detto questo, non ha senso "schiaffeggiare un adesivo GPL" su un'opera in cui non si fornisce codice sorgente utilizzabile, come nell'esempio nVidia. Potresti anche aver usato una licenza proprietaria. Chiaramente nVidia voleva essere visto come condividere il proprio codice senza effettivamente condividere il proprio codice.
thomasrutter,

1
Solo per curiosità. Cosa succede se lavori in un editor proprietario che salva l'origine in una forma crittografata? Teoricamente hai il codice nel modo in cui lavori, tuttavia, nessun altro potrebbe lavorarci perché è uno strumento proprietario a cui nessuno ha accesso.
Aidiakapi,

6

Prendendo la GPL v3, nella sezione 1 hai:

"Sorgente corrispondente" per un'opera in forma di codice oggetto indica tutto il codice sorgente necessario per generare, installare e (per un'opera eseguibile) eseguire il codice oggetto e modificare l'opera, inclusi gli script per controllare tali attività.

Se i commenti e lo spazio bianco fossero eliminati, così come i nomi delle funzioni e delle variabili cambiassero, non saresti in grado di modificare ragionevolmente il lavoro.

Inoltre:

La fonte corrispondente per un'opera in forma di codice sorgente è quella stessa opera.

Quello stesso lavoro, non un lavoro alterato.

Quindi, per chiarire il mio punto precedente, il codice sorgente deve essere inalterato, presumo che la scrittura umana == lettura umana. Ma sì, potresti scrivere direttamente in ciò che potrebbe essere considerato non leggibile dall'uomo.


4

La domanda non include alcune informazioni critiche. Se sei l'unico autore, puoi rilasciare il tuo codice con qualsiasi licenza tu voglia (inclusa la GPL) senza necessariamente seguire tutte le sue regole. Quindi potresti spedire il codice in una forma che non è preferita per modificarlo e non violare alcuna legge sul copyright. Se gli altri possano quindi estendere il tuo codice nello spirito di essere sotto una licenza di software libero è discutibile, quindi pochi potrebbero tentare.

Tuttavia, la maggior parte delle volte non sarai l'unico autore di un'opera. Sfrutterai il codice esistente creando un'opera derivata. Tale opera deve seguire le regole combinate del suo lignaggio o non avrai il permesso di distribuirlo senza violare il copyright.

Per chiarire questo, ecco alcuni esempi (IANAL):

  • Se usi una libreria GPL nel tuo codice, non ti sarebbe permesso spedire il tuo codice sorgente solo in forma offuscata a meno che (come scrive David Thornley) che sia effettivamente il modulo in cui lo scrivi e lo modifichi.
  • Se usi una libreria LGPL nel tuo codice, ti sarà permesso spedire il tuo codice sorgente solo in forma offuscata. Questo perché LGPL richiede solo di essere in grado di utilizzare il lavoro che utilizza la libreria con una versione più recente della libreria.
  • Se estendi una libreria LGPL, questo sarebbe come il caso GPL, e dovresti spedire codice non offuscato (di nuovo a meno che non sia così che lo modifichi effettivamente).

1
devi seguire tutte le regole di una licenza, indipendentemente da chi possiede il copyright. Se decidi di voler utilizzare la tua libreria JS sul tuo sito Web e di rilasciarla anche sotto licenza GPL, ti consigliamo di farlo separatamente. Questa domanda non riguarda la LGPL, anche se se restrizioni simili si applicano alla LGPL in quanto GPL riguarda la leggibilità del codice, sarebbe utile menzionarlo qui.
Armand,

@Alison: le condizioni di licenza si applicano a chi utilizza (e ridistribuisce, in questo caso) i lavori, non a quello che lo ha originariamente creato e concesso in licenza all'utente.
Paŭlo Ebermann,

1
@Alison non è d'accordo. Se sei l'unico proprietario dell'opera, puoi riconsacrarla a piacimento. Pertanto è possibile distribuirlo in base ai termini di (licenza magica non specificata qui) e consentire ad altri di ridistribuirlo in base ai termini della GPL: la GPL aggiunge diritti solo per consentire ad altri di ridistribuire opere derivate dalla propria. Naturalmente questo non è uno scenario probabile, come se non credessi nella GPL e fossi l'unico proprietario, non lo useresti.
Michael Urman,

Non è necessario spedire il proprio codice sorgente che utilizza una libreria LGPL, a condizione che la lingua consenta i binari. Devi spedire ciò che consentirebbe a un utente di modificare la parte LGPLed e ricostruire l'app (sebbene GPLv2 ti consenta di impedire all'utente di installare la versione modificata). Se spedisci la fonte, per necessità o convenienza, potrebbe essere offuscata.
David Thornley,

Buon punto. Modificherò il mio post per non dire più che la LGPL non pone requisiti sul lavoro che lo utilizza.
Michael Urman,
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.