Domanda

Sto utilizzando una libreria LGPL nel mio codice. Per le mie esigenze, ho bisogno di modificare il codice nella libreria.

Come faccio a contrassegnare il file jar che contiene il codice modificato? Alcuni file txt nel vaso? In questo caso, quello che faccio a scrivere nel file txt?

I includerà nel contratto di licenza che stiamo distribuendo una versione modificata del vaso, ma la mia domanda riguarda la marcatura il vaso stesso.

È stato utile?

Soluzione

La risposta breve: evitare il problema

Se è stato corretto un bug, o aggiunto una funzione perché non sottopone di nuovo agli autori originali per mezzo di una patch? Se lo accettano, la prossima versione della libreria includerà le correzioni e non sarà necessario preoccuparsi di spedizione di un libreria modificata! Condividere le tue modifiche e / o migliorie alla biblioteca è l'essenza della licenza, temporaneamente utilizzando una versione leggermente modificata della libreria, mentre si è in attesa per i miglioramenti presentati è abbastanza pratica comune (vedi cose su rami del fornitore). Entrare a far parte della comunità di sviluppo significa che non sei più la spedizione di una versione 'modificata' della biblioteca, ma contribuendo attivamente i miglioramenti alla libreria originale per il bene comune.

La risposta lunga: LGPL versione 3.0

Dalla versione 3.0 del LGPL stesso :

  
      
  1. convogliamento versioni modificate.
  2.   
     

Se si modifica una copia della Biblioteca, e, nelle vostre modifiche, un impianto fa riferimento a una funzione o dati che devono essere forniti da un'applicazione che utilizza l'impianto (non come un argomento passato quando l'impianto viene richiamato), allora si può trasmettere una copia della versione modificata:

     
      
  • a) ai sensi della presente Licenza, a condizione che si fanno uno sforzo in buona fede per assicurare che, in caso di un'applicazione non fornisce la funzione o di dati, l'impianto funziona ancora ed esegua qualsiasi parte della propria funzione abbia ancora senso, o
  •   
  • b) sotto la GNU GPL, con nessuna delle autorizzazioni aggiuntive di questa Licenza applicabili a quella copia.
  •   

Finché si attenga con il resto del testo della licenza, non è necessariamente bisogno di 'segno' il vaso stesso, con un file di testo o in altro modo. Per motivi di compilazione, è possibile seguire il suggerimento di extraneon e utilizzare un nome di vaso leggermente diverso. Si potrebbe utilizzare un fornitore ramo o qualcosa di mantenere le differenze tra il modifiche e la libreria originale. Qui si e ' biforcano ' il progetto, creare il proprio lavoro derivato - il essenza qui è quello di condividere le modifiche e miglioramenti alla sorgente con il mondo.

La risposta lunga: LGPL Versione 2.1

A partire dalla versione 2.1 del LGPL stesso :

  
      
  1. È possibile modificare la propria copia o copie della Libreria o di parte di esso, creando perciò un'opera basata sulla Libreria, e copiare o distribuire tali modifiche o tale opera secondo i termini del precedente comma 1, a condizione che anche soddisfare tutte queste condizioni:

         
        
    • a) L'opera modificata deve essere a sua volta una libreria software.
    •   
    • b) È necessario causare i file modificati per portare indicare chiaramente che si è modificato i file e la data di ogni modifica.
    •   
    • c) Bisogna fare in modo tutto il lavoro per essere concesso in licenza a titolo gratuito ad ogni terza parte secondo i termini della presente Licenza.
    •   
    • d) Se un impianto della Libreria modificata si riferisce a una funzione o una tabella di dati che devono essere forniti da un programma applicativo che utilizza l'impianto, diverso dal passaggio di argomenti quando la funzionalità viene invocata, quindi è necessario fare una sforzo in buona fede per assicurare che, nel caso di un'applicazione non fornisca tale funzione o tabella, l'impianto funziona ancora ed esegua qualsiasi parte della propria funzione abbia ancora senso.   (Ad esempio, una funzione di una libreria per calcolare radici quadrate ha uno scopo che è interamente ben definita indipendente dall'applicazione. Pertanto, sottosezione 2d richiede che qualsiasifunzione fornita o tabella utilizzata da questa funzione deve essere opzionale:. se l'applicazione non la fornisce, la funzione radice quadrata deve comunque calcolare radici quadrate)
    •   
  2.   

In sostanza devi dire: Hey qui è la libreria 'foo', una versione modificata della libreria 'bar', qui è possibile utilizzare la mia versione di 'foo' library - è troppo è disponibile sotto LGPL2.1. Gli avvisi di spicco sono di solito eseguite all'inizio del file sorgente modificati nella licenza LGPL commento al blocco. Anche in questo caso vostro sono biforcano biblioteca.

Altri suggerimenti

Dare il vaso un nome diverso. Le classi all'interno avranno gli stessi nomi, quindi il codice a seconda che non avrà problemi a trovare (se il nuovo vaso è sul classpath).

E 'naturalmente sempre saggio per documentare le modifiche con l'aggiunta di alcune informazioni nel file manifesto, e forse anche un file changelog nel vaso stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top