View Full Version : [Python/Licenza]Costruire software commerciale con python
ingframin
18-05-2011, 13:42
Buon giorno,
ponog una questione un po'complicata stamattina.
E' possibile costruuire software commerciale con python ed alcune sue librerie
senza dover per forza diffondere i sorgenti?
Se io scrivo un programma usando una libreria con licenza GPL devo diffondere i sorgenti della libreria o del mio programma?
In particolare come mi devo comportare con pySide?
Atre librerie che mi lasciano perplesso sono Scipy e Numpy, non riesco a capire se posso usarle senza dover pagare royalties o no :muro:
Se una libreria che usi è GPL allora il tuo programma deve essere rilasciato con una licenza compatibile con la GPL che, per quanto ne so, include un tot di formule che hanno il comune denominatore della disponibilità pubblica del sorgenti (in allegato al programma o pubblicati sul web e - credo - liberamente disponibili a semplice richiesta)
Sia Numpy che Scypi sono (invece) BSD, quindi puoi rilasciare il programma che ne faccia uso con una licenza closed-source.
Da quanto pubblicato sui relativi siti, nessuna delle due richiede il pagamento di alcunchè.
cdimauro
18-05-2011, 14:03
Buon giorno,
ponog una questione un po'complicata stamattina.
E' possibile costruuire software commerciale con python ed alcune sue librerie
senza dover per forza diffondere i sorgenti?
Sì.
Se io scrivo un programma usando una libreria con licenza GPL devo diffondere i sorgenti della libreria o del mio programma?
Se la libreria è dinamica no, perché la referenzi "dall'esterno" (es. una .dll o un .so).
Se è statica (quindi inclusa nel codice del tuo programma), sì.
Qualcuno mi corregga se ho detto una boiata. Io la ricordo così.
In particolare come mi devo comportare con pySide?
E' LGPL, puoi includerne i binari ed evitare di rilasciare il codice.
Atre librerie che mi lasciano perplesso sono Scipy e Numpy, non riesco a capire se posso usarle senza dover pagare royalties o no :muro:
Sono entrambe BSD, quindi puoi farci sostanzialmente quello che vuoi (anche modificarle e usarle nei tuoi binari senza rilasciare i sorgenti).
Guarda comunque la licenza, perché magari è richiesto di includere da qualche parte il nome degli autori o roba del genere.
Se la libreria è dinamica no, perché la referenzi "dall'esterno" (es. una .dll o un .so).
Se è statica (quindi inclusa nel codice del tuo programma), sì.
Qualcuno mi corregga se ho detto una boiata. Io la ricordo così.
Il collegamento dinamico dovrebbe essere il caso che differenzia le LGPL e la GPL con eccezione classpath dalla GPL.
Se è GPL, non fa differenza, se è LGPL/GPL+Classpath allora il limite alla "viralità" è proprio lì.
cdimauro
18-05-2011, 20:24
La FSF afferma che anche il linking rende un programma "derivato", il che personalmente mi sembra una bestialità.
Comunque la questione è controversa. Prova ne è la presenza di driver closed e proprietari, come quelli di nVidia, in sistemi come Linux che sono GPL.
In ogni caso per mettersi al sicuro basta tenersi bene alla larga da licenze liberticide come la GPL, e si risolve il problema alla radice.
ingframin
18-05-2011, 22:31
Sono fregato allora, volevo usare pyVISA ma è rilasciato come GPL :muro: :cry:
mi accodo a questa discussione per una domanda che non riguarda la licenza, bensi python..
Se sviluppo un sw con python + pyqt(o pyside), per esempio, e lo voglio distribuire senza che sia visibile il codice sorgente, come posso fare?
In più, come posso integrare le varie librerie dentro un unico pacchetto da distribuire, in modo da non dover forzare l'utente a ulteriori installazioni?
Grazie per le risposte :)
cdimauro
19-05-2011, 06:01
mi accodo a questa discussione per una domanda che non riguarda la licenza, bensi python..
Se sviluppo un sw con python + pyqt(o pyside), per esempio, e lo voglio distribuire senza che sia visibile il codice sorgente, come posso fare?
Questo è proprio un problema di licenze, invece.
Le PyQT sono GPL, per cui sei costretto a rilasciare i sorgenti. Se usi PySide no, perché sono LGPL.
In più, come posso integrare le varie librerie dentro un unico pacchetto da distribuire, in modo da non dover forzare l'utente a ulteriori installazioni?
Grazie per le risposte :)
Puoi usare Py2Exe che è molto usato per creare eseguibili standalone. Oppure PyInstaller che è un prodotto nuovo per fare sostanzialmente la stessa cosa.
Questo è proprio un problema di licenze, invece.
Le PyQT sono GPL, per cui sei costretto a rilasciare i sorgenti. Se usi PySide no, perché sono LGPL.
Puoi usare Py2Exe che è molto usato per creare eseguibili standalone. Oppure PyInstaller che è un prodotto nuovo per fare sostanzialmente la stessa cosa.
Grazie per la risposta :)
Penso che proverò PyInstaller, che a quanto scritto nel sito, può generare eseguibili per tutte le piattaforme.
Una domandina: premetto che non ci ho ancora provato, ma usando PySide (LGPL) come posso impachettare il tutto (programma + librerie) senza che sia necessario che le librerie varie (PySide in questo caso) siano installate nel computer dell'utente? Lo fa PyInstaller in automatico? :)
cdimauro
19-05-2011, 20:11
Sì, fa tutto lui. Hai un solo eseguibile che si porta dietro tutto quanto.
Quando viene lanciato, provvede automaticamente e in maniera trasparente a decomprimere tutti i file che gli servono nella cartella dei file temporanei, per poi cancellare tutto alla fine dell'esecuzione.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.