Зафиксированы и опровергнуты факты прямого копирования кода Java SE в Android

Флориан Мюллер (Florian Mueller), известный борец с патентованием программного обеспечения, опубликовал результаты изучения обоснованности обвинений Oracle в копировании оригинального кода платформы Java при реализации платформы Android. Выявленные в процессе исследования факты превзошли все ожидания - как минимум 43 файла в дереве исходных текстов платформы Android содержат достаточно большие блоки кода, полностью совпадающие с оригинальным кодом платформы Java SE.

Более того, в 37 файлах из состава Android явно присутствует пометка об их проприетарном или конфиденциальном характере. Данные файлы судя по всему имеют отношение к реализации Mobile Media API из состава Sun Java Wireless Toolkit. Например, заголовок файла PolicyNodeImpl.java гласит "Copyright 2004 Sun Microsystems, Inc. All rights reserved. SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.".

Еще 6 файлов из состава платформы Android 2.2 и 2.3 явно декомпилированы из Java 2 Standard Edition и перелицензированы под лицензией Apache без согласования с правообладателем. Даже если допустить, что в конечном итоге данные файлы входят в состав OpenJDK и поставляются под лицензией GPL, самовольное изменение лицензии может иметь серьезные последствия.

Примечательно, что в обвинительных материалах Oracle фигурировали достаточно спорные утверждения, связанные как правило не с непрерывными блоками кода, а с совпадением структуры и частичным пересечением имен методов и переменных в библиотеке классов Java. Выявленные Флорианом Мюллером факты опровергнуть будет значительно труднее. Полный отчет о проделанной работе с детальным построчным сравнением кода можно прочитать по следующим ссылкам: 1, 2, 3, 4, 5, 6, 7, 8, 9.

Дополнение: По утверждению некоторых экспертов выводы Флориана Мюллера ошибочны. Семь из фигурирующих в разборе файлов (PolicyNodeImpl.java, AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java и PrincipalImpl.java) находятся в исходных текстах в каталоге unit-тестов, т.е. используются только для внутреннего тестирования и не входят в конечный продукт. Данные файлы были в свое время опубликованы на сайте Sun для упрощения отладки и тестирования кода. Изменение лицензии в данных файлах можно объяснить результатом работы какого-то скрипта, который автоматически добавил упоминание лицензии Apache во все файлы проекта. Более того, эти файлы уже удалены из репозитория: PolicyNodeImpl.java удален 20 октября 2010 года, а остальные файлы - удалены 14 января 2011 года. Причем удалены с комментарием "удаление бессмысленных тестов".

Остальные 37 файлов представлены в репозитории внутри архива MMAPI.zip, который находится в директории с кодом аудиодрайвера для одного из поддерживаемых чипсетов. В сборке платформы данные файлы не участвуют, а архив вероятно загружен по ошибке.

©  OpenNet