Newsgroup: it.lavoro.informatica
Titolo: ninna nà ninna oh, questo codice a chi lo do?

Ho lavorato per X per conto di Y pagato da Z.
Ho ideato/implementato un algoritmo, i cui risultati interessano ad Y
e Z (del codice non gle ne importa nulla, solo dei risultati, il
codice è mio, l'algoritmo è pubblico, o meglio verrà pubblicato a
breve).
Y e Z son contenti, X mi vuole assumere per "continuare il lavoro".
A me conviene lavorare per X sia dal punto di vista personale che
economico.
Il problema è l'implementazione dell'algoritmo, argomento che con X
(purtroppo) non abbiamo mai affrontato di petto (mentre lavoravo lì me
l'hanno chiesto il codice, ma gli ho *di petto* risposto picche: il
codice era mio, per averlo dovevano pagare, hanno storto il naso, ma
l'ho spuntata).
Tra pochissimo sarò effettivo in X, (anche) per lavorare su quel
codice, quindi presumo che X ad un certo punto vorrà vedere e lavorare
sui sorgenti, e vorrà anche il "know how" per metterci le mani sopra.
Un po' però mi rode cederlo così da bonaccione. Anche perché se ci
mettono le grinfie sopra, ci mettono il loro sigillo! Cosa posso fare
per tutelarlo/tutelarmi?
L'unica strategia che mi viene in mente è fornire solo una parte del
codice, tenermi per me tutti i vari programmi accessori che ho
scritto. Però prima di andare a lavorare per X, distribuire il SF con
qualche licenza (GPL?)... perderlo per perderlo, preferisco darlo alla
comunità, (anche) per un discorso egoistico: dovessi andare a lavorare
da qualche altra parte, il codice potrei riutilizzarlo, ed ad X non
avrei ceduto l'anima. In più una scelta di questo tipo potrebbe anche
forzare X a tenere il codice pubblico.
voi proponete altre alternative?
Comunque, scegliendo l'opensource:
1) Dovrei quindi motivare X a tenere il codice pubblico.
2) Dovrei scegliere la licenza da affibbiare.
3) Dovrei far partire il progetto opensource.
4) Dovrei già creare un'infrastruttura per lavorarci su. In questo
modo se proprio sono interessati propongo un discorso del tipo: "ho
già preparato la base per portarlo avanti come progetto opensource, se
non vi va bene comprate tutto il progetto"
Il problema è che non ho mai portato avanti un progetto opensource,
non saprei da dove iniziare, non saprei che licenza scegliere!
Insomma, tabula rasa! Voi che consigliate?

per tutelarlo/tutelarmi?
A dire la verità, a me non è mai capitato di pensare che il codice scritto 
mentre lavoro per una società sia roba mia.
Un conto è se faccio un prodotto per un terzo, che il codice sorgente me lo 
deve pagare, ma ho sempre pensato che la società per cui lavoro normalmente, 
spesso in team con altre persone e quindi gioco forza non è che possa tenere 
il codice per me, sia la proprietaria dei sorgenti che produco.
Ciao,
Alessio (a.k.a. Kinglion Il Meticcio) 

 Insomma, tabula rasa! Voi che consigliate?
Licenza doppia (o tripla):
1) "GPL versione 3 o una qualsiasi delle versioni successive della GPL":
http://opensource.org/licenses/gpl-3.0.html
 o
2) Chi ti chiede di avere il codice del quale non vuole essere obbligato
di rilasciare i sorgenti, ed č disposto a sborsare, gli dai il codice
con una licenza neno restrittiva (MIT, BSD, Apache 2: v
http://opensource.org/licenses/alphabetical
 ) o
3) Chi vuole il codice con il quale vuole fare quelo che gli pare,
glielo vendi, e mi raccomando, chiedi molti piů soldini rispetto al
punto 2).

 il codice per me, sia la proprietaria dei sorgenti che produco.
di X non è, e qui non ci piove.
Y ed Z sono ormai fuori discussione (volevano l'algoritmo e la
pubblicazione, non l'implementazione).
Sul codice ho messo mani solo (ed esclusivamente) io, *esclusivamente*
per provare l'algoritmo. Direi che il codice (l'implementazione) è a
tutti gli effetti mia, potrei anche sbagliarmi, eh!
Legalmente X può avanzare diritti (l'avrebbe fatto quando mi hanno
chiesto il codice e ho risposto picche, al massimo gli eseguibili), ma
li potrà (giustamente) avanzare qualora inizino a metterci mano! Per
questo voglio sistemare la licenza *prima* che ciò accada.

 punto 2).
grande!! grazie!!
Devo un po' leggermi tutte le licenze!
Ma come si fa a farle valere? Bisogna depositare il codice da qualche
parte? Basta aggiungere la licenza ad ogni file? Come fare a rendere
pubblico il codice? (lo carico su sourceforge, ci aggiungo un file con
la licenza, ci aggiungo l'intestazione della licenza su ogni file, e
via?) Devo criptarlo con qualche chiave? come funziona?
/me ignorante (stendiamo un velo pietoso)

 
Eri dipendente di X?

 voi proponete altre alternative?
dirò una cavolata... perché non dividi il codice in un "core" su cui 
lavori tu e lo tieni stretto tu e delle api a cui può attingere 
liberamente X?
Oppure... perché non lo rilasci in maniera "free" per uso non 
commerciale e a pagamento per uso commerciale?

> Insomma, tabula rasa! Voi che consigliate?
Se X sta per impresa o imprenditore... prima mette le mani sul codice 
poi ti manda a quel paese... magari intimidandoti di non toccare il 
"loro" codice... consiglio mutande di latta!

 
/me quoto ignoranza
Però è quello che pensavo anche io, vedere come sono le licenze di 
codice in GPL opensource.
Dopodicheé andare a lavorare per X.
Se X ti assume, il codice prodotto come dipendete è di X e di questo 
credo che ne devi tenere da conto.
Quidni se dai con licenza GPL il codice iniziale, le successive 
implementazioni le gestisce X per sapere se restano GPL, o al limite da 
guardare la licenza GPL per sapere che dice e che regole pone nell'uso 
del codice GPL e se anche poi come dipendente e sviluppando su 
piattaforma GPL il codice elaborato possa restare pubblico..
Forse con la prima licenza?? (non ho letto i link proposti:D)

 /me ignorante (stendiamo un velo pietoso)
Nessuno nasce imparato.
Ciao.

 Insomma, tabula rasa! Voi che consigliate?
Di nuovo, ti consiglierei a lungo prima di rilasciare il progetto come
open source.
AFAIC, iniziare un progetto open source per impedire ad un terzo di
usare un codice sorgente non mi sembra tutta questa furba idea.
Uso da anni tanti progetti open source, ma di solito, tranne rare
eccezioni (ad esempio, per anni Reflector), evito come la peste i
progetti one-band-man, e non credo sia l'unico a pensarla cosi'. Se la
tua e' una buona idea, e se ha possibilita' di ulteriore sviluppo, ci
sono ben altre strade.
--
ale
http://ale.riolo.co.uk

 sono ben altre strade.
non mi sono spiegato bene!
Per ora ho lavorato solo io, ma d'ora in avanti ci saranno diverse
persone a lavorarci sopra.
Vorrei solo scongiurare l'ipotesi che si approprino del lavoro che ho
fatto sino ad adesso.
Potrei pilotarli a portarlo avanti come progetto open-source, però
dovrei lanciare il progetto *adesso*, in modo che si trovino in mano
già un codice coperto da copyright, senza fare sgarri a nessuno.
L'open source mi sembra l'ideale. "System Failure" ha estrema ragione
nel valutare il fatto che su sourceforge si deve sottostare ad un
contratto ulteriore.
Magari la cosa più breve è fare un sitarello dedicato, con una sezione
di download.
Regalo il SW, X all'inizio storcerà il naso, ma al SW do' anche un
futuro.
Si, sono sempre più convinto della strada dell'opensource!

 ideatori, e questo era previsto.
Perdona, un paio di cose non mi sono chiare, e penso siano il busillis
della questione.
X è uno degli autori dell'algoritmo o _figura_ come l'autore
dell'algoritmo?
E tu hai curato la sola implementazione o sei parte attiva nello
sviluppo dell'algoritmo?
Se, come ho capito per quel che ho letto fino a qui (ma potrei non aver
capito un tubo) tu hai creato l'implementazione ma l'algoritmo è di
ideazione di X, potresti avere tu problemi da X, nel momento in cui
rilasci senza autorizzazione codice che implementa un'idea che non è
tua.
IMHO, se è vero che X sta per rendere pubblico l'algoritmo, io ne
parlerei con X, in modo da rendere pubblica con il suo accordo anche
l'implementazione nello stesso momento in cui viene reso pubblico
l'algoritmo.
-- 
Ciao!
Luca


Ma di quanto codice stiamo parlando?
Dici che con algoritmo pubblico il codice rimanga di vitale importanza?
Non so, eh, chiedo, magari è roba da embedded con dentro tanta bella
matematica per cui l'implementazione è sul serio una grande fetta del
tutto (considerando quando poco si è disposti a pagare uno sviluppatore,
il fatto che il codice sia particolare può sul serio essere un intoppo per
chi vuole copiare l'idea a costo quasi nullo).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao tirzanello.
Una sola domanda: ma sul contratto che X ti ha fatto a suo tempo non
c'è per caso una clausola che dice che X è proprietaria di tutte le
tue opere di ingegno (sviluppi+ documenti)? Te lo chiedo perchè quando
lavoravo a body rental questa clausola c'era sempre.

 come opera d'ingegno ti appartiene. Il problema potrebbe essere, nel
[CUT]
Ciao System Failure,
sono d'accordo al 100% su questa tua  frase, con un solo ma: salvo
clausole contrattuali.
Nel momento in cui nel contratto con tirzanello X ha omesso la
clausola della cessione della
"proprietà" delle opere di ingegno, tutto il ragionamento regge.
Sono contratti standard, quindi non credo di inventare nulla.

 Sono contratti standard, quindi non credo di inventare nulla.
No, su questo non ci piove. Anche a me hanno più volte chiesto di cedere
il codice ma io già durante la fase precontrattuale rispondevo picche, e
proponevo la licenza MIT:
http://www.opensource.org/licenses/mit-license.php

 proponevo la licenza MIT:
http://www.opensource.org/licenses/mit-license.php
onesta come licenza!
La BSD però si adatta meglio al mio caso, mi sa!
grazie per le dritte!!!

 lavoravo a body rental questa clausola c'era sempre.
no, no... non c'era e non c'è.
c'è da dire però che X ed Y sono seri (da questo punto di vista)!

 l'algoritmo.
questo è esattamente quello che m'è venuto in mente: nella
pubblicazione rendere pubblico anche il codice. Addirittura era stata
una proposta di X circa un anno fa!
Io ero un po' titubante perché (all'epoca) volevo mantenermi
l'esclusiva, ed anche perché il codice era abbastanza confuso (una
pipeline tra matlab, c e C++, e third parts). Adesso invece il codice
è snello, tutto in C++, però manca di interfaccia grafica (vabbé), ed
è poco usabile (il preprocessing dei dati è a parte).
Ora però mi viene un dubbio di tipo etico:
sul codice ci scrivo "(c) copyright tirzanello" oppure "(c) copyright
tirzanello ed X"???

 chi vuole copiare l'idea a costo quasi nullo).
no, non è embedded! La matematica è comunque tanta, però!
Implementarlo da zero ci vuole del tempo!

 una proposta di X circa un anno fa!
detto così sembra che mi stia preoccupando per niente, in realtà la
proposta era partita dal fatto che non volevo dargli i sorgenti ;-)
Per metterci mani comunque (e perché stavano fermi da un anno su un
paio di cause per i diritti di un'altro FW), aveva lanciato l'idea
dell'opensource! Cioé, voglio dire, non è generosità di X!

 grazie per le dritte!!!
Non c'č di che.

 l'algoritmo.
epilogo: appena parlato con il mio capo in X dell'opportunità di
distribuirlo (noi autori) open source.
Risposta (copio/incollo):  "we might want to sell the code. more
precisely, you."
Spiazzato da tanta correttezza -e riconoscendo anche i suoi *indubbi*
contributi- ho rinnovato l'intenzione di renderlo opensource, e
comunque nel caso di vendita una parte gli sarebbe spettata.
Risposta: "Dude, I didn't write a single line of code, have a single
idea in the paper, or look up a single reference!
You are a generous dude".
sono rimasto basito!

 di X non è, e qui non ci piove.
Mi spiace deluderti, ma non ne sarei così sicuro, se ho capito la
situazione. Invece che consultarti con un NG consultati con un
avvocato, ma penso tu debba ridimensionare parecchio le tue pretese.
bye!

 Insomma, tabula rasa! Voi che consigliate?
Contestualizza meglio, fisicamente in che paese hai creato questo
codice?
Lo dico non per esterofilia o per saccenteria e tanto meno per
esperienza, ma per la semplice constatazione che nel nostro paese
(come in molti altri) le uniche opere coperte dal diritto d'autore
sono le opere della Cappella Sistina del Michelangelo o il David di
Donatello in quanto proprietà di poteri forti.
Quindi se la tua preoccupazioen maggiore è la renumerazione del
diritto d'autore, allora che sia GPL o altro l'unica risposta "valida"
che offre questo paese è la SIAE (=denaro), sia che si tratti di una
immonda ciofecca che nessuno oserebbe copiare, sia che si tratti del
tuo valido algoritmo che altri impiegherebbero una vita intera ad
ideare senza mai riuscirci.
Dunque prendila come una provocazione e prova ad immaginarti i tuoi
datori di lavoro alle prese con l'etica:
«Certo che è licenziato sotto GPL, ma con quattro accorgimenti ed un
compilato binario il codice
diventa nostro e lui avrà da far le sue per dimostrare il contrario in
sede legale, quindi intanto ce lo teniamo buono fino a quando il
codice non sarà completamente bug safe, poi se la manovalanza inizia a
scocciare si vedrà»
Considera inoltre che se X,Y o Z rivendesse il tuo codice GPL
fatturando qualche milionata di euro
troverà difensori legali a iosa per procastinare il giudizio in merito
alla "presunta" violazione, al contrario gettarlo alle ortiche
potrebbe ritorcersi contro di te lasciando spazio a loro per citarti e
farti passare dei guai.
Tutt'altro discorso se i tuoi datori fossero degli idealisti pure
leali, e non fosse che tale razza è estinta (semplicemente perchè oggi
tutto fa mercato, pure le idee appunto) allora il discorso potrebbe
cambiare di molto magari buttandola sulla "garanzia di carriera"
all'interno del sistema ove hai maturato tali idee.
Personalmente piuttosto che di licenze io direi che il software
"dovrebbe" essere considerato arte, perchè così taglieresti la testa
al toro, ossia se interessano le idee di un artista il mecenate
"contribuisce" a renderle opere d'arte, altrimenti se interessa ri-
vendere merci a livello industriale allora con le licenze ti ci puoi
pure pulire il c***, perchè ai clienti interessa il prezzo e non chi
produce le merci (vedi il boom della Cina per intendersi, dove il
prezzo fa la differenza e non di certo i brevetti). Poi magari sono
troppo catastrofico, ma fatti un giro qui e chiedi nella mailing list:
http://www.opensource.org
P.S.
soluzione concreta (non idealista ma non per questo utopica :-) ):
**ti sposi una ricca e facoltosa ereditiera, così vedrai che anche
dell'idea più balzana ti sarà riconosciuta la paternità :))**

 sono rimasto basito!
Su una cosa sono fondamentalmente d'accordo con X, ed è quella che se
puoi rivendere il codice, e guadagnarci, non ha molto senso darlo via
open source per la sola ragione che vuoi impedire ad X di lucrarci.
Intendiamoci, ci sono tante buone ragioni per iniziare e partecipare a
progetti open source (io ho perso il conto di quanti progetti open
source ho usato, ed a quanti ho contribuito), ma quella che si evince
dal tuo discorso non è sicuramente la migliore, ne tantomeno quella
più raccomandabile.
Perchè invece non ti siedi a tavola (anche virtualmente) con X, e non
ti accordi per come procedere direttamente con lui? Se tu riconosci ad
X un merito nella creazione dell'algoritmo e nella sua
implementazione, quantifica il loro apporto (10-20-50%, lo sai tu), ed
offri loro quella percentuale sui diritti della cosa, e chiedi loro
consiglio su come vorrebbero procedere, ed a quel punto valuta sulle
proposte che ti fanno.
--
ale
http://ale.riolo.co.uk

 X un merito nella creazione dell'algoritmo e nella sua
giusto, e mi sa che sentirò anche Y.
cheers!!!!