di  -  mercoledì 9 maggio 2012

Mi ha fatto molto riflettere un recente pezzo di un’antica e prestigiosa rivista dell’IT, Dr. Dobb’s, sulla querelle che vede impegnati Oracle e Google in merito a Java.

Riguardo ai (pochi, in verità) pezzi di codice Java che sono finiti nel sorgente di Dalvik, credo che non ci sia tanto da aggiungere: copiare codice è reato, perché giustamente le proprietà intellettuali sono tutelate dalla legge.

Da programmatore un appunto sento ugualmente di farlo, perché penso sia capitato un po’ a tutti quelli che sviluppano di scrivere lo stesso codice per lo stesso sottoproblema da risolvere, magari usando le stesse variabili, la stessa indentazione, eventualmente anche gli stessi commenti.

Sembrano eventi poco probabili, che diminuiscono ancor di più le possibilità se concatenati, ma ricordo che qui non parliamo di estrarre numeri al lotto. Lo sviluppo di codice non ha nulla a che fare col caso; tutt’altro.

Il fatto che possano esistere coincidenze come quelle lo trovo perfettamente naturale, perché ogni programmatore sviluppa una precisa forma mentis, un suo stile nel risolvere i problemi, e una propria “calligrafia”, che rappresentano una sorta di “marchio di fabbrica” o, se vogliamo dirla diversamente, “impronta digitale”.

Con l’esperienza tutto ciò può cambiare ovviamente e, anzi, capita a volte di rivedere pezzi di codice di qualche vecchio progetto e non riconoscervisi oppure… inorridire.

Perciò il fatto di che siano state rilevate le stesse righe di codice Java anche in Dalvik non stupisce più di tanto, considerato che è stata la stessa persona ad averle scritte, prima in Sun, e poi in Google.

Questo non può, però, essere preso a pretesto per giustificare la copia a mani basse del lavoro svolto per la precedente azienda, anche se è oggettivamente difficile definire una metrica per stabilire quando si può parlare di plagio, e quando no.

Ancora più grosso è il dilemma riguardo alle API, anch’esse oggetto del contenzioso scatenato da Oracle e le cui implicazioni avrebbero una portata vastissima e sconvolgente per il mondo dell’IT.

Per Oracle si tratta di salire un gradino più in alto riguardo alla proprietà intellettuale, a un livello di astrazione più elevato. Non parliamo più, infatti, del mero codice che può essere copiato o meno, ma dell’interfaccia, del “contratto” che viene “stipulato” fra chi realizza un’API e chi la deve poi utilizzare.

E’ legittimo che tale interfaccia ricada nelle tutele di cui sopra? Personalmente da programmatore non mi trovo favorevole, per alcuni semplici motivi.

Il primo è che le API rappresentano delle definizioni, delle convenzioni che bisogna adottare necessariamente per favorire l’interoperabilità, altrimenti non possibile.

Come faccio a stampare una stringa a video, se non so come si chiama l’API allo scopo, quali parametri prevede, e di che tipo sono? OK, almeno uno (e solo uno?) dovrebbe essere una stringa, ma… non è affatto scontato!

Una macchina virtuale, poi, è un ambiente molto chiuso e limitato, che non consente di smanettare più di tanto. Anche pensando di voler riscrivere da zero l’API di cui sopra, il problema si porrebbe lo stesso, perché è stato semplicemente rimandato a un livello di astrazione più basso.

Infatti servirebbero in ogni caso delle API, o appositi bytecode della virtual machine, per poter “comunicare con l’esterno” e permettere, quindi, di arrivare allo scopo ultimo.

Sembra una sequela di scatole cinesi da cui è difficile uscirne, ma le problematiche sollevate sono talmente delicate e fondamentali, che si arriva a questa sorta di paradossi irrisolvibili.

La seconda motivazione è che la descrizione di un’API non è necessariamente configurabile come codice vero e proprio, e quindi tutelabile dall’attuale normativa che riguarda il software.

Non parliamo di sorgenti copiati perché un’API può essere descritta in maniera diversa da come ha fatto Sun all’epoca. Si può cambiare lo stile, l’indentazione, i commenti, eventualmente anche il nome dei parametri (visto che in Java sono tutti posizionali), ma il succo non si può cambiare.

Il nome dell’API non può certo essere messo in discussione, come pure il tipo dei parametri: devono essere per forza quelli, altrimenti verrebbe meno l’elemento principale, cioè la definizione di una rigorosa interfaccia che consenta agli sviluppatori di utilizzarla, pena bacchettate sulle mani anche da parte del compilatore (o del linker, se vogliamo affrontare un discorso più generale).

Quindi si può pensare di fornire una descrizione diversa del “contratto”, ma certi punti sono assolutamente irrinunciabili; non si possono toccare.

Questo è il punto di vista di un programmatore, ma ce ne potrebbe essere uno completamente diverso, intendendo, con ciò, tralasciare l’aspetto meramente di sviluppo, ripensando, invece, quella di Sun come un’opera.

Immaginiamo nome e tipo di parametri come le componenti cromatiche utilizzate per realizzare un’API (un ben preciso colore), e le API come le pennellate che vanno, infine, a comporre un quadro.

E’ legittimo clonare un’opera d’arte? Correggetemi se sbaglio, ma mi sembra che la risposta sia negativa, mentre è perfettamente lecito clonare un preciso colore (sebbene in Italia il “rosso Ferrari” goda di un trattamento privilegiato).

Si potrebbe, quindi, pensare che il framework sviluppato da Sun possa godere di uno status diverso da quello di una normale applicazione, e che quindi Oracle possa rivendicare delle tutele che vanno oltre il mero codice.

Quanto sarebbe utile una presa di posizione del genere nel mondo dell’IT? Credo che estendere alle interfacce, e ai framework in generale, tutele di questo tipo comporterebbe non poche rogne in un mondo che ormai è fortemente dominato dal software… già scritto.

Da una parte se la tesi di Oracle può sembrare sensata (le API e il framework rappresentano il frutto del suo lavoro), dall’altra per i programmatori rappresenta un’autentica assurdità (senza “contratti” non si può realizzare il software).

Si tratta di una questione molto controversa, sulla quale personalmente trovo difficile prendere una posizione netta, perché cambia a seconda del punto di vista.

Voi cosa ne pensate?

21 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Alessandro
     scrive: 

    Personalmente credo che in linea di principio la definizione di una API é essa stessa un’opera dell’ingegno e che puó richiede notevoli risorse per essere sviluppata, a prescindere dalla sua implementazione, nei casi non banali. Quali oggetti bisogna esporre? Quali funzioni? Come devono essere raggruppate? Completezza? Ortogonalitá? Portabilitá? Semplicitá? Consistenza?

    Dopo che qualcuno ha investito risorse per rispondere a queste domande con una interfaccia soddisfacente, potrebbe volere un riconoscimento economico per il suo utilizzo (o vincolando l’accesso attraverso un proprio prodotto, o facendosi pagare dagli eventuali implementatori).
    Nulla toglie che societá o organizzazioni per gli standard possano mettere a disposizione le proprie interfacce gratuitamente.

    Mi viene in mente il caso della tavolozza Pantone che (se ben ricordo) é brevettata, nonostante sia ‘solo’ una sequenza di definizioni di colori…

    Detto questo, sono profondamente contrario alla protezione delle API, che renderebbero l’interoperabilitá piú difficile, renderebbero la vita dura al software Open Source (al pari di alcuni formati o protocolli ‘chiusi’), e obbligherebbero gli sviluppatori ad inventare interfacce alternative a quelle ‘ottimali’ o ‘naturali’ nel caso queste fossero giá protette.

    Mi ricordo la variante dell’algoritmo per le stencil shadows, chiamato Carmack Reverse (o simile) che tanti grattacapi diede alla Id al tempo di Doom3 perché, come si scoprí, era brevettato dalla (Creative?).

  • # 2
    Davide Costantini
     scrive: 

    Cosa ne penso? Difficile a dirsi, è una faccenda estremamente tecnica e che ha in mezzo dei risvolti importanti.

    Mi hanno colpito molto le parole di Florian Mueller, di FOSS Patents, che trova il gioco di Google molto opinabile. Secondo lui BigG ha preso il kernel di Android per distribuirlo con termini non compatibili con la GPL 2 e ha ricostruito una versione incompatibile di Java senza pagare una lira ad Orcale quando tutti gli altri l’hanno fatto. E poi distribuisce queste proprietà gratis imponendo delle limitazioni per lo sfruttamento del marketplace ed altri servizi.

    Tutto scritto qua: http://www.fosspatents.com/2012/05/oracle-v-google-fair-use-is-fairy-tale.html

    Fra le altre cose cita il Gosling che non ha apprezzato le politiche di Google e definisce Torvalds un’opportunista, che ha chiuso gli occhi sull’utilizzo del kernel di Android in quanto “felice” di una maggiore diffusione del suo lavoro.

    Le ipotesi di Mueller sono forti e sulla rete sto trovando pareri di tutti i colori. C’è da dire anche che Mueller è molto esperto sul campo.

    Onestamente non so cosa pensare oltre al fatto che abbiamo due aziende di più o meno lo stesso peso che si stanno confrontando su interessi economici. Non ci sono dubbi al riguardo.

    Il problema maggiore è che questo caso può rappresentare un precedente con effetti negativi o positivi sull’innovazione e lo sviluppo. Da quanto sto leggendo, mi sembra che se Oracle è tendenzialmente troppo protezionista e avvezza alla condivisione, Google dietro alla scusa di un fair use non ancora riconosciuto (si dovrà pronunciare il giudice) abbia preso tutto il prendibile per fornire una piattaforma alle condizioni che piacevano a lei. Almeno da un punto di vista letterario, è una storia appassionante.

  • # 3
    Davide Costantini
     scrive: 

    Ah comunque sempre Mueller afferma che le API sono soggette a copyright da prima di questo caso.

    L’aspetto delicato è che ora si parla di copiare “la sequenza, l’organizzazione e la struttura” delle API. Che è un concetto più evanescente.

    Nel codice di Dalvik sono state trovate 9 righe copiate che sono state poi rimosse. Sempre Mueller afferma che ci sono state violazioni macroscopiche di cui giudice e giuria non hanno tenuto conto, senza citarle però.

    Cito da qua: http://www.fosspatents.com/2012/05/partial-verdict-finds-google-to-have.html

    The Android documentation was not found to infringe the same APIs, and various smaller items, except for the nine-line rangeCheck function, were not deemed infringed. The latter makes no sense to me: there are code files in there that are much larger than the rangeCheck function, and infringement was so clear that it shouldn’t even have been put before a jury.

  • # 4
    Andrea Del Bene
     scrive: 

    Forse non conosco tutti i dettagli della disputa legale, ma l’intera storia mi sembra un’assurdità pazzesca.
    Java viene ormai rilasciato sotto licenza GPL 2.0, come si può pretendere il pagamento di royalties su un progetto open source!!??
    Se invece parliamo di incompatibilità tra GPL 2.0 e licenza Apache 2.0, beh questo è un altro paio di maniche.
    Non sono un amante di Android o Dalvik e su questi due progetti la penso in maniera simile a Florian Mueller, ma continuare a cercare di lucrare sulla tecnologia Java come fa Oracle mi sembra una semplice mossa di bieco patent trolling.
    E comunque pochi giorni fa l’alta corte europea ha stabilito che le API, almeno nel nostro continente non possono essere soggette a copyright

    http://arstechnica.com/tech-policy/news/2012/05/eus-top-court-apis-cant-be-copyrighted-would-monopolise-ideas.ars

  • # 5
    Davide Costantini
     scrive: 

    Si sapevo della sentenza della corte di giustizia europea.

    Le API contengono librerie e codice che possono essere soggette loro stesse a copyright. Se distribuisco del codice per uso non commerciale e tu lo usi per un tuo software che vendi, copiandolo, posso difendermi ovviamente (come è scritto su Ars): The EU’s highest court rejected these arguments. Computer code itself can be copyrighted, but functional characteristics—such as data formats and function names—cannot be.

    Quindi la questione è più spinosa di quanto non sembri.

    Per quanto riguarda la GPL 2.0, tutti coloro che hanno creato la propria macchina virtuale Java hanno pagato Oracle finora, per cui evidentemente non tutta la piattaforma Java è GPL 2.0. Credo almeno.

  • # 6
    Davide Costantini
     scrive: 

    @Andrea Del Bene Riguardo alla piattaforma Java, ti consiglio di leggere la sezione licensing di Wikipedia: http://en.wikipedia.org/wiki/Java_platform#Edition

    Potrebbe essere inesatta, comunque fa capire che non tutta la piattaforma è open source.

  • # 7
    Andrea Del Bene
     scrive: 

    @Davide Costantini
    Grazie! Questo purtroppo è vero nonstante i continui proclami di rendere la piattaforma interamente Open

  • # 8
    alex
     scrive: 

    Scusate però, giusto un appunto. Si è nominato più volte il famigerato Florian, ma questo tipo è uno sgherro al soldo di Oracle http://yro.slashdot.org/story/12/04/19/1357207/florian-mueller-outs-himself-as-oracle-employee

    E’ stato lui stesso ad affermarlo, come si può leggere nel link sopra.

    Inoltre, in passato, ha sempre cercato di spargere FUD sull’opensource ed è notorio troll in questo senso. Direi che il suo parere vale meno di zero. Non dico che Oracle non ha ragione, dico che quello che afferma Muller va preso con le pinze.

    Riguardo le api, non oso immaginare il caos che potrebbe scoppiare se fossero riconosciute le posizioni di Oracle. Già con la guerra dei brevetti c’è un clima infame. Se inizia pure la guerra delle api, chiudo baracca e compro una piantagione di eucalipto in Brasile.

    Come fa notare Cesare, è una questione di interoperabilità e quindi andrebbe ascritta alle misure antitrust. Ovvero riconosciamo il genio creativo di chi ha creato l’api, però facciamo prevalere l’interesse pubblico. Del resto le leggi nascono sempre da uno scontro privato-pubblico. E il pubblico vale più del privato.

  • # 9
    Floriano
     scrive: 

    Quindi openjdk non lo posso mettere dove mi pare? di open ha solo il nome?

  • # 10
    alex
     scrive: 

    @Floriano: http://en.wikipedia.org/wiki/OpenJDK#Sun.27s_promise_and_initial_release

    il fatto che oracle faccia finta di non conoscere cosa sun ha fatto prima dell’acquisizione, non ne cambia la sostanza

    la gpl2 non coprirà i brevetti certamente, ma il copyright si e oracle è ubriaca se pensa di averla vinta su questo fronte

  • # 11
    Davide Costantini
     scrive: 

    @alex, ti ringrazio per la segnalazione.

    Florian ha scritto sul suo primo topic su Oracle vs Google che la prima figurava fra i suoi clienti (appunto segnalato su Groklaw): http://www.fosspatents.com/2012/04/oracle-v-google-trial-evidence-of.html

    E’ scritto in modo trasparente alla fine. Certo è giusto pesare il suo coinvolgimento con la società di Ellison ma difficilmente un professionista con un blog non ha rapporti con le aziende.

    Sono incline a pensare che le sue parole non siano dettate meramente da direttive aziendali. Il dubbio comunque è lecito.

    Dato che FOSS Patents è un blog molto professionale e abbondantemente citato da player internazionali come Ars Technica, mi aspetto (e spero) che sugli aspetti tecnici ci sia poco di “rimaneggiato”.

    D’altra parte quando sopra scrivevo che avevo letto pareri contrastanti, mi riferisco al post di Groklaw di ieri che dava Google per vincente da tutti i punti di vista.

    La stampa di settore la pensa diversamente. Non essendo un esperto della materia mi trovo un po’ confuso. Vediamo cosa deciderà Alsup…

  • # 12
    alex
     scrive: 

    @Davide Costantini: il problema è proprio Alsup. Ha chiesto alla giuria di decidere sulla questione delle api, senza aver prima preso una posizione riguardo al relativo copyright. Ha detto “giudicate come se le api fossero proterre da copyright”. Logicamente l’unico verdetto possibile, stante questa ipotesi, è la colpevolezza.

    La stessa giuria non si è espressa sul fair use, il che rende il processo passibile di annullamento ( il famoso mistrial che si legge ovunque ).

    E Alsup, imho, non ha la benchè minima idea di che verdetto emettere sulla faccenda delle api. Visto l’orientamento attuale degli USA ( cioè la completa follia, brevetti campati in aria, ecc… ), il giudica sarebbe tentato di dare ragione ad Oracle. Ma sicuramente starà soppesando anche i danni ingenti che una decisione del genere genererebbe.

  • # 13
    Davide Costantini
     scrive: 

    Capisco, sembra che Alsup stia prendendo tempo per decidere.

    Comunque sono d’accordo che tutelare il diritto d’autore in una condizione di simile ‘vaghezza’ sia problematico.

    Solo una curiosità, ma quanti anni devono passare perchè il copyright sul codice ‘scada’? Qualcuno lo sa?

  • # 14
    Gabriele
     scrive: 

    @Davide: Il copyright attualmente in USA scade (pausa ad effetto)… dopo 110 anni!!

    Pensa che nel 2008 sono passati dai 90 ai 110 perchè altrimenti la Walt Disney perdeva il copyright su Michey Mouse. Siamo alla follia estrema a mio avviso.

    In particolare in ambito software il copyright non dovrebbe durare più di una 20ina di anni.

  • # 15
    Felice Pescatore
     scrive: 

    @Cesare: ottimo argomento di riflessione.

    Dal canto mio volevo aggiungere che la questione è decisamente “vecchia” tanto che la prima vera battaglia di proteggere le API risale all’accusa da parte di Gary Kildall (Digital Research) a Tim Paterson (poi a Microsoft) di aver creato il QDOS (86-DOS/MS-DOS/PC-DOS) clonando il proprio CP/M.
    In realtà quello che Paterson fece fu lo sviluppo di un sistema operativo per l’i8086 (presso la Seattle Computer Product) che implementava le stesse API del CP/M (a 8bit, poiché il CP/M 16 era ancora in stato embrionale) e che avrebbero permesso agli sviluppatori di automatizzare il porting delle applicazioni a 8bit sui sistema 16bit, secondo le regole di traslazione create da Intel, visto che l’interfacciamento con le System Call era immutato.
    In quel caso la questione, visto anche la novità dell’argomento, si chiuse con un accordo tra DR, IBM e MS.

    Da sviluppatore il mio parere è assolutamente in linea con quanto esposto nell’articolo: ritengo che le API, soprattutto per quei software che hanno una elevata diffusione e possono condizionare l’evoluzione dell’informatica stessa, debbano essere liberamente utilizzabili, ovvero re-implementabili in modo da favorire la condivisione della conoscenza dei vari domini applicativi.
    Il codice è, invece ed ovviamente, un altro discorso.

    Se volete approfondire: http://www.storiainformatica.it/index.php?option=com_content&view=article&id=232:leterna-accusa-di-plagio&catid=47:qdos&Itemid=108

  • # 16
    Cesare Di Mauro (Autore del post)
     scrive: 

    Ricordavo proprio quella storia, e con Alessio abbiamo avuto scontri memorabili in un suo articolo su Kildall. :D

    In tutto ciò c’è soltanto un appunto che mi sento di fare, e riguarda il fatto, peraltro esposto anche nei commenti, che API e framework nascono dal lavoro dell’azienda, che ha investito tempo e/o risorse allo scopo.

    Togliere dalle mani di Oracle le API di Java e renderle pubbliche per favorire un interesse maggiore, quello pubblico appunto, è sicuramente possibile, ma non ha forse diritto a un risarcimento? Chi dovrebbe pagare? E quanto?

    Per questo, pur prediligendo il punto di vista da programmatore, rimango tuttora perplesso e non riesco a prendere una posizione decisa e definitiva in un verso o nell’altro.

  • # 17
    banryu
     scrive: 

    Estratto dall’articolo citato da Cesare:


    In a nutshell, if the jury sides with Oracle that the copyrights in the headers of every file of the Java source base apply specifically to the syntax of the APIs, then Oracle can extract payment and penalties from Google for having implemented those APIs without Oracle’s blessing (or, in more specific terms, without a license).

    Should this come to pass, numerous products will suddenly find themselves on an uncertain legal standing in which the previously benign but now newly empowered copyright holders might assert punitive copyright claims. Chief among these would be any re-implementation of an existing language. So, Jython, IronPython, and PyPy for Python; JRuby, IronRuby, and Rubinius for Ruby; Mono for C# and VB; possibly C++ for C, GCC for C and C++ and Objective-C; and so forth. And of course, all the various browsers that use JavaScript might owe royalties to the acquirers of Netscape’s intellectual property.

    Sarebbe uno scenario da incubo… follia pura!
    Credo che questo aspetto relativo alle possibili conseguenze abbia un peso immenso e funga da forza di attrito.

  • # 18
    Davide Costantini
     scrive: 

    Beh però bisogna anche esercitarlo il diritto. Di violazioni della proprietà intellettuale il mondo è pieno, ma non tutti stanno a fare causa.

    Comunque sarebbe problematico.

    @Gabriele: ma siamo sicuri che duri 110 anni anche per il codice informatico? E’ spropositato (sapevo che i numeri fossero di questa entità per le opere artistiche).. Per me dovrebbe durare 20 anni anche per musica, film e quant’altro..

  • # 19
    Pluto
     scrive: 

    Come per le API del CP/M implementate da QDOS penso si possa fare una parallelo anche con le API di Windows implementate da WINE.

  • # 20
    Cesare Di Mauro (Autore del post)
     scrive: 

    Sì, esattamente, e lo stesso vale per ReactOS.

    Riguardo alla durata della tutela del codice, non ne ho idea.
    Pensavo fosse 30 anni, ma mi pare che ci siano aziende che mantengono ancora i diritti sui videogiochi apparsi negli anni ’70 e ’80.

    Comunque 20 anni per musica e film sono troppo pochi. Si tratta di opere che continuano ad avere validità e sono fruiti anche ben dopo la loro pubblicazione.

    20 anni li metterei per il software, considerato l’alto tasso di obsolescenza che ha come prodotto, ma col vincolo che della loro fruizione integrale per come sono stati concepiti.

    In altre parole Green Beret dopo 20 anni lo posso giocare liberamente col MAME o qualunque altro emulatore che simula il cabinato originale così com’è, ma se un’azienda vuole realizzarne un porting per uno smartphone, allora il limite dei 20 anni non si applica, perché viene generato un nuovo prodotto (e in questo caso sarebbe da vedere poi quanto vale il marchio e/o il codice dopo 20 anni).

  • # 21
    Davide Costantini
     scrive: 

    Sono in disaccordo Cesare. Si tratta di tutelare l’autore e non l’editore (che è un’azienda e avrà una vita molto più lunga). Se l’arte diventa di dominio pubblico presto e l’autore viene ricompensato per 20 anni, non una mensilità, che problema c’è?

    Se faccio una canzone apprezzata e acquistata oggi continuerò a giovarne delle vendite fino a quando avrò 47 anni. Mica tanto male… Nel frattempo posso fare altro.

    Comunque è questione di opinioni, non voglio porta OT i commenti.

    Sul codice i tempi devono essere bassi dato che il copyright sul software ha una funzione “vicina” a quella del brevetto. Che non vale certo 110 anni -.-‘

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.