come proteggere il codice da lettura

ho fatto alcune prove e confermo che per settare i bit in maniera da bloccare sia scrittura che lettura nell'arduino è quello di programmare i lock bit a 0x00.

fischio85:
ho fatto alcune prove e confermo che per settare i bit in maniera da bloccare sia scrittura che lettura nell'arduino è quello di programmare i lock bit a 0x00.

Quindi ci sei riuscito? :wink:

Si ce l'ho fatta, merito soprattutto tuo leo ;). A breve avro bisogno di un po di aiuto
perché dovro passare all'utilizzo dei moduli Xbee per far comunicare piu sensori con un unita centrale comandata da arduino!allora si che ci sarà da ridere =(

mi chiedevo, usando l'ide arduinica per fare un progetto si deve poi obbligatoriamente rilasciare il sw open ? Visto che per scrivere quel sw magari uso millis, e millis e' open, devo rilasciare solo millis o tutto il progetto ?

Testato, la stessa domanda l'hai posta diversi mesi fa e ne è nata una discussione di diverse pagine ]:smiley:

La questione è: se distribuisci il progetto, sei obbligato a distribuire anche il sorgente se usi pezzi di sorgente coperti da GPL3.
Siccome alcuni autori sono un po' restii a far ciò, alcune librerie sono distribuite con licenza LGPL, che permettono la distribuzione solo del loro sorgente ma non del sorgente del programma che le usa. L'Arduino dovrebbe però essere tutto sotto GPL.

Se il programma resta in casa tua, sei libero di fare ciò che ti pare, ovviamente. Non è che devi obbligatoriamente mettere il codice del tuo orologio valvolare su un sito pubblico solo perché l'hai scritto usando l'Arduino :stuck_out_tongue:

Molte parti del core di arduino contengono l'intestazione della licenza usata, e molto spesso l'intestazione è quella della LGPL, come parte del file seguente, preso da WInterrupts.c

/*
  Part of the Wiring project - http://wiring.uniandes.edu.co

  Copyright (c) 2004-05 Hernando Barragan

  This library is free software; you can redistribute it and/or
  modify it under the terms of the [color=red]GNU Lesser General Public
  License[/color] as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General
  Public License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  Boston, MA  02111-1307  USA
  
  Modified 24 November 2006 by David A. Mellis
  Modified 1 August 2010 by Mark Sproul
*/

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>

#include "wiring_private.h"

Quindi si deve controllare ogni sorgente è vedere se è rilasciato con una licenza compatibile con la LGPL.

Ciao.

Comunque GPL o LGPL, resta il fatto che se il progetto non viene distribuito, non si è obbligati a distribuire il sorgente.
Se lo si distribuisce, si devono distribuire le parti sotto LGPL. Se ci includono parti GPL, allora tutto il sorgente deve essere distribuito con la stessa licenza.

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.