Tio år efter att Oracle först stämde Google om koden i Android-plattformen står de två teknikjättarna äntligen mot varandra i Högsta domstolen. Sedan dess har det skett tre rättegångar och två överklaganden. Miljarder dollar står på spel; många miljoner har sannolikt spenderats på en parad av erfarna processförare, expertvittnen och bisarra rättegångsföremål som syftar till att förklara programmering för icke-tekniska juryer. Allt detta kan komma att få ett antiklimatiskt slut på onsdag morgon, med en muntlig argumentation i Högsta domstolen i en telekonferens mitt i en pandemi.
När Google först utvecklade Android bestämde man sig för att göra den mobila plattformen kompatibel med Java. På den tiden skrevs appar för iOS-miljön i Objective-C, ett språk som liknade det allestädes närvarande C men som annars i stort sett bara användes i samband med utveckling av iOS-appar. Apple hade ett betydande försprång inom mobilområdet.
Google strävade efter att göra Android konkurrenskraftigt genom att göra plattformen kompatibel med Java, ett populärt programmeringsspråk med en robust utvecklargemenskap. För att göra det implementerade företaget om flera Java API:er, inklusive de 37 som är aktuella i stämningen. För Oracle och Google handlar stämningen om huruvida Oracle – som äger Java Standard Edition – nu har rätt till en del av Android, till ett värde av flera miljarder dollar. För alla andra handlar stämningen om huruvida språkkompatibilitet är liktydigt med upphovsrättsintrång.
För att uttrycka sig milt var det en annan värld när målet först lämnades in. Båda företagen har bytt ägare – stämningen inleddes när Larry Ellison fortfarande stod i spetsen för Oracle och Eric Schmidt var vd för Google. Google är nu ett dotterbolag till Alphabet. Android är på version 11. Det enda som tycks ha förblivit detsamma är Javas popularitet som programmeringsspråk.
Men långt borta från Silicon Valley har det skett en havsförändring som omfattar mycket mer än bara 6 miljarder dollar och upphovsrättslagens framtid. Tre platser i Högsta domstolen har blivit lediga sedan Google senast bad högsta domstolen att granska sitt fall. År 2014 nekade SCOTUS certiorari och skickade tillbaka fallet till distriktsdomstolen i San Francisco för en ny rättegång. Sedan dess har en domare gått i pension och två har avlidit – senast domare Ruth Bader Ginsburg.
Den absolut minst viktiga delen av Ginsburgs arv är att hon var den mest pålitliga rösten i upphovsrättsfall och tenderade att rösta till förmån för rättighetsinnehavare. Hennes förlust innebär också att Google mot Oracle prövas av åtta domare och är därför benägen att få en splittrad domstol. (I upphovsrättsfallet Lotus v. Borland från 1996 om upphovsrätt till programvara var en domstol med åtta domare jämnt splittrad och kunde inte skapa ett nationellt prejudikat).
När Google v. Oracle inleddes 2010 omfattade det sju patent samt ett upphovsrättsligt anspråk. 2012 hade fallet minskats till endast 37 Java API:er, som bestod av cirka 11 500 rader kod. (Uppskattningar visar att Android har omkring 12 miljoner rader kod.) De 11 500 raderna kod i fråga skrevs i ett ”rent rum”, ett projekt som var avskilt från den befintliga koden som de reverse-engineered. Denna tekniska bedrift blev nödvändig när förhandlingarna mellan Google och Sun Microsystems – som ägde Javaplattformen – misslyckades. Oracle förvärvade Sun i början av 2010, och i augusti hade företaget lämnat in en stämningsansökan mot Google.
Ett gränssnitt för tillämpningsprogrammering (API) är i det här sammanhanget en samling väldefinierade interaktioner inom programvaruprogrammering. Det är en förkortning för att snabbt få tillgång till tjänster, bibliotek och andra funktioner. Ett API kan komprimera vanligt förekommande eller verbal kod, vilket gör att programmerare kan bygga utan att behöva uppfinna hjulet på nytt.
Ett API är inte precis ett lexikon, men det är tillräckligt nära ett sådant för att Oracle mot Google utgör ett stort problem. Tekniskt sett kan man programmera i Java utan att använda de 37 Java API-paketen i fråga. Men du skulle förmodligen inte skriva något användbart, eftersom dessa API:er omfattar java.lang och java.util, grundläggande paket som erbjuder funktioner som att göra matematik eller representera datum och tider. Tekniskt sett kan jag också skriva den här artikeln utan metaforer eller liknelser, men det är inte något som jag skulle vilja göra, eller som någon skulle vilja läsa.
För att vara tydlig, de 37 Java API:erna implementerades på nytt i ett rent rum. Oracle hävdar inte att de är ordagrant likadana, utan snarare att ”strukturen, sekvensen och organisationen” av API:erna är så lika att de bryter mot upphovsrättslagen. Med detta menas att paketen, klasserna och metoderna i API:erna har samma namn. En kodrad som är skriven för att köras i Java Standard Edition kommer inte nödvändigtvis att köras på Android, men den kommer mycket närmare än vad den annars skulle ha gjort.
Det allra första försöket med stämningen resulterade i en delad rättegång 2012 – en rättegång för patentanspråken och en andra rättegång bara för upphovsrättsanspråken. I patenträttegången beslutade juryn att Google inte hade gjort intrång i några patent. I rättegången om upphovsrätt handlade det om två separata rättsliga punkter: för det första om deklarationskoden och ”struktur, sekvens och organisation” av API:erna var upphovsrättsligt skyddade, och för det andra om Googles användning var en skälig användning. Domaren avgjorde frågan om upphovsrätten och skickade frågan om rättvis användning till juryn för bedömning.
Justyn var enig i frågan om rättvis användning. Men domaren – som av en slump skrev kod som hobby – beslutade att deklarationskoden och SSO för API:erna trots allt inte omfattades av upphovsrätten. Upphovsrättslagen gäller inte för någon ”idé, procedur, process, system, driftmetod”, och sättet som paketen, klasserna och metoderna namngavs och sorterades på var för funktionellt för att anses vara värt att omfattas av upphovsrätt.
Det var detta specifika beslut som upphävdes av Federal Circuit 2014. Eftersom den första juryn hade hängt sig i frågan om rättvis användning måste en helt ny jury sammankallas för ännu en rättegång om rättvis användning 2016. Juryn ställde sig på Googles sida.
Men 2018 beslutade Federal Circuit – samma appellationsdomstol som 2014 hade skickat tillbaka fallet till juryn – att juryns utslag måste upphävas till förmån för Oracle, eftersom den bevisning som presenterades vid rättegången tydligt visade att det inte gick att komma fram till ett beslut om rättvis användning, och att det därför inte borde ha gått till en jury från början.
Att åsidosätta en jurydom är Big Judge Energy på ett sätt som säkerligen kommer att vara kontroversiellt för Högsta domstolen, och det är troligt att onsdagens muntliga argumentation kommer att innehålla en hel del diskussioner om rollen som domare kontra jury i ett upphovsrättsfall. Frågan om vem som får avgöra fair use, och när, är något som kan extrapoleras ut till många olika rättsfall (vilket SCOTUS älskar) och som inte heller har något att göra med matematik (vilket SCOTUS inte älskar).
Det verkliga hjärtat i målet ligger tyvärr i den del med all matematik och liknande. Högsta domstolens beslut i Google mot Oracle kan få enorma konsekvenser för mjukvarubranschen, framför allt för att Högsta domstolen kan komma att återuppta frågan om upphovsrätt – frågan om huruvida den deklarerande koden och strukturen, ordningsföljden och organiseringen av Javas API:er överhuvudtaget omfattas av upphovsrättslagen – som inte varit aktuell sedan 2014.
Denna decennielånga grudge-match mellan Google och Oracle är inte en helt rationell sådan. Googles omimplementering av Java API:erna är en del av en lång tradition av iteration som till största delen har tagits för givet fram tills nu. Produkter som Oracles eget MySQL skapades som iterationer av IBM:s SQL.
Detta betyder inte att copy-pasting är hjärtat av Silicon Valley. Men det finns en punkt där man vill uppmuntra saker att se likadana ut, snarare än att vara olika för skillnadens skull. För att uttrycka det grovt: kodning är processen att tala till maskinen. Men mycket få personer som utvecklar programvara i vår tid talar faktiskt direkt till maskinen. Mjukvara existerar i lager efter lager, ett spel av viskningar som till slut når fram till den nakna metallen i datorn. Nya språk härleds från de gamla, nya bibliotek byggs på befintliga bibliotek, beroenden staplas på varandra som ett Jenga-spel som när som helst kan ta slut. Och Google mot Oracle är ett fall som sker på en av de lägsta nivåerna i ett pågående Jenga-spel.
Vi kommer snart att få reda på om Högsta domstolen vet det.
Korrigering: I en tidigare version av artikeln stod det felaktigt att Android-kodbasen bestod av miljarder rader kod. Det rör sig om miljontals koder. Vi beklagar felet.