Dziesięć lat po Oracle po raz pierwszy pozwał Google nad kodem w platformie Android, dwa giganty technologiczne są wreszcie zmierzyć się w Sądzie Najwyższym. Od tego czasu, nie było trzy procesy i dwie apelacje. W grę wchodzą miliardy dolarów, wiele milionów zostało prawdopodobnie wydanych na paradę doświadczonych prawników, biegłych sądowych i dziwacznych eksponatów procesowych mających na celu wyjaśnienie programowania nietechnicznym ławnikom. Wszystko to może zbliżać się do antyklimatycznego zamknięcia w środę rano, z telekonferencyjną rozprawą Sądu Najwyższego w środku pandemii.
Gdy Google po raz pierwszy stworzyło Androida, zdecydowało się uczynić mobilną platformę kompatybilną z Javą. W tym czasie aplikacje dla środowiska iOS były pisane w Objective-C, języku, który był podobny do wszechobecnego C, ale poza tym dość mocno wykorzystywany tylko w kontekście rozwoju aplikacji iOS. Apple miał znaczną przewagę w mobile.
Google dążyło do uczynienia Androida konkurencyjnym poprzez uczynienie platformy interoperacyjną z Javą, popularnym językiem programowania z solidną społecznością programistów. Aby to zrobić, firma ponownie zaimplementowała kilka interfejsów API Java, w tym 37, które są przedmiotem pozwu. Dla Oracle i Google, pozew jest o tym, czy Oracle – który jest właścicielem Java Standard Edition – jest teraz uprawniony do kawałka Androida, do melodii miliardów dolarów. Dla wszystkich innych, pozew jest o tym, czy kompatybilność językowa jest równoznaczne z naruszeniem praw autorskich.
Mówiąc bardzo delikatnie, to był inny świat, kiedy sprawa została po raz pierwszy złożony. Obie firmy zmieniły właściciela – pozew rozpoczął się, gdy Larry Ellison był jeszcze u steru Oracle, a Eric Schmidt był prezesem Google. Google jest teraz spółką zależną Alphabet. Android jest na wersji 11. Jedyną rzeczą, która wydaje się pozostać niezmieniona jest popularność Javy jako języka programowania.
Ale daleko od Doliny Krzemowej, nastąpiła zmiana morza, która obejmuje znacznie więcej niż tylko 6 miliardów dolarów i przyszłość prawa autorskiego. Trzy miejsca w Sądzie Najwyższym zostały opróżnione od ostatniego czasu, kiedy Google poprosił wysoki sąd o rozpatrzenie jego sprawy. W 2014 roku, SCOTUS odmówił certiorari, wysyłając sprawę z powrotem do sądu okręgowego w San Francisco na ponowny proces. Od tego czasu jeden sędzia przeszedł na emeryturę, a dwóch zmarło – ostatnio sędzia Ruth Bader Ginsburg.
Najmniej istotną częścią spuścizny Ginsburg jest to, że była ona najbardziej wiarygodnym głosem w sprawach dotyczących prawa autorskiego, z tendencją do głosowania na korzyść posiadaczy praw. Jej strata oznacza również, że sprawa Google v. Oracle jest rozpatrywana przez ośmiu sędziów i dlatego jest podatna na podział sądu. (W 1996 roku w sprawie o prawa autorskie do oprogramowania Lotus v. Borland, sąd ośmiu sędziów podzielił się równo i nie był w stanie ustanowić krajowego precedensu).
Gdy sprawa Google v. Oracle rozpoczęła się w 2010 roku, dotyczyła siedmiu patentów, jak również roszczenia z tytułu praw autorskich; do 2012 roku sprawa została ograniczona do zaledwie 37 interfejsów API Java, składających się z około 11 500 linii kodu. (Szacunki mówią o Androidzie w okolicach 12 milionów linii kodu.) Te 11,500 linii spornego kodu zostało napisane w „czystym pokoju”, projekcie odizolowanym od istniejącego kodu, który był poddawany inżynierii wstecznej. Ten wyczyn inżynierski stał się konieczny, gdy negocjacje między Google i Sun Microsystems – właścicielem platformy Java – zakończyły się fiaskiem. Oracle nabył Sun na początku 2010 roku; do sierpnia, to złożył pozew przeciwko Google.
Interfejs programowania aplikacji (API) w tym kontekście jest zbiór dobrze zdefiniowanych interakcji w programowaniu oprogramowania. Jest to skrót do szybkiego dostępu do usług, bibliotek i innych funkcji. API może skondensować powszechnie używany lub czasochłonny kod, pozwalając programistom budować bez konieczności ponownego wymyślania koła.
An API nie jest dokładnie słownikiem, ale jest na tyle blisko jednego, że Oracle v. Google stanowi ogromny problem. Technicznie rzecz biorąc, można programować w Javie, nie używając 37 pakietów Java API, o których mowa. Ale prawdopodobnie nie pisałbyś nic użytecznego, ponieważ te API zawierają java.lang i java.util, podstawowe pakiety, które oferują funkcje takie jak wykonywanie działań matematycznych lub reprezentowanie dat i czasu. Mogę również technicznie napisać ten artykuł bez żadnych metafor i porównań, ale nie jest to coś, co chciałbym zrobić, ani co ktokolwiek chciałby przeczytać.
Aby było jasne, 37 interfejsów API Javy zostało ponownie zaimplementowanych w czystym pomieszczeniu. Oracle nie twierdzi, że są one dokładnie takie same, ale raczej, że „struktura, sekwencja i organizacja” interfejsów API są tak podobne, że naruszają prawo autorskie. Oznacza to, że pakiety, klasy i metody w tych interfejsach API są nazwane tak samo. Linia kodu napisana do uruchomienia w Java Standard Edition niekoniecznie będzie działać na Androidzie, ale będzie o wiele bliżej niż w innym przypadku.
Bardzo pierwszy bieg na pozew spowodował podzielony proces w 2012 roku – jeden proces dla roszczeń patentowych, a drugi proces tylko dla roszczeń praw autorskich. W procesie patentowym, ława przysięgłych orzekła, że Google nie naruszył żadnych patentów. W procesie dotyczącym praw autorskich, dwie odrębne kwestie prawne były przedmiotem sporu: po pierwsze, czy kod deklaratywny oraz „struktura, sekwencja i organizacja” API były objęte prawem autorskim; a po drugie, czy wykorzystanie przez Google było uczciwym wykorzystaniem. Sędzia orzekł w kwestii praw autorskich, i wysłał kwestię uczciwego wykorzystania do oceny przez ławę przysięgłych.
Ława przysięgłych zawisła w kwestii uczciwego wykorzystania. Ale sędzia – który przypadkowo pisał kod jako hobby – orzekł, że kod deklaratywny i SSO interfejsów API nie były objęte prawem autorskim. Ustawa o prawie autorskim nie odnosi się do żadnej „idei, procedury, procesu, systemu, metody działania”, a sposób, w jaki pakiety, klasy i metody zostały nazwane i posortowane był zbyt funkcjonalny, aby uznać go za godny prawa autorskiego.
To właśnie to konkretne orzeczenie zostało obalone przez Federal Circuit w 2014 roku. Ponieważ pierwsza ława przysięgłych zawiesiła się na sprawiedliwym użyciu, całkowicie nowa ława przysięgłych musiała zostać zwołana na jeszcze jeden proces w sprawie sprawiedliwego użycia w 2016 roku. Ława przysięgłych opowiedziała się po stronie Google.
Ale w 2018 roku Federal Circuit – ten sam sąd apelacyjny, który w 2014 roku odesłał sprawę z powrotem do ławy przysięgłych – orzekł, że werdykt ławy przysięgłych musi zostać uchylony na korzyść Oracle, ponieważ dowody przedstawione w procesie wyraźnie wskazywały, że nie można było osiągnąć ustalenia sprawiedliwego wykorzystania, a zatem nie powinien był trafić do ławy przysięgłych w pierwszej kolejności.
Unieważnienie werdyktu ławy przysięgłych to Big Judge Energy w sposób, który z pewnością będzie kontrowersyjny dla Sądu Najwyższego, i jest prawdopodobne, że środowa rozprawa będzie zawierała sporo dyskusji na temat roli sędziego i ławy przysięgłych w sprawach dotyczących praw autorskich. Pytanie o to, kto ma decydować o sprawiedliwym użyciu i kiedy, jest czymś, co może być ekstrapolowane na wiele różnych przypadków prawnych (które SCOTUS kocha), a także nie ma nic wspólnego z matematyką (której SCOTUS nie kocha).
Niestety prawdziwe serce sprawy leży w części z całą matematyką i takimi. Decyzja Sądu Najwyższego w sprawie Google v. Oracle może mieć ogromne konsekwencje dla przemysłu software’owego, przede wszystkim dlatego, że Sąd Najwyższy może ponownie rozpatrzyć kwestię copyrightability – pytanie, czy kod deklaratywny i struktura, sekwencja i organizacja API Javy są w ogóle objęte prawem autorskim – która nie była w grze od 2014 r.
Ten trwający dekadę mecz urazy między Google i Oracle nie jest całkowicie racjonalny. Reimplementacja API Javy przez Google jest częścią długiej tradycji iteracji, która do tej pory była w większości uznawana za oczywistą. Produkty takie jak MySQL firmy Oracle zostały stworzone jako iteracje SQL firmy IBM.
Nie oznacza to, że kopiuj-wklej jest sercem Doliny Krzemowej. Ale jest taki punkt, w którym chcesz zachęcić rzeczy do wyglądania tak samo, a nie do bycia różnymi dla samej różnicy. Ujmując rzecz z grubsza: kodowanie to proces mówienia do maszyny. Ale bardzo niewielu ludzi, którzy tworzą oprogramowanie w dzisiejszych czasach, tak naprawdę rozmawia bezpośrednio z maszyną. Oprogramowanie istnieje w warstwach iteracyjnych, w grze szeptów, która w końcu dociera do gołego metalu komputera. Nowe języki wywodzą się ze starych; nowe biblioteki są budowane na już istniejących; zależności są układane jedna na drugiej jak gra w Jenga, która może się skończyć w każdej chwili. A sprawa Google przeciwko Oracle to sprawa, która toczy się na jednym z najniższych poziomów trwającej gry w Jengę.
Zaraz się przekonamy, czy Sąd Najwyższy o tym wie.
Sprostowanie: Wcześniejsza wersja artykułu błędnie podała, że baza kodu Androida to miliardy linii kodu. Jest to liczba liczona w milionach. Przepraszamy za ten błąd.