The Verge рассказал историю судьи, чьи знания в области программирования помогают решать самые крупные судебные дела из мира технологий.
18 мая 2012 года состоялось слушание судебного разбирательства между Oracle и Google из-за функции rangeCheck. Oracle проверила 15 миллионов строчек кода Google и обнаружила, что девять из них были полностью скопированы. Компания обвинила поискового гиганта в том, что тот украл часть кода Oracle для своей системы Android, чтобы побыстрее вывести ее на рынок.
Слушание тогда вел судья Уильям Алсап. «До суда я ничего не знал о Java, — признался он. — Но у меня был опыт работы с другими языками программирования, и я до сих пор иногда кодю. Я сотни раз писал функции вроде rangeCheck. Это по силам каждому. Даже вам. Да, это настолько просто».
Его слова быстро подхватили юристы, а затем пресса. И с каждым разом уровень мастерства Алсапа в глазах СМИ рос — так его стали называть «судьей, который выучил Java», «судьей-программистом», «гиком в судейской мантии» и «мастером суда и Java».
Фото: The Verge
Алсап вот уже десятки лет программирует на BASIC и пишет программы ради развлечения. Например, для жены он сделал программу для игры в бридж и написал автоматизированное решение для своей любимой настольной игры Mastermind.
Алсап научился программированию сам. Он увлекается этим занятием еще с 1985 года, когда у него появился первый компьютер — старенький IBM, который стоял в углу сарая на ранчо. К компьютеру прилагались две книги — одна про операционную систему DOS, а вторая про язык программирования BASIC. «Однажды я нашел книгу про BASIC и решил его выучить. Книга была написана довольно прямолинейно, по ней я и научился», — признался Алсап. Первые программы, которые он написал, делали обычные математические вычисления. Затем судья начал делать более сложные алгоритмы — для игры в блэкджек и покер. Больше всего Алсап гордится своей многофункциональной программой для любительской радиосвязи, которая помогает определить, когда лучше передавать радиосигнал в ту или иную точку мира. В 1995 году, когда он ее писал, на рынке уже были аналогичные программы. «Мне было просто интересно узнать, получится ли у меня сделать свою», — рассказал судья.
Увлечение помогло Алсапу в работе над судебными делами, связанными с многомиллиардной интеллектуальной собственностью. Как оказалось, технические тонкости подобных разбирательств понимает только один судья — Алсап. Когда ему передали дело между Waymo и Uber, тот тщательно изучил технологию лидаров, которая используется в беспилотниках.
Отрывок из заявления судьи по делу Oracle против Google.
Индустрия технологий уже давно испытывает проблемы из-за того, что юристы не понимают сути разбираемого вопроса. Доказать нарушение прав на программное обеспечение не так-то просто. Если речь идет о музыке, фильмах, книгах и картинах, легко заметить, что какой-то элемент скопирован. Программный код внесли в американский Закон об авторском праве с опозданием, причем отнесли его к разделу 102(а) «литературное творчество». Обычно авторское право распространяется на творчество, а не на нечто функциональное или полезное.
Но что такое код — функциональное средство или творческое видение процесса? Поскольку код «содержит смысл», его можно отнести к творчеству, а значит и защитить авторским правом. Кроме того, программисты считают, что код бывает «красивым» или «плохо написанным». Но когда код используется для приведения в движение роборуки, которая закручивает болт, он скорее выступает в качестве функционального средства, а значит на него не распространяется закон об авторском праве.
«Суд уже давно мучается над этим вопросом, — признался Джеймс Гриммельман, профессор юриспруденции в Корнеллском технологическом институте и бывший программист Microsoft. — На самом деле очень сложно разделить программу на функциональные и нефункциональные части. Для этого нужно очень хорошее понимание вопроса».
В деле между Oracle и Google рассматривается конкретная часть программы — ее программный интерфейс или API. API представляет собой коллекцию прописанных взаимодействий, можно сказать, условных обозначений для быстрого доступа к сервисам, библиотекам и прочим функциям. API можно сравнить со словарями, однако, старший адвокат агентства Public Knowledge Джон Бергмайер считает, что программный интерфейс скорее напоминает словарь пословиц и идиом. Чтобы правильно говорить на каком-либо языке, вам необязательно знать все идиомы, и вы редко будете применять их в речи. Но в некоторых случаях они могут пригодиться, чтобы кратко описать то, что пришлось бы долго объяснять. Точно так же функции API чаще используются в особенно сложном коде.
Фото: The Verge
Когда Google впервые создала Android, компания приняла решение, что операционная система будет совместима с языком программирования Java. Таким образом, ей бы могли воспользоваться представители готового сообщества разработчиков. На Java мог писать любой желающий, но создатели языка Sun Microsystems полностью контролировали использование стандартной и мобильной версии Java: эти версии можно было использовать только на компьютерах и мобильных телефонах соответственно.
После переговоров с создателями Java, инженеры Google сделали собственную возможность совместимости с Java SE. Решение фактически писалось с нуля, без доступа к исходному коду. В 2010 году Oracle приобрела Sun и через несколько месяцев подала в суд на Google. Несмотря на то что инженеры Google создавали свое решение самостоятельно, идентификационные элементы и структура кода совпадали с API стандартного издания Java. А еще там была функция rangeCheck — те самые девять строчек кода, которые вызывали претензии со стороны Oracle. Они попали в код благодаря Джошуа Блочу, который ранее работал в Sun Microsystems и имел доступ к API Java. Однако судья Алсап подтвердил, что это было всего лишь неудачное совпадение.
В итоге встал вопрос, является ли честным со стороны Google использование API Java. Судья Алсап решил, что никаких нарушений авторского права здесь нет, потому что нечего нарушать — структура и порядок кода API по своей природе являются функциональным средством, а не чьим-то авторским видением.
В судебных документах Алсап сделал подробный разбор того, как работает код, в чем разница между исходным и объектным кодом и прочие тонкости. В них даже можно найти целые куски кода. Сам судья не без гордости признает свои умения. «Я действительно считаю себя хорошим программистом, — сказал он. — Если вы взгляните на [мои] программы на QuickBASIC, то найдете там кое-какие искусные приемы, а ведь я самоучка. Но это, конечно, не Java».
В декабре Алсап будет участвовать в слушании Waymo против Uber. Перед этим он попросил компании выслать руководство по использованию технологии лидара, которое он внимательно изучил. Алсап хочет повысить уровень компьютерной грамотности и у своих коллег — так, перед слушанием Oracle против Google он попросил одного из секретарей пройти курсы по изучению компьютерных наук. На данный момент в свои 72 года Уильям Алсап является самым разбирающимся в технологиях американским судьей.
Материалы по теме:
Мой первый год программирования в реальном времени на Twitch: уроки и итоги
Нашли опечатку? Выделите текст и нажмите Ctrl + Enter
Материалы по теме
ВОЗМОЖНОСТИ
28 января 2025
03 февраля 2025
28 февраля 2025