Riconoscimento del creatore per un progetto modificato (sotto GNU GPL)

2

Ho modificato un software esistente (che era sotto la licenza GPL). Sul mio posto di lavoro, avevano bisogno di usare il software, ma avevano bisogno di alcune modifiche (come nuove funzionalità, diversa struttura, modifica delle caratteristiche e rimozione di funzionalità inutilizzate).

Sto per finire questo, ma non vorrei mancare di rispetto al creatore originale non rispettando la licenza. Ho letto diverse fonti come la pagina ufficiale della licenza GPL, la pagina ufficiale del software e molte altre, per sapere che cosa mi chiede la licenza.

Tuttavia, ho ancora alcuni punti non chiari, come:

  1. Devo informare il creatore originale di come sto usando il programma e delle mie modifiche?
  2. Nella licenza inclusa nel progetto, dovrei indicare la fonte originale? Devo anche renderlo visibile in modo che tutti gli utenti sappiano che questo progetto è stato modificato solo da me?
  3. Devo lasciare tutto il codice originale (commentato) in modo che possa essere visto ciò che ho cambiato?
  4. Devo preparare un rapporto che indichi quali lingue, librerie e quadri sono stati utilizzati e cosa fa il progetto. Devo riconoscere il creatore qui?

Non voglio davvero essere disonesto, ma uno dei miei capi mi ha chiesto di modificare un progetto esistente per risparmiare un po 'di tempo e di sfruttare i codificatori professionali con più esperienza di me. Mi ha chiesto di non dirlo a nessuno. Un'altra persona molto importante nella compagnia potrebbe essere contro di essa una volta scoperto. Non voglio mentire e dichiarerò chiaramente il proprietario originale affinché tutti possano vederlo, se necessario.

Inoltre, qualunque sia il caso, intendo accreditare il proprietario nel codice sorgente, in modo che almeno altri programmatori conoscano l'origine del progetto. E se me lo chiedono, non negherò di aver modificato un progetto esistente. Tuttavia, sarebbe davvero problematico riconoscere il proprietario per l'occhio del pubblico o nelle relazioni consegnate ai responsabili del progetto, specialmente dal momento che non gli hanno nemmeno chiesto nulla.

    
posta Lazarus Rising 20.02.2016 - 11:41
fonte

2 risposte

3

Nessuna di queste cose è necessaria, ma 1, 2 e forse anche 4 sono probabilmente buone idee. 3 probabilmente no.

  1. Devo informare il creatore originale di come sto usando il programma e delle mie modifiche?

Non c'è assolutamente alcun obbligo di farlo, dal momento che la GPL non consente tale requisito .

Se dovresti è una cosa più soggettiva, ma a meno che il tuo progetto non sia un lavoro militare top secret, non vedo alcun motivo per non dirlo. Generalmente i creativi traggono vantaggio dal sapere quando il loro lavoro è stato utile a qualcuno e sapere esattamente quali parti hai sentito il bisogno di aggiungere, modificare o rimuovere possono essere informazioni molto utili se e quando pensano di aggiornare il loro programma.

  1. Nella licenza inclusa nel progetto, dovrei indicare la fonte originale? Devo anche renderlo visibile in modo che tutti gli utenti sappiano che questo progetto è stato modificato solo da me?

Tecnicamente "la licenza" deve essere GPL (possibilmente insieme ad altre licenze), e che significa GPL non modificato , quindi sicuramente non modificare la licenza per indicare la fonte originale.

È necessario indicare in un file separato (in genere il readme) che tutto questo codice è concesso in licenza sotto licenza GPL. Ci sono anche buoni motivi per dichiararlo in ogni singolo file sorgente, anche se non è legalmente necessario.

Sono abbastanza sicuro che non sia necessario menzionare la fonte originale del codice ovunque (vedi n. 1), ma dal momento che devi dichiarare che il codice è GPL, potresti anche menzionare la fonte originale a fianco quella dichiarazione.

  1. Devo lasciare tutto il codice originale (commentato) in modo che possa essere visto ciò che ho cambiato?

Non riesco a pensare a nessuna ragione per cui sarebbe necessario o desiderabile. Il riconoscimento della fonte originale è sufficiente per chiunque desideri capire quali sono tutte le modifiche. Suggerirei alcune frasi nel tuo readme riassumendo le modifiche se ritieni che siano informazioni importanti.

Lasciare una quantità enorme di "codice morto" in giro sarebbe anche un fastidio significativo per chiunque mantenga la tua versione modificata (incluso te stesso), quindi sicuramente non lo farei.

  1. Devo preparare un rapporto che indichi quali lingue, librerie e quadri sono stati utilizzati e cosa fa il progetto. Devo riconoscere il creatore qui?

Ancora una volta, non è obbligatorio farlo (vedi n. 1). Personalmente includerei i creatori se si trattasse di un rapporto particolarmente lungo o dettagliato, ma normalmente chiamerei semplicemente le librerie e collegherei ai loro repository. Se questa informazione è appropriata per il tuo rapporto è qualcosa che dovrai decidere (anche se sono curioso del perché pensi che sarebbe "problematico" farlo).

    
risposta data 20.02.2016 - 14:27
fonte
0

Sono d'accordo con tutto ciò che viene detto in Ixrec risposta . Il punto che voglio aggiungere è che commentare il codice è quasi sempre una cattiva idea. Rende il codice meno leggibile e né la vecchia né la nuova versione sono facilmente visibili.

Invece, se senti la necessità di rendere più chiaro ciò che hai cambiato, puoi pubblicare il codice originale, non modificato insieme a una diff delle tue modifiche. L'utente finale può quindi applicare la patch (preferibilmente tramite un Makefile fornito). Se una versione stabile dell'originale è prontamente disponibile, potresti anche pubblicare solo il diff e chiedere ai tuoi utenti di scaricare le fonti originali. Questo potrebbe essere di particolare interesse quando i tuoi utenti si fidano dell'autore originale più di te. Potrebbero voler rivedere il tuo diff (se è relativamente piccolo) ma non leggere tutto il codice originale.

Ad esempio, se stai per risolvere un problema molto urgente in SQLite , potresti pubblicare solo questo.

sqlite3.diff

16918c16918
<   double r;
---
>   double r = NAN;  /* always initialize variables */
16923c16923
<   }else if( sqlite3StrICmp(zDate,"now")==0){
---
>   }else if( sqlite3StrICmp(zDate,"current")==0){

Makefile

sqlite3-new: sqlite3-new.c
    ${CC} -o $@ ${CPPFLAGS} ${CFLAGS} $< ${LIBS}

sqlite3-new.c: sqlite3.c sqlite3.diff
    patch -o $@ $^

sqlite3.c:
    wget 'https://www.sqlite.org/2016/sqlite-amalgamation-3110000.zip'
    unzip sqlite-amalgamation-3110000.zip
    cp sqlite-amalgamation-3110000/sqlite3.c $@

E make sqlite3-new farà la cosa "giusta".

(Si prega di non scrivere script di compilazione che scaricano elementi casuali da Internet senza il consenso dell'utente e senza nemmeno verificarne il download nella vita reale!)

    
risposta data 20.02.2016 - 15:56
fonte

Leggi altre domande sui tag