Dieci anni dopo che Oracle ha fatto causa a Google per il codice della piattaforma Android, i due giganti della tecnologia si stanno finalmente affrontando alla Corte Suprema. Da allora, ci sono stati tre processi e due appelli. Miliardi di dollari sono in gioco; molti milioni sono stati probabilmente spesi in una parata di esperti avvocati, testimoni esperti, e bizzarre prove di processo destinate a spiegare la programmazione a giurie non tecniche. Tutto questo potrebbe concludersi in modo anticlimatico mercoledì mattina, con una teleconferenza della Corte Suprema nel bel mezzo di una pandemia.
Quando Google ha sviluppato Android, ha deciso di rendere la piattaforma mobile compatibile con Java. All’epoca, le applicazioni per l’ambiente iOS erano scritte in Objective-C, un linguaggio simile all’onnipresente C, ma per il resto utilizzato praticamente solo nel contesto dello sviluppo di app per iOS. Apple aveva un vantaggio significativo nel settore mobile.
Google mirava a rendere Android competitivo rendendo la piattaforma interoperabile con Java, un linguaggio di programmazione popolare con una robusta comunità di sviluppatori. Per fare questo, l’azienda ha reimplementato diverse API Java, incluse le 37 che sono in questione nella causa. Per Oracle e Google, la causa riguarda il fatto che Oracle – che possiede Java Standard Edition – ha ora diritto a un pezzo di Android, al ritmo di miliardi di dollari. Per tutti gli altri, la causa riguarda il fatto che la compatibilità del linguaggio equivale alla violazione del copyright.
Per dirla tutta, era un mondo diverso quando la causa è stata presentata per la prima volta. Entrambe le aziende hanno cambiato mano – la causa è iniziata quando Larry Ellison era ancora al timone di Oracle e Eric Schmidt era il CEO di Google. Google è ora una filiale di Alphabet. Android è alla versione 11. L’unica cosa che sembra essere rimasta la stessa è la popolarità di Java come linguaggio di programmazione.
Ma lontano dalla Silicon Valley, c’è stato un cambiamento del mare che comprende molto più di un semplice 6 miliardi di dollari e il futuro della legge sul copyright. Tre posti della Corte Suprema sono stati liberati dall’ultima volta che Google ha chiesto alla Corte Suprema di rivedere il suo caso. Nel 2014, la SCOTUS ha negato il certiorari, rimandando il caso alla corte distrettuale di San Francisco per un nuovo processo. Da allora, un giudice si è ritirato e due sono deceduti – più recentemente, il giudice Ruth Bader Ginsburg.
La parte in assoluto meno importante dell’eredità della Ginsburg è che era il voto più affidabile nei casi di diritto d’autore, tendendo a votare a favore dei titolari dei diritti. La sua perdita significa anche che Google contro Oracle sarà ascoltato da otto giudici e quindi è incline a una corte divisa. (Nel caso del copyright del software del 1996, Lotus contro Borland, una corte di otto giudici si divise equamente e non fu in grado di stabilire un precedente nazionale).
Quando Google contro Oracle iniziò nel 2010, coinvolgeva sette brevetti oltre a una rivendicazione di copyright; nel 2012, il caso era stato ridotto a sole 37 API Java, composte da circa 11.500 righe di codice. (Le 11.500 linee di codice in questione sono state scritte in una “camera bianca”, un progetto isolato dal codice esistente che stavano reingegnerizzando. Questa impresa di ingegneria è diventata necessaria quando le trattative tra Google e Sun Microsystems – che possedeva la piattaforma Java – sono fallite. Oracle ha acquisito Sun all’inizio del 2010; entro agosto, aveva intentato una causa contro Google.
Un’interfaccia di programmazione delle applicazioni (API) in questo contesto è un insieme di interazioni ben definite nella programmazione del software. È un’abbreviazione per accedere rapidamente a servizi, librerie e altre funzioni. Un’API può condensare il codice comunemente usato o verboso, permettendo ai programmatori di costruire senza dover reinventare la ruota.
Un’API non è esattamente un dizionario, ma è abbastanza vicino ad esso che Oracle contro Google pone un problema enorme. Tecnicamente, si può programmare in Java senza usare i 37 pacchetti API Java in questione. Ma probabilmente non si scriverebbe nulla di utile, dato che quelle API includono java.lang e java.util, pacchetti di base che offrono funzioni come fare matematica o rappresentare date e orari. Posso anche tecnicamente scrivere questo articolo senza metafore o similitudini, ma non è qualcosa che vorrei fare, o che qualcuno vorrebbe leggere.
Per essere chiari, le 37 API Java sono state reimplementate in una camera bianca. Oracle non sta affermando che sono testualmente le stesse, ma piuttosto che la “struttura, la sequenza e l’organizzazione” delle API sono così simili da violare la legge sul copyright. Con questo, significa che i pacchetti, le classi e i metodi in queste API hanno lo stesso nome. Una linea di codice scritta per funzionare in Java Standard Edition non funzionerà necessariamente su Android, ma si avvicinerà molto di più di quanto non avrebbe fatto altrimenti.
La prima volta che la causa è stata intentata ha portato ad un processo biforcato nel 2012 – un processo per le richieste di brevetto e un secondo processo solo per le richieste di copyright. Nel processo sui brevetti, la giuria ha stabilito che Google non aveva violato alcun brevetto. Nel processo sul copyright, erano in discussione due punti legali separati: primo, se il codice di dichiarazione e la “struttura, la sequenza e l’organizzazione” delle API fossero tutelabili da copyright; e secondo, se l’uso di Google fosse un uso corretto. Il giudice si è pronunciato sulla questione della copiabilità, e ha mandato la questione dell’uso corretto ad essere valutata dalla giuria.
La giuria si è fermata sull’uso corretto. Ma il giudice – che casualmente scriveva codice per hobby – ha stabilito che il codice di dichiarazione e l’SSO delle API non erano coperti da copyright. Il Copyright Act non si applica a qualsiasi “idea, procedura, processo, sistema, metodo di funzionamento”, e il modo in cui i pacchetti, le classi e i metodi erano nominati e ordinati era troppo funzionale per essere considerato degno di copyright.
È stata questa specifica sentenza che è stata ribaltata dal Federal Circuit nel 2014. Poiché la prima giuria si era bloccata sul fair use, una giuria completamente nuova ha dovuto essere convocata per un altro processo sul fair use nel 2016. La giuria si è schierata con Google.
Ma nel 2018, il Federal Circuit – la stessa corte d’appello che nel 2014 aveva rimandato il caso alla giuria – ha stabilito che il verdetto della giuria doveva essere annullato a favore di Oracle, perché le prove presentate al processo indicavano chiaramente che non si poteva giungere a una determinazione del fair use, e quindi non si sarebbe dovuto andare da una giuria in primo luogo.
Accantonare un verdetto della giuria è Big Judge Energy in un modo che è destinato ad essere controverso per la Corte Suprema, ed è probabile che la discussione orale di mercoledì sarà caratterizzata da una buona quantità di discussioni sul ruolo del giudice contro la giuria in un caso di copyright. La questione di chi deve decidere il fair use, e quando, è qualcosa che può essere estrapolato in molti casi legali diversi (che lo SCOTUS ama) e non ha niente a che fare con la matematica (che lo SCOTUS non ama).
Purtroppo il vero cuore del caso sta nella parte con tutta la matematica e simili. La decisione della Corte Suprema in Google contro Oracle potrebbe avere enormi ramificazioni per l’industria del software, soprattutto perché la Corte Suprema potrebbe rivisitare la questione della copiabilità – la questione se il codice dichiarativo e la struttura, la sequenza e l’organizzazione delle API Java siano coperti dalla legge sul copyright – che non è più in gioco dal 2014.
Questo decennale scontro tra Google e Oracle non è completamente razionale. La reimplementazione delle API Java da parte di Google fa parte di una lunga tradizione di iterazione che era per lo più data per scontata fino ad ora. Prodotti come MySQL di Oracle sono stati creati come iterazioni dell’SQL di IBM.
Questo non vuol dire che il copia-incolla sia il cuore della Silicon Valley. Ma c’è un punto in cui si vuole incoraggiare le cose a sembrare uguali, piuttosto che essere diverse per il gusto della differenza. Per mettere le cose in modo approssimativo: il coding è il processo di parlare alla macchina. Ma pochissime persone che sviluppano software al giorno d’oggi parlano davvero direttamente alla macchina. Il software esiste in strati su strati iterativi, un gioco di sussurri che alla fine raggiunge il nudo metallo del computer. Nuovi linguaggi sono derivati dai vecchi; nuove librerie sono costruite su quelle esistenti; le dipendenze sono impilate l’una sull’altra come un gioco di Jenga che sta per finire da un momento all’altro. E Google contro Oracle è un caso che sta accadendo ad uno dei livelli più bassi di un gioco di Jenga in corso.
Stiamo per scoprire se la Corte Suprema lo sa.
Correzione: Una versione precedente dell’articolo affermava erroneamente che il codice base di Android era di miliardi di linee di codice. È nell’ordine dei milioni. Ci scusiamo per l’errore.