come proteggere il codice da lettura

non e' stato vano richiedere, perche' sono venute fuori parti nuove, o almeno a me non conosciute.
Quindi per capirci la famosa millis dove vado a vedere se e' GPL o LGPL ?
Nel caso di utilizzo delle sole parti LGPL basta mettere un link all'IDE arduino e dire "andatevi a guardare dentro ad esso i sorgtenti sotto LGPL" Oppure si deve fisicamente allegare l'IDE o parte di essa nel download del proprio .zip ?

Aggiungo infine invece la domanda "Cattiva":
se costruisco un orologio valvolare (volendo restare sull'esempio da te scelto) basandolo profondamente sulla swRTC, pero' dico che e' tutta farina del mio sacco e inizio a venderlo come progetto chiuso e proprietario

Chi ? In che modo ? Potra' mai dimostrare il contrario ?

Bloccando i lockbit non si potra' nemmeno avere un hex da analizzare, e se anche fosse non si puo' risalire al sorgente in C.

E' questo un punto debole del sistema open source mondiale ?

Vengo io e ti chiedo di mostrarmi la licenza proprietaria degli strumenti che hai usato per sviluppare il tuo orologio valvolare, e tu mi dici che non hai nessuna licenza, perchè hai usato la libc nognu che è LGPL quindi sono a posto. Ma se ho dei sospetti posso sollevare un polverone fino ad arrivare in tribunale e chiederti di mostrare i sorgenti provando così che hai usato la libc o meno. Se perdo pago, se perdi tu, io incasso.

Si comunque più o meno le cose stanno come le hai dipinte tu, ma non si sa mai cosa può accadere ed e meglio avere la coscenza a posto e poter provare che sei diventato ricco senza mancare alla licenza GPL ecc.

Però non hai capito una cosa: è compito tuo leggerti tutte le licenze e regolati di conseguenza, e solo tu sei il responsabile.

Dovre trovi la licenza per mills, non ricordo il nome del file, devi andarti a vedere tutti i sorgenti del core.

Ciao.

Testato:
E' questo un punto debole del sistema open source mondiale ?

Mi pare che tutto questo polverone tu lo faccia solo perché hai paura di passar male a dire che non è farina del tuo sacco.
In primis, la GPL non ti obbliga a pagarmi proprio niente se stai usando la swRTC. Ti obbliga a distribuire il sorgente aperto con la swRTC dentro se decidi di distribuire il tuo progetto. Ma tu puoi farti pagare senza dare nulla a me, se è questo il tuo timore.

In secundis, se il tuo cliente vede che la swRTC l'ho scritta deve rivolgersi a me per una miglioria alla swRTC, ma continuerà a fare riferimento a te per l'orologio, visto che è un tuo progetto. Io non posso accampare diritti sull'orologio come tu non puoi accamparne sulla libreria. E mi pare giusto. Quindi nessuno ti ruberà il tuo progetto.

il furto non avviene in genere da parte del creatore della libreria, ma del concorrente che ha anch'egli accesso alla tua libreria, ma non al mio codice.
Usare quindi la tua libreria porterebbe l'obbligo di rilasciare anche il mio codice al concorrente.
Quindi che si fa ? o si fa il furbo dicendo ho fatto tutto io, oppure non si usa la swRTC.
Il team arduinico non e' stato stupido nello scegliere la LGPL, perche' non voleva constringere all'apertura di tutti i codici creati con esso.
E' una lotta che non finira' mai di esistere, da un lato chi vuole aprire e costringere anche gli altri a farlo, e chi invece non vuole.
Arduino ( Massimo Banzi ) non e' stato coerente con lo spirito dell'open source in questo, perche' ha usato un trucco. La LGPL tutela di piu' i suoi interessi, la GPL avrebbe tutelato l'umanita' tutta :slight_smile:

E' anche una questione filosofica. Io sono per l'opensource, altri possono pensarla come me.
Se io non avessi rilasciato le mie librerie sotto licenza GPL non le avrei neanche distribuite. Se non le avessi distribuite, non sarebbero state conosciute, e usate.
Se tu non ne eri a conoscenza, vivevi felice senza. Ora che sai che c'è la swRTC vuoi usarla ma non vuoi distribuire il tuo codice insieme al progetto. :stuck_out_tongue_closed_eyes:
Tu pensi difatti che se distribuisci il tuo progetto senza sorgente qualcuno non sarà in grado di replicarlo. Ma un progetto può essere replicato osservando come funziona: è solo questione di tempo a riscrivere qualcosa di simile. D'altronde, se ho un oggetto che visualizza l'ora e non vedo RTC esterni, non ci vuole molto a capire che usa un sistema per tenere il tempo internamente, no? :wink:
A questo punto, o mi scarico il firmware dal tuo valvolare oppure, se hai protetto il micro, lo replico partendo da zero (reverse engineering). E ti frego lo stesso.

Alla fine, questa discussione è la storia del cane che si morde la coda. Io resto delle mie idee e non riesco a convincerti, tu resti delle tue senza riuscire a convincermi. :stuck_out_tongue:

siamo pienamente d'accordo, spesso con le mie provocazioni sembra che io sia closed source, invece sto' qui a criticare arduino che avrebbe potuto spingere di piu' sulla questione usando la GPL per il progetto.

Sono solo esempi che portano a capire meglio la questione, ne io ne tu stiamo vendendo nulla :slight_smile:
Senza l'opensourceabilita', hw e sw, nessuno di noi sarebbe qui a parlarne

Tu pensi difatti che se distribuisci il tuo progetto senza sorgente qualcuno non sarà in grado di replicarlo. Ma un progetto può essere replicato osservando come funziona: è solo questione di tempo a riscrivere qualcosa di simile. D'altronde, se ho un oggetto che visualizza l'ora e non vedo RTC esterni, non ci vuole molto a capire che usa un sistema per tenere il tempo internamente, no? smiley-wink
A questo punto, o mi scarico il firmware dal tuo valvolare oppure, se hai protetto il micro, lo replico partendo da zero (reverse engineering). E ti frego lo stesso.

Qui se mi permetti hai ragione a metà.
Allora è il caso di dire che non si sta parlando di lucro sul software e hardware ma di lucro dell'idea.

Ti faccio un esempio:
Una 10ina di anni fa +/- la tv via satellite a livello casalingo si diffuse a macchia d'olio, era uscito Tele+ ora diventato SKY, tutti si sono comprati il decoder perchè qualcuno aveva messo in rete il minipippo completo di schemi e software fatto con 2 pic per poi piazzarli sulla card. Con chiunque parlavi di tvsat tutti sapevano e sorridevano senza dirti esplicitamente che lo avevano comprato o fatto da se, non ci voleva una scienza a capire le espressioni facciali :).
Tutti erano capaci a farla cercando su internet gli schemi e il software, anche lo zappatore dietro casa mia l'ha costruita con un saldatore e un negozio di elettronica. Moltissime persone che non avevano nemmeno due giorni di scuola in elettronica hanno pensato bene di fare i soldi con questo sistema ... ma tanti tanti, cosa che col reverse engineering non avrebbero mai potuto farlo, solo pochissimi si sarebbero arricchiti perchè ne avrebbero avuto la conoscenza e buone capacità.
A prescindere dall'illegalità della cosa, quello era un furto e un *"grosso danno" a Tele+ ma anche mancanza di rispetto per colui che l'aveva ideata perchè contrario alla tv a pagamento.

Insomma con reverse engineering si arricchiscono in pochi, copiando dalla rete si arrichiscono tutti che tu abbia messo o meno i diritti.

Se tu lavori un anno a un progetto con, i soldi che hai speso, il tempo, le ricerche, lo studio e arriva il contadino che trova la pappa pronta
e magari prende un ragazzino che li costruisce per lui per poi vendenderli .... ti farebbe piacere? a me no :slight_smile:

*"grosso danno"
Che sia stato un grosso danno è ancora da vedere, molto probabile che siano stati loro stessi a diffondere il crack per far apprezzare la tvsat e accaparrarsi poi una montagna di contratti con le nuove decodifiche, comunque tutto da dimostrare.

ciao

Tu hai esteso il mio discorso ma il concetto mi pare lo stesso.
Se io retroingegnerizzo qualcosa, poi il frutto del mio lavoro posso o tenerlo per me (piccolo danno, solo 1 godrà illecitamente) oppure diffonderlo (grosso danno, in molti godranno illecitamente senza pagare il dovuto).

Comunque ci sono casi e casi. Qui stiamo parlando di progetti amatoriali, venduti oppure no. Ma progetti di piccola diffusione fatti da singoli.
Non credo che una società più grossa diffonderà mai liberamente gli schemi ed i sorgenti di un suo prodotto: nel giro di un paio di mesi di quel prodotto non ne venderebbero più uno.

riassumiamo per chiudere il discorso.
Arduino e' tutto LGPL ? se c'e' una risposta su questo non siamo costretti a guardare tutti i file

Ammesso che sia tutto LGPL, un eventuale progetto diffuso dovrebbe contenere semplicemente l'ide scaricato da internet, oppure, ancora meglio, basta mettere un file txt nella distribuzione dove c'e' scritto MADE WITH arduino.cc e poi chi vuole se lo scarica ?

Esempio voglio vendere l'intero progetto fisicamente, allego un cd con l'ide arduinica o il file txt con il link
Esempio 2 voglio rilasciare il solo firmware direttamente in file .hex, aggiungo nella cartellina l'arduino o il semplice txt.

grazie

Non so risponderti alla tua domanda se il progetto Arduino sia tutto LGPL o meno.
So per certo però che "rilasciare il solo firmware direttamente in file .hex" contrasta con quanto fai intendere tu quando dici di non voler rilasciare i sorgenti perché ti preoccupi che qualcuno ti copi il progetto! :stuck_out_tongue_closed_eyes:
Visto che l'HW è visibile, replicarlo è alla portata di tutti. Se gli fornisci il firmware, gli dai il SW su un piatto d'argento. Al clonatore cinese basterà solo rifare il circuito, flashare il firmware sul micro e rivendere la stessa cosa ad 1/10 del tuo prezzo.

primo io non voglio fare/rilasciare/vendere/regalare/progettare nulla :slight_smile:
secondo rilasciare progetti DIY con .hex e' cosa buona e giusta, e' al secondo posto nella classifica delle cose "buone" (al primo c'e' l'opensource totale), ma rilasciare progetti open hardware con .hex e' anch'essa cosa buona e giusta.

Le mie domande sono solo e sempre dirette al capire le cose, e non sono cose semplici visto che e' appunto difficile avere risposte.

tornando sul secondo aspetto delle domande ne sai qualcosa in piu' ? e' corretto, seguendo la licenza LGPL, rilasciare il solo IDE Arduino o un link ad esso, e quindi dichiarare il resto del .hex proprietario ?

Se il tuo software usa una libreria LGPL non sei costretto a distribuirne il sorgente, puoi cioè mantenere il codice chiuso.
La LGPL è stata pubblicata per permettere l'uso di librerie aperte in progetti chiusi, cosa impossibile se la libreria fosse stata GPL (la GPL è "virale", se usi un software GPL sei costretto a rilasciare il tuo progetto come GPL).

Molte librerie sono LGPL ma non perché questa licenza sia migliore della GPL. E' diciamo una licenza di compromesso.

e tecnicamente come la si usa ? Ripeto, volendo dare per vero il fatto che Raduino IDE sia LGPL, si deve allegare tutto l'ide, quiindi 150mega di roba al file .hex di 10kB, oppure basta dire scaricatevelo da arduino.cc ?

Testato:
e tecnicamente come la si usa ? Ripeto, volendo dare per vero il fatto che Raduino IDE sia LGPL, si deve allegare tutto l'ide, quiindi 150mega di roba al file .hex di 10kB, oppure basta dire scaricatevelo da arduino.cc ?

Il core di Arduino è sotto LGPL. Questo viene dalle FAQ:

The Arduino software is also open-source. The source code for the Java environment is released under the GPL and the C/C++ microcontroller libraries are under the LGPL.

A questo punto secondo me basta dare il link al software.

grazie, emergono ulteriori spunti interessanti.
quindi il fatto che Java sia GPL non ha obbligato a mettere sotto GPL anche le librerie.
L'IDE deve per forza essere GPL ? o poteva anche esso essere LGPL ?

aggiungo quest'altro pezzo di faq:

Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.

Che intende con la gestione degli object files ?
Infine non capisco l'ultima indicazione, se il mio lavoro fosse proprio una modifica del core, perche', anche essendo esso LGPL, mi obbliga alla diffusione della modifica stessa ?

Testato:
grazie, emergono ulteriori spunti interessanti.
quindi il fatto che Java sia GPL non ha obbligato a mettere sotto GPL anche le librerie.
L'IDE deve per forza essere GPL ? o poteva anche esso essere LGPL ?

L'IDE è basato su Processing, Processing usa Java, Java è GPL. L'IDE deve per forza essere GPL.
Le librerie sono invece di Arduino quindi possono avere una licenza differente.
E' stata scelta la LGPL anche se per coerenza col principio di open source del progetto io avrei adottato la GPL anche per esse.
E' comunque una mia opinione.

aggiungo quest'altro pezzo di faq:

Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.

Che intende con la gestione degli object files ?

GLi object files sono i file .o che si creano nella cartella temporanea dove "vive" il tuo sketch finché è aperta l'IDE di Arduino e che vengono creati durante la compilazione.
Qui sotto i file che vengono creati per la compilazione dello sketch leOS2_reset_after_timeout:

CDC.cpp.d
CDC.cpp.o
core.a
HardwareSerial.cpp.d
HardwareSerial.cpp.o
HID.cpp.d
HID.cpp.o
IPAddress.cpp.d
IPAddress.cpp.o
leOS2_reset_after_timeout.cpp
leOS2_reset_after_timeout.cpp.d
leOS2_reset_after_timeout.cpp.eep
leOS2_reset_after_timeout.cpp.elf
leOS2_reset_after_timeout.cpp.hex
leOS2_reset_after_timeout.cpp.o
main.cpp.d
main.cpp.o
malloc.c.d
malloc.c.o
new.cpp.d
new.cpp.o
Print.cpp.d
Print.cpp.o
Stream.cpp.d
Stream.cpp.o
Tone.cpp.d
Tone.cpp.o
USBCore.cpp.d
USBCore.cpp.o
WInterrupts.c.d
WInterrupts.c.o
wiring_analog.c.d
wiring_analog.c.o
wiring.c.d
wiring.c.o
wiring_digital.c.d
wiring_digital.c.o
wiring_pulse.c.d
wiring_pulse.c.o
wiring_shift.c.d
wiring_shift.c.o
WMath.cpp.d
WMath.cpp.o
WString.cpp.d
WString.cpp.o

leOS2:
leOS2.cpp.d
leOS2.cpp.o
utility

I file .o sono creati dal compilatore a partire dal sorgente. Essi contengono già il codice macchina, quindi sono file eseguibili a tutti gli effetti, con in più le indicazioni per il linker su come unirli ad altri file eseguibili per creare il firmware finale, che sarà poi flashato sul micro.

Infine non capisco l'ultima indicazione, se il mio lavoro fosse proprio una modifica del core, perche', anche essendo esso LGPL, mi obbliga alla diffusione della modifica stessa ?

Perché se modifichi una libreria stai manipolando un componente diretto sotto licenza LGPL. La LGPL è una GPL ristretta. Un conto è se linki codice LGPL, un conto è se usi direttamente codice LGPL.
Cito da Wikipedia:

Un programma che non contenga alcun derivato di nessuna porzione della Libreria, ma è progettato per lavorare con la Libreria attraverso compilazione o collegamento con questa, viene definito "un'opera che usa la Libreria". Tale opera, isolata, non è derivata dalla Libreria, e pertanto ricade al di fuori dell'ambito di questa Licenza.

grazie dei chiarimenti, utili a tutti quelli che cercano info sulle licenze.

Allargo al discorso processing/java, ma quindi qualsiasi programma scritto in processing deve essere rilasciato GPL ?

Scrivere un programma che per funzionare ha bisogno del java, significa che automaticamente deve essere GPL ?

Testato:
grazie dei chiarimenti, utili a tutti quelli che cercano info sulle licenze.

Allargo al discorso processing/java, ma quindi qualsiasi programma scritto in processing deve essere rilasciato GPL ?

Scrivere un programma che per funzionare ha bisogno del java, significa che automaticamente deve essere GPL ?

Non so come funzioni Java. I compilati di Java non so come siano internamente. So che sono archivi ma credo che siano in pseudo-codice per cui disassemblandoli riottieni il listato originale, o per lo meno un qualcosa che ci si avvicina. Ma bisognerebbe chiedere a qualcuno che ci lavora, con Java. Se così fosse, non avrebbe senso distribuire solo il pacchetto Java perché dentro ci sarebbe comunque un codice leggibile.