Topic: Delucidazioni su bytecode e codice binario per licenza  (Letto 754 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
 Buongiorno ragazzi,

Faccio una piccola premessa:
Spero che l'argomento che sto per trattare sia nella sezione corretta, ma soprattutto non sono alla ricerca di una consulenza legale, ma una "dritta" tra programmatori con una certa esperienza in questo ambito.

Detto ciò, ultimamente ho creato uno script Python che volevo distribuire sotto licenza Freeware.
Quindi mi son messo per qualche giorno su google a cercare un documento il più possibile "standardizzato" che definisse tale licenza.  Il problema è che non esiste (che io sappia) da nessuna parte una licenza effettivamente standardizzata  freeware pronta all'uso (per intenderci come succede con le licenze BSD o MIT).
Leggendo sulla cara e ben fornita Wikipedia, indica che i programmi popolari che fanno uso di una licenza simil-freeware (cita per esempio skype) ovviamente definiscono la loro "personale" licenza freeware (con clausole ogni volta differenti).
Ora la cosa mi risulta stranissima, visto che in giro si trovano pronte al "copia ed incolla" le  licenze più disparate.
Il ché mi fa sorgere spontanea una domanda: è possibile che nessuno abbia ancora standardizzato una licenza così diffusa (wiki la definisce addirittura più diffusa della licenza GPL)?

Detto ciò arrivo al punto: comprendo a pieno che quello che vi sto per dire potrà sembrarvi un pò assurdo, ma volevo crearmi una licenza Freeware il più possibile standardizzata per il genere di programmi/script/applicazioni dove è possibile usare a piacimento il codice binario distribuito, ma non è ammessa la retro-ingegnerizzazione per estrapolare il codice sorgente.
Questo significherebbe, che nel caso di una manomissione del programma distribuito, in qualche modo andrebbe  prima verificata la effettiva effrazione del codice in questione, ma senza starmi a dilungare troppo in teorie fantascientifiche su come far rispettare le possibili clausole inserite in una licenza di questo genere, capisco benissimo che questo passaggio "lascia il tempo che trova".

Ora, a parte questo, per descrivere la mia modesta licenza e malgrado il mio pessimo inglese son partito basandomi su pezzi di altre licenze libere;
in pratica ho letteralmente "copiato ed incollato" dei pezzi il più possibile coerenti con il tipo di licenza che voglio definire. Diciamo che il risultato ottenuto lo ritengo decente, ma lascio a voi il giudizio finale.

Il documento è il seguente:

Citazione
       
Copyright (c) <DATE>, <AUTHOR NAME>
All rights reserved.

Redistribution and use in bytecode or binary forms, without modification,
are permitted provided that the following conditions are met:

   * Redistributions in bytecode or binary form must reproduce the above
      copyright notice, this list of conditions and the following disclaimer
      in the documentation and/or other materials provided with the
      distribution.

   * Neither the name of the <PROGRAM NAME> nor the names of its
      contributors may be used to endorse or promote products derived from
      or distributed with this software without specific prior written permission.

   * Decompile, disassemble, reverse-engineer or otherwise attempt to
      discover the source code or even alter in any way this software,
      without specific prior written permission, are strictly prohibited.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.


Ora, quello che volevo capire bene (e per il quale ho postato su questo forum) è se :
la parte che dice "in bytecode or binary form" nella licenza (che per inciso ho aggiunto io e nel testo in cui ho estrapolato quel paragrafo non era presente la parola bytecode) risulta una ridondanza o è corretto far distinzione tra il Python bytecode e un generico codice binario?
Mi chiedevo questo perché per esempio, su Windows, usando il package py2exe è possibile convertire il bytecode in codice macchina (che in teoria dovrebbe essere quello "effettivamente" il codice binario) però nella mia totale ignoranza, non ne sono sicuro al 100% delle differenze tra i due tipi di file a livello, come posso dire, legale/di significato.

Voi che ne dite?

Suggerimenti a riguardo e dibattiti costruttivi sono ovviamente i benvenuti (anzi, è buon segno se ci saranno, vuol dire che quello che ho scritto interessa anche a qualcun'altro  :batti5:).

Grazie a tutti
« Ultima modifica: Maggio 19, 2017, 17:39 da Tungsteno »

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #1 il: Maggio 21, 2017, 21:38 »
Nessun suggerimento?  :(

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #2 il: Maggio 21, 2017, 22:56 »
Guarda, il fatto è che un argomento un po'... ehm... noioso, come dire. Se ne discute ciclicamente su questo forum, per esempio http://www.python-it.org/forum/index.php?topic=9061.msg77411#msg77411 ma non è che diventa più eccitante a ogni giro, anzi. In genere si confondono diversi aspetti (protezione del codice, licenza, copyright, distribuzione, uso.. boh) e il motivo per cui si confondono, in ultima analisi, è che nessuno è un avvocato, anche gli avvocati si confondono e parecchio, e alla fine a nessuno importa.
Esiste, come hai già notato, un range di licenze "open" che sono molto varie ma molto praticate nell'unico mondo che qui in fondo è conosciuto (e probabilmente ormai il mondo che conta di più), quello dell'open source. E nota che già questo range di licenze è parecchio vasto, e ci stanno dentro un sacco di complicazioni.
Se in qualche modo vuoi avere una licenza più restrittiva di questo range, non sei nel mondo interessante, e dovresti chiederti se ha senso tagliartene fuori. Per esempio, che senso ha nel 2017 distribuire software "gratis" ma di cui non è accessibile il sorgente? Voglio dire, beninteso, se non sei Microsoft o un produttore altrettanto affidabile? Pensi che i tuoi utenti abbiano voglia di installare proprio il tuo software alla cieca?
Un'altra considerazione è: puoi scrivere nella licenza quello che vuoi, anche che l'utente deve fare un sacrificio a Bhaal divoratore di anime prima di usare il tuo sofware. Ma sei pronto a far valere la tua licenza in un tribunale? In un tribunale internazionale? Hai le conoscenze necessarie? Perché solo una ristretta (e pagatissima) cerchia di avvocati ha davvero queste conoscenze. E se non puoi far valere la tua licenza, che senso ha scriverla?
In altre parole, se vuoi stare fuori dal mondo dell'open source, allora ci sono solo due casi: o sei una robusta corporation multinazionale con le tasche profonde e parecchi avvocati a libro paga, e allora sai già come fare a scrivere la tua licenza. Oppure non lo sei, e allora che senso ha scrivere una licenza di questo genere? Che beneficio te ne viene a tagliarti fuori dal mondo che probabilmente è quello più giusto per te?

Ma queste sono considerazioni tue. Al di là di questo, il mio consiglio è: leggiti bene tutto ciò che trovi su wikipedia (quella inglese, non italiana) su licenze, copyright, diversi tipi di licenza, etc. Chiedi un parere a un avvocato su come funziona la legge italiana (dovresti registrare alla siae il tuo prodotto, probabilmente). Vedi tu.
Sicuramente le creative commons coprono anche i casi che vuoi tu. Se no, cercati un software che è distribuito con una licenza che ti piace, e copiatela pari pari (chissà se nell'ordinamento italiano una licenza così può essere fatta valere? Mah...). Se no, prenditi la EULA e copiatela pari pari. Va a sapere.

Poi mi sembra che da un punto di vista tecnico tu abbia un po' di idee confuse, a monte di tutto questo discorso sulle licenze. Bytecode, codice binario (??? tutto è codice binario, anche queste righe che stai leggendo), codice sorgente. Per dire:

> su Windows, usando il package py2exe è possibile convertire il bytecode in codice macchina
No, Py2exe o equivalenti non fanno questo.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #3 il: Maggio 21, 2017, 23:58 »
Grazie RicPol della tua risposta. Molte di quelle considerazioni le ho già prese in considerazione.

Vedi, il mio caso è un pò particolare perché comunque non si tratta di un package ma di un software di tipo End User che teoricamente può usare chiunque e nell'ambito applicativo in cui deve girare ci sono molti "bimbetti" che se ne approfittano del lavoro svolto da altri e tendono ad appropriarsene illecitamente divulgandolo come codice loro, senza attribuire i diritti di creazione alle persone giuste.
Quindi sicuramente non si arriverà ad una causa legale, ma piazzare una licenza ben chiara (e le relative conseguenze se non si rispetta), può far riflettere questa gente ed evitare magagne più complicate da portare avanti.
Diciamo che risulterebbe più che altro una sorta di "repellente" anti-plagio ecco.

Poi mi sembra che da un punto di vista tecnico tu abbia un po' di idee confuse, a monte di tutto questo discorso sulle licenze. Bytecode, codice binario (??? tutto è codice binario, anche queste righe che stai leggendo), codice sorgente. Per dire:
Quindi qui mi stai suggerendo (tra le righe) che non c'è differenza tra bytecode e codice Binario a livello di significato tecnico?
« Ultima modifica: Maggio 22, 2017, 00:53 da Tungsteno »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.638
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #4 il: Maggio 22, 2017, 00:15 »
Il bytecode è un formato intermedio per l'interpretazione da parte di una VM.

Il codice binario è una sequenza di 0 e 1.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #5 il: Maggio 22, 2017, 00:29 »
Il bytecode è un formato intermedio per l'interpretazione da parte di una VM.

Il codice binario è una sequenza di 0 e 1.

Ecco, è esattamente quello che ho letto su wikipedia, però non ne ero sicuro della distinzione perché in altri forum stranieri molti fanno riferimento al bytecode Python come codice binario.
Quindi inserire entrambi nella licenza rende le cose più chiare anche per i più "furbetti" diciamo. Non risulterebbe ridondante è quello che volevo capire.

Grazie GlennHK mi hai dato una conferma molto utile.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #6 il: Maggio 22, 2017, 00:32 »
Ah dimenticavo,
se qualcuno fosse interessato ad una licenza del genere è disponibile su Gist, rivista e corretta, al seguente link
https://gist.github.com/Tungsteno74/a76c48ca3410640eb16121b683aa4487

Grazie a tutti

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #7 il: Maggio 22, 2017, 00:59 »
Guarda, il suggerimento buono te lo hanno gia' dato. Lascia perdere.
Vuoi che si veda che il codice e' tuo? Non c'e' modo migliore di averlo su github con licenza open. Tutti possono constatare che e' li da piu' tempo.

Perche' il tuo segretissimo codice, tanto non lo riesci ad offuscare davvero. Quindi se vogliono fanno qualunque cosa pare loro.

E poi basta. E' sempre la stessa solfa, il consiglio e' sempre lo stesso.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 181
  • Punti reputazione: 0
    • Mostra profilo
    • Sviluppo Videogiochi
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #8 il: Maggio 22, 2017, 01:25 »
Vuoi che si veda che il codice e' tuo? Non c'e' modo migliore di averlo su github con licenza open. Tutti possono constatare che e' li da piu' tempo.
Per quello uso già Bitbucket, lo preferisco a Github per questo genere di progetti.

Perche' il tuo segretissimo codice, tanto non lo riesci ad offuscare davvero. Quindi se vogliono fanno qualunque cosa pare loro.

Purtroppo lo so Riko, infatti è la prima cosa su cui ho riflettuto e ho scartato.

E poi basta. E' sempre la stessa solfa, il consiglio e' sempre lo stesso.

Mi spiace Riko che te la sia presa così tanto, non volevo far alterare nessuno.
La mia era semplicemente una richiesta di un consiglio tecnico in quello specifico caso, tra persone che masticano bene le varie terminologie in ambito informatico e in particolar modo in Python.

Spero vivamente che tu non l'abbia presa troppo sul personale, ne sarei molto dispiaciuto.

Comunque ringrazio di nuovo tutti i partecipanti alla discussione. Penso di aver finalmente risolto il problema.


« Ultima modifica: Maggio 22, 2017, 01:31 da Tungsteno »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #9 il: Maggio 22, 2017, 10:20 »
Ma no, è proprio soltanto che non si va da nessuna parte con queste discussioni sulle licenze.
La verità è che (da vent'anni e più) la parte interessante della programmazione è la programmazione, non chiedersi come scavare fossati e alzare muri intorno al proprio codice per "difenderlo" dalla concorrenza sleale.
Ora, purtroppo per te e per il tuo problema, qui trovi per lo più solo dei programmatori. E non credo che neanche riko abbia la necessaria competenza legale per darti un parere sicuro su tutto quello che c'è da sapere sulle licenze: avrà più esperienza di molti qui, ma alla fine è anche lui "solo" un programmatore, non un avvocato specializzato. E' possibile che su un forum di avvocati tu possa avere delle risposte in più.
Prova a googlare "examples of proprietary software licenses": troverai solo risposte più o meno simili a quelle che ti abbiamo già dato. C'è un bel link al generatore automatico di Binpress (ma anche il generatore automatico di Creative Commons che ti dicevo va bene), ci sono risposte del tipo "copiati le licenze di software proprietari che ti sembrano simili al tuo caso", eccetera.
Ma tutto questo ovviamente vale soprattutto in ambiente americano. Sei sicuro di sapere come le varie leggi su copyright etc. etc. si armonizzano tra l'America, l'Europa, l'Italia? Uhm, se sei sicuro, ti prego di postare qui un bello specchietto riassuntivo perché io invece non ne sono affatto sicuro.

E poi, ancora: guarda che una "licenza" non "protegge" affatto il tuo codice nel senso che tu immagini. Una licenza determina l'uso che si può fare di QUEL software (e NON del codice, o delle idee originali che il sofware contiene), ma niente di più. Se tu scrivi un algoritmo che ordina una lista in O(1) e lo metti nel tuo codice, una licenza non impedirà a qualcuno di decompilare il codice, capire come funziona l'algoritmo, e riscriverselo per conto suo. Per "proteggere" il codice nel senso che intendi tu, dovresti brevettarlo (oh... già... brevettarlo! perché non ci ho pensato prima?). E per brevettarlo... bla bla bla.
Oppure, ancora: non pensi che dovresti depositare il tuo software alla siae? https://www.siae.it/it/autori-ed-editori/i-registri/pubblico-registro-software E sai se esiste, e nel caso qual è, la differenza tra questo e un brevetto e una licenza? Se lo sai, ti prego: posta qui un bello specchietto riassuntivo, perché io proprio non lo so.

Quindi vedi, in mezzo a tutto questo, chiedersi se bisogna inserire o non inserire la distinzione tra "bytecode" e "machine code" perché così vedi come ti "proteggo" bene il codice e come ti frego i "furbetti" che vogliono "copiarlo"... Ehm... ecco... non so come dire, ma mi sembra un problema un po' inutile.

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #10 il: Maggio 22, 2017, 13:00 »
Ma no, è proprio soltanto che non si va da nessuna parte con queste discussioni sulle licenze.
La verità è che (da vent'anni e più) la parte interessante della programmazione è la programmazione, non chiedersi come scavare fossati e alzare muri intorno al proprio codice per "difenderlo" dalla concorrenza sleale.

Talmente vero che ad esempio quelli di PostgreSQL si sono scritti una licenza che togliendo
  • righe di attribuzione di copyright,
  • righe di "scarico responsabilità",
  • righe vuote,
  • righe di spiegazione del perché non hanno adottato una "GNU General Public License",
restano esattamente 3 righe in cui sostanzialmente dicono "fate un po' come vi pare.", sottotitolo "tanto volendo lo fareste comunque!".
« Ultima modifica: Maggio 22, 2017, 13:04 da Giornale di Sistema »

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #11 il: Maggio 30, 2017, 15:51 »
Evitero' di entrare nel merito (davvero: questo e' un argomento ricorrente). Pero' questa e' spettacolare:


DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                   Version 2, December 2004

Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.



E' piena di chicche nerd, fra l'altro.

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:Delucidazioni su bytecode e codice binario per licenza
« Risposta #12 il: Maggio 30, 2017, 18:12 »
:D