Autore Topic: Licenze Open Source e codice  (Letto 745 volte)

Offline noodles

  • Utente junior
  • **
  • Post: 130
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Licenze Open Source e codice
« il: 28 Novembre 2010, 00:06:10 CET »
Spesso si parla di codice Open Source e delle licenze ad esso collegate come la GNU GPL o la Apache. Ammetto di avere pochissima cultura se non nulla su questo argomento e credo che sia una mancanza enorme. Credo anche che siano molti i programmatori, sia professionisti che non, che manchino in questo senso.

Mi sono letto un po' di articoli sulla licenza GNU GPL (v1, v2 e v3), ma rimango abbastanza scettico o dubbioso sul suo reale valore/utilizzo...

A questo proposito vorrei porvi delle domande, per colmare la mia ignoranza e magari anche aprire un dibattito, perchè credo sia interessante e serva a tutti.

Fino ad ora non mi sono mai trovato ad utilizzare codice open di altri, ma spesso ci sono incappato per prendere spunti o idee da quel codice, per poi scriverne uno mio. Ora però nel mio caso specifico dovrei importare una libreria scritta in C in Android via NDK che licenziata sotto la GNU GPL v3. Da qui il dubbio e le domande.

Il codice open source sotto licenza GNU GPL, a quanto ho capito, è di libero accesso ed uso, cioè lo posso prendere, modificare o ampliarlo e anche utilizzarlo. Se lo utilizzo interamente o anche solo una parte nella mia app, questa deve a sua volta diventare open sotto la medesima licenza e quindi devo rendere pubblico il mio codice?

La mia ignoranza mi spinge oltre... se la mia app è open sotto la licenza GPL posso comunque venderla sul Market pur avendo usato anche codice GPL di altri?


Spero che il topic sia di interesse generale e che qualcuno sappia rispondere o chiarire in parte i miei dubbi.  :-)
« Ultima modifica: 28 Novembre 2010, 00:16:40 CET da noodles »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Licenze Open Source e codice
« Risposta #1 il: 28 Novembre 2010, 12:36:45 CET »
Ciao noodles, ammetto che anch'io non sono molto ferrato in materia, ma da quel poco che so dovrei riuscire a rispondere ad alcune delle tue domande:
Se la libreria è sotto licenza GPL e tu hai intenzione di usarla allora, come tu stessi hai scritto, il tuo software dovrà adottare la medesima licenza. In genere però alcune librerie vengono rilasciate sotto licenza LGPL che, da quanto si può leggere su Wikipedia, "è una licenza di tipo copyleft ma, a differenza della licenza GNU GPL, non richiede che eventuale software "linkato" al programma sia rilasciato sotto la medesima licenza".

Non dovrebbe poi esserci nessun  problema a vendere la tua applicazione sul Market, sempre nel rispetto della licenza GPL (riassumendo moolto devi mettere un bel link ai sorgenti della tua app).

Aspettiamo comunque conferma da MarcoDuff, il nostro esperto di licenze :D
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline noodles

  • Utente junior
  • **
  • Post: 130
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Licenze Open Source e codice
« Risposta #2 il: 28 Novembre 2010, 13:12:20 CET »
Queste più o meno sono le informazioni che anche io ho letto documentandomi...

Senza farne una questione etica, lungi da me, ma come fa la community open source/GPL a verificare che non ci siano violazioni in tal senso?
Ho visto moltissime persone, quando ero all'università e non solo utilizzare codice licenziato per esempio GPL facendo un banale copia e incolla fregandosene altamente della licenza. In ambito Android poi è sicuramente pieno di situazioni simili, basta vedere come sulle community vengono pubblicati i link a progetti open-source.

L'argomento è delicato, perchè tempo fa mi sono trovato ad implementare una particolare feature per una mia app e mi sono iniziato a documentare su quale fosse la strada migliore da intraprendere. Ho trovato del codice sorgente GPL che poteva fare al caso mio. Alla fine l'ho usato come spunto, non ho fatto copia e in colla, ma mi è servito per capire come fare, poi la mia classe me la sono implementata da solo. Sono venuto meno alla licenza? Dove sta la linea di confine? Le due soluzioni si assomigliano molto, ma non sono lo stesso codice.

Beh credo che la domanda che tutti si facciano alla fine è? E' solo una questione di etica del singolo programmatore? L'open-source è un'utopia?

Fino ad ora non mi sono mai posto questi problemi, ma ora che mi trovo ad dover utilizzare una librearia nota con tale licenza voglio capire bene cosa tutto ciò comporta prima di utilizzarla.
« Ultima modifica: 28 Novembre 2010, 13:14:24 CET da noodles »

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Licenze Open Source e codice
« Risposta #3 il: 29 Novembre 2010, 13:32:07 CET »
Iniziamo con le definizioni: ogni software (sia open che closed source) ha sempre un detentore dei diritti d'autore ed una licenza.

Il detentore dei diritti d'autore è chi fisicamente ha creato il software.
Il detentore della licenza è colui che utilizza il software.

Andiamo adesso alle domande nel tuo caso specifico.
Un software sotto GPL GNU v3 puoi utilizzarlo, modificarlo, ampliarlo ed adattarlo nel tuo software. In caso di solo utilizzo (copia ed incolla secco) il detentore dei diritti d'autore resta quello originale. In caso di modifica, ampliamento o adattamento diventi anche tu il detentore dei diritti d'autore delle parti che hai modificato, ampliato o adattato. In particolare, nel caso di modifica o adattamento di una classe esistente, in testa va messo il detentore dei diritti originali (che già è scritto) più una riga con i tuoi copyright che in modo dettagliato dicono cosa hai modificato nel codice. Nel caso di classi nuove, sei l'unico detentore dei diritti (in testa va messo solo il tuo copyright come parte del software totale).

Si, puoi vendere codice GPL scritto da altri, ma (in ogni caso) devi specificare che quello è un codice open source scaricabile in modo gratuito da <link> e che il detentore dei copyright è <autore>. (ovvero, nel caso dell'Android Market solo uno stupido comprerebbe un software totalmente open source, visto che può prenderlo gratis, ma questo non significa che non puoi farlo).

Le violazioni.
Se io (utilizzatore di un software o osservatore di un software) mi rendo conto che vi è una violazione, è mio compito contattare il detentore di copyright (***non*** il detentore della licenza) segnalando la probabile violazione.
Solo ed esclusivamente il detentore di copyright può procedere alle opportune verifiche, solitamente in questo modo:
- Chiedendo al probabile sviluppatore che ha violato la licenza se ha utilizzato il software open in modo non previsto dalla licenza.
-- Se risponde di si, ha l'obbligo di adeguarsi... se non si adegua leggi NOTA 1
-- Se risponde di no, il detentore del diritto d'autore dovrebbe indagare (solitamente si indaga sui bug che (per fortuna  o_O) tutti i software hanno... se scopre che quel software ha il medesimo bug allora procede come da NOTA 1, altrimenti vuol dire che effettivamente (o meglio probabilmente) il software non è copiato e quindi non vi è alcuna violazione.

NOTA 1: Il detentore dei diritti d'autore procede legalmente contro chi ha infranto la licenza (ed al 90% delle volte vince e viene ripagato).

La linea di confine.
E' molto, estremamente difficile trovare la linea di confine. E' un Giudice (quindi siamo arrivati alla NOTA 1 di sopra) che decide se chi ha copiato (o si è ispirato) si è effettivamente distaccato dal codice originale creando qualche cosa di totalmente nuovo o meno.
Solitamente si decide osservando non tanto il codice nudo e crudo (quello viene scoperto banalmente) ma l'algoritmo logico che sta dietro la risoluzione di un problema. Non importa il fatto che tu abbia effettivamente copiato il codice, ma se usi gli stessi identici passi... diciamo che hai ugualmente copiato!

Concludendo: solo il detentore dei diritti d'autore può procedere legalmente alla verifica circa l'utilizzo della licenza e solo un giudice può decedere se un software sta violando la licenza o meno.

Offline noodles

  • Utente junior
  • **
  • Post: 130
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Licenze Open Source e codice
« Risposta #4 il: 29 Novembre 2010, 13:48:15 CET »
MarcoDuff sei stato chiarissimo! Grazie mille per le tue delucidazioni.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Licenze Open Source e codice
« Risposta #5 il: 29 Novembre 2010, 14:48:39 CET »
Marco sei mitico :D
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline noodles

  • Utente junior
  • **
  • Post: 130
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Licenze Open Source e codice
« Risposta #6 il: 29 Novembre 2010, 15:23:55 CET »
Marco sei mitico :D

volevo dare un +1 ma qui in android bar non se po' fa  :D