Oracle vs. Google, si va avanti col copyright

Qualche settimana fa Google aveva presentato un istanza per un grado di giudizio sommario riguardante le accuse di violazione di copyright che fa parte dell’offensiva di Oracle nei confronti di Big G. Nella giornata di giovedì 15 settembre, il giudice William Alsup ha deciso di rigettare la mozione presentata da Google, e di conseguenza la questione verrà dibattuta in maniera completa in sede processuale. Questa sconfitta da parte di Google, in ogni caso, non pregiudica una sua vittoria in corte d’assise.

I motivi di questa sconfitta sembrano da addebitare al fatto che  Google, in seguito alla replica di Oracle, non è riuscita a spiegare ad un pubblico non esperto, com’è lo stesso giudice Alsup, la differenza tra un’effettiva copiatura del codice e quando tale copiatura rientra nei canoni di un’eccezione del copyright. In sostanza, ha mancato di fornire i dettagli sufficienti.

Senza entrare troppo nei dettagli della decisione (che potete trovare nell’articolo di Groklaw usato come fonte), vorrei cercare di spiegare il livello delle accuse di Oracle che Google ha cercato di evitare con la sua mozione per un giudizio sommario. In ballo c’è la discussione di 37 funzioni suddivise in 12 file che vanno a costituire l’intero corpo sia di Android sia di Java (nell’implementazione nativa di Sun).

Per entrare nell’ottica della questione, un esempio molto semplice può essere quello della funzione “valore assoluto”: si tratta cioè di una funzione che, a partire da un qualsiasi numero, ne restituisce il suo valore assoluto, cioè il valore del numero senza segno. Si tratta qualcosa di molto semplice, ed il funzionamento è ugualmente semplice e si può riassumere nel passaggio: “se n è minore di 0, restituisci –n, altrimenti restituisci n“. Ci possono essere diversi modi, all’atto pratico, per scrivere una funzione del genere, ma sono pressoché tutti equivalenti. Il punto è che la funzione è talmente banale da non rivelare alcuna opera di ingegno, e a nessun programmatore serio gliene importa nulla se il codice usato per la funzione “valore assoluto” viene copiato pari pari da un’altra parte.
public double abs(double n) {
return n < 0 ? -n : n;
}

Una delle funzioni in questione su cui si è scesi maggiormente nel dettaglio è la funzione rangeCheck all’interno di un più complesso set di API per l’ordinamento di una lista (un array, in termini di programmazione). C’è da notare che il codice della funzione di ordinamento, in sé, è completamente diverso da Java ad Android, ma la funzione rangeCheck è identica, in ogni suo carattere.

La funzione rangeCheck non fa proprio nulla di speciale: controlla semplicemente che un dato intervallo sia interamente contenuto negli estremi dall’array. Chiunque con un minimo di basi di programmazione può riconoscere la banalità della funzione, che nulla aggiunge al livello d’ingegno né di Java né di Android, e nessun programmatore si scandalizzerebbe venisse copiata nella sua interezza. Soprattutto se il programmatore in questione è lo stesso che prima l’ha scritta per Sun, e poi l’ha riportata in Android. Riscriverla per cambiare alcune virgole sarebbe stato semplicemente una perdita di tempo per qualcosa senza alcun interesse. La parte interessante, quella che veramente denota opera d’ingegno e che meriterebbe protezione dal copyright, è l’algoritmo TimSort che sta alla base dell’ordinamento degli array di Android, che è nettamente diverso da quello di Java.

Questo è il livello delle accuse di Oracle di violazione di copyright. Sono sicuro che in Oracle sappiano benissimo che tale livello è ridicolo, ma evidentemente il loro intento è quello unicamente di spennare Google, che ora dovrà fare uno sforzo in più in sede processuale per far valere le sue ragioni. E – si badi – non è detto che non ci riesca, perché non si può fare il ragionamento semplicistico “ha copiato => è colpevole”, ma ci sono alcune dottrine riguardo l’interpretazione del copyright negli Stati Uniti che possono far pendere la bilancia dalla parte di Google.

[Via Groklaw]

Commenti

Ti invitiamo ad usare toni consoni e di rimanere in tema all'argomento trattato, in caso contrario, il sistema automatico potrebbe oscurare il tuo messaggio e potrebbero trascorrere fino a 48h per la verifica ed un'eventuale autorizzazione.
TuttoAndroid si riserva comunque il diritto di allontanare le persone non adatte a tenere un comportamento corretto e rispettoso verso gli altri.

  • slater91

    Son proprio ridicoli. Oracle deve morire non una, ma cento volte. Avidi succhiasangue maledetti. Se solo il loro DB non fosse il meglio sulla piazza…

  • public double abs(double n) {
    return n < 0 ? -n : n;
    }

    potrebbe essere ricritto con

    public double abs (double n){
    if ( n < 0)
    return -n;
    return n;
    }

    Cambia il codice ma non il bytecode associato, è praticamente lo stesso metodo.

    • MaxArt

      Si può scrivere in mille maniere diverse (oddio, mille no, fai una ventina!), anche più semplicemente return n >= 0 ? n : -n;
      Il punto è che non gliene importa a nessuno di scriverla in altri modi, la funzione è talmente banale che si prende e si copia :)
      (Anzi, in questo caso magari si fa prima a riscriverla, ma perché si tratta giusto di una riga di codice… Fossero una decina, come in rangeCheck, allora si copia. A riscrivere abs(…) *sicuramente* lo si fa nello stesso identico modo di qualcun altro, soprattutto se ci si aggiunge la formattazione automatica dell'IDE. È forse violazione di copyright?)

  • Alberto

    Incredibile….senza parole. In questo modo scoraggiano lo sviluppo di applicazion open source e 1uindi gratuite…perché con un processo di m*del genere si potrebbe spennare chiunque. Ormai è la tattica delle aziende invidiose

Top