Posso usare temporaneamente le librerie GPL per la prototipazione e rendere il futuro codice sorgente chiusa?

23

Sto lavorando su un prototipo per un sistema software, che (almeno all'inizio) sarà closed source.

Per risparmiare tempo, sto pensando di usare (ovvero, collegare staticamente) una libreria che è sotto licenza GPLv3 , così posso testare rapidamente il mio progetto. Se distribuisco il software in questa fase, dovrei distribuire il codice sorgente insieme.

Cosa succede se non lo faccio, ma mi convinco che il mio sistema funziona, quindi sostituisco la libreria GPL con il mio codice prima di distribuirlo? Il risultato sarebbe "contaminato" dalla GPL?

Ho la sensazione che conservare la libreria GPL nella mia cronologia Git o meno possa fare la differenza .

    
posta Laurent S 07.03.2015 - 14:28
fonte

7 risposte

20

La GPL scrive :

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

Quindi questa condizione si applica solo se il tuo lavoro è "basato su" la libreria, che la licenza definisce come segue:

To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

Cioè, il tuo programma è "basato sulla" libreria se e solo se è un lavoro derivato secondo legge sul copyright. La definizione legale di tale termine varia leggermente tra le giurisdizioni e di solito non riguarda direttamente il software. Ad esempio, il Copyright Act degli Stati Uniti scrive:

A “derivative work” is a work based upon one or more preexisting works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work”.

Cosa significa per il software deve essere interpretato dai tribunali, sulla base di precedenti sentenze simili. Non ho familiarità sufficiente con la giurisprudenza pertinente nella vostra giurisdizione per dire con certezza in che modo un tribunale deciderebbe il vostro caso. Si potrebbe sostenere che "sostituire la libreria GPL con il proprio codice" è un atto di traduzione, in particolare se il codice è strongmente ispirato all'implementazione GPL. Anche il riutilizzo dell'API della libreria GPL potrebbe portarti in acqua calda (vedi Oracle vs Google ).

Se la risposta è importante per te, ti consiglio di richiedere una consulenza legale competente piuttosto che chiedere ad estranei su Internet.

    
risposta data 07.03.2015 - 18:59
fonte
23

Finché non rilascerai il software a nessuno mentre stai collegando alle librerie GPL, sei al sicuro. L'aspetto virale di GPL viene attivato solo se si distribuisce il software.

Sarebbe meglio se potessi trovare una biblioteca con una licenza più permissiva, ovviamente, come LGPL o APL2 o MIT.

    
risposta data 07.03.2015 - 15:23
fonte
8

Non penso che la tua domanda riguardi in realtà la GPL. Riguarda il prototipo e se verrà utilizzato in futuro come base per il sistema software consegnabile.

Se stai realizzando un prototipo "usa e getta" e non hai intenzione di riutilizzare alcun codice nel tuo sistema consegnabile, allora vai avanti e usa una libreria GPL.

Tre approcci che puoi prendere

Tuttavia, se hai intenzione di evolvere il prototipo (cosa che molti manager spingono per!) hai tre approcci che puoi adottare:

  1. Spostare le parti non core in applicazioni separate che comunicano con il core su JSON o un'API REST o altra lingua / libreria di Inter-Process Communication. Le tue parti non-core quindi possono essere anche GPL e puoi usare qualsiasi libreria GPL al loro interno.
  2. Progetta il tuo codice in modo che tu possa scambiare le librerie. Ciò significa creare una facciata che nasconde i dettagli di implementazione. Quando sei pronto per passare a una libreria proprietaria o alla libreria MIT / BSD.
  3. Non usare affatto il codice GPL.

Ti suggerisco di seguire il primo approccio perché hai un lavoro open source che puoi utilizzare in futuro come parte del tuo portfolio professionale.

Il secondo approccio è anche positivo perché è così che dovresti progettare il sistema in ogni caso, creando le funzioni / classi esatte di cui hai bisogno e stubendole fino a quando non hai la libreria o il codice personalizzato che riempie quella funzionalità.

    
risposta data 07.03.2015 - 16:41
fonte
5

Posso pensare a due aspetti da considerare con il tuo approccio. Il primo è semplice, non distribuendo il tuo progetto o (o come è GPLv3 , rendendolo disponibile per uso pubblico) mentre stai usando il codice rilasciato sotto GPL, è difficile vedere come ti verrà richiesto di distribuire il tuo codice sotto la licenza GPL anche sotto i termini di ridistribuzione.

Il secondo aspetto è probabilmente più significativo per te. Quando crei la tua implementazione per sostituire la libreria GPL, devi fare attenzione a non creare un lavoro derivato. Sebbene io sia sicuro di avere buone intenzioni, non copiando direttamente il codice sorgente, è più probabile che non copi parti significative dell'API della libreria.

Se si tratta di un prodotto commerciale, questo rischio deve essere considerato e valutato leggendo attentamente la licenza GPLv3 e in caso di dubbio chiedere un parere legale professionale.

    
risposta data 07.03.2015 - 18:26
fonte
4

Se hai intenzione di scrivere il tuo codice per sostituire il codice GPL, avrai un potenziale problema perché non stai scrivendo il codice in un ambiente pulito. Vorresti davvero avere qualcuno che non ha mai visto il codice GPL scrivere alcuna libreria sostitutiva. D'altra parte, se vuoi semplicemente scambiare una libreria GPL con una libreria già pubblicata che si trova sotto un'altra licenza, questo non è un problema, l'altra libreria era presumibilmente già scritta in un ambiente clean room.

    
risposta data 08.03.2015 - 01:12
fonte
2

Se fornisci l'accesso alle revisioni utilizzando il codice GPL, saranno completamente GPL. Ma tu non vuoi, dato che non sarebbe closed-source ...

Per ogni stato successivo che non utilizza più alcun codice GPL, che hai usato codice GPL qualche tempo prima è semplicemente irrilevante.

    
risposta data 07.03.2015 - 15:51
fonte
2

La GPL è attivata solo su distribuzione ... puoi fare tutto ciò che vuoi se non rilasci una versione modificata o un lavoro derivato.

I have a feeling that retaining the GPL library in my Git history or not may make a difference.

Se intendi pubblicare la tua fonte in un repository pubblico come GitHub , allora sì, potresti avere un problema. L'uso di git è irrilevante se è privato.

    
risposta data 08.03.2015 - 17:23
fonte

Leggi altre domande sui tag