Статьи

Пересмотр политики Eclipse IP: сторонний контент

Фонд Eclipse находится в процессе серьезного обновления нашей Политики в области интеллектуальной собственности. Большая часть этого обновления — это изменение в способе управления сторонним контентом.

В контексте политики Eclipse IP «сторонний контент» — это контент, который используется проектом с открытым исходным кодом Eclipse, но не создается и не управляется проектом с открытым исходным кодом Eclipse. Библиотека, созданная, скажем, проектом с открытым исходным кодом Apache, считается сторонним контентом. Сегодня политика IP требует, чтобы весь сторонний контент был проверен командой Eclipse IP прежде, чем он будет использован проектом Eclipse. В ожидании одобрения Совета директоров Eclipse мы планируем изменить это.

После одобрения этих обновлений проектные группы смогут вводить новый сторонний контент в течение цикла разработки без предварительной проверки с командой IP. Таким образом, команда проекта может передать сценарии сборки, ссылки на код и т. Д. В стороннее содержимое в свой репозиторий исходного кода, не создавая сначала вопросник (CQ) для запроса, чтобы команда IP Team просмотрела и одобрила содержимое стороннего производителя. По крайней мере, в период разработки между выпусками ответственность за проектную группу возлагается на группу разработчиков — с достаточной степенью уверенности — гарантировать, что любой вводимый ими сторонний контент совместим с лицензией проекта. Прежде чем какой-либо контент может быть включен в какой-либо официальный выпуск, команда проекта должна проверить, что сторонние лицензии на контент совместимы с лицензией проекта.

Традиционно выпускам предшествует обзор выпусков, и, как часть этого обзора, Eclipse IP Team занимается проверкой записей проекта о вкладе интеллектуальной собственности и использовании стороннего контента (журнал IP). Именно во время проверки журнала IP IP Team проверит состояние совместимости лицензии. Я говорю «традиционно», потому что мы изменили традицию, или, более конкретно, мы изменили процесс разработки Eclipse в конце 2018 года, чтобы сделать так, чтобы команда проекта могла участвовать в любом количестве основных и второстепенных выпусков в течение всего года после успешного завершения. обзор выпуска. В случае, когда выпуск не требует проверки (и, следовательно, нет триггера для участия в проверке журнала IP), ответственность за совместимость лицензий для всех указанных сторонних материалов лежит на команде проекта. Но мы не покидаем проектные команды в одиночку: команда IP все еще может помочь с проверкой, даже если формальная проверка не требуется.

Мы экспериментировали с процессами и инструментами, чтобы помочь нам с проверкой совместимости лицензий. Эти инструменты будут использоваться Группой ИС во время оценки, а также будут доступны проектным командам. В идеале проектные группы должны интегрировать инструмент проверки совместимости лицензий в свои сборки, чтобы инструмент мог идентифицировать контент, требующий дальнейшего изучения, и представить его команде IP для разрешения на раннем этапе их цикла разработки, чтобы к тому времени, когда мы запустим инструмент для проверки содержимого в конце цикла выпуска — все идентифицированное содержимое уже будет разрешено, и команда IP может просто «штамповать» его.

Это должно обеспечить значительную гибкость для проектных групп, чтобы экспериментировать с различными библиотеками и версиями, а также сделать процесс надлежащей проверки IP более упорядоченным и предсказуемым.

Важной частью, делающей эту работу, является использование существующих информационных баз данных. За эти годы мы накопили значительное количество знаний о множестве библиотек, но другие также проделали большую работу. Новый процесс будет использовать другие надежные источники информации (подробнее об этом в будущем посте). Мы собираемся выйти из бизнеса сканирования каждого отдельного бита исходного кода и вместо этого доверять нашей собственной базе данных и другим источникам информации (и вносить вклад в эти другие источники информации).

Наш инструмент-прототип ориентирован на спецификацию. Каждая запись в ведомости материалов идентифицирует определенную стороннюю библиотеку. Чтобы определить конкретную стороннюю библиотеку, мы решили принять пять идентификаторов проекта ClearlyDefined , которые включают в себя: тип контента, его источник программного репозитория, его пространство имен и имя, а также версию. Координаты ClearlyDefined примерно аналогичны координатам Maven, которые однозначно идентифицируют конкретную часть программного обеспечения по groupid , artifactid и версии (например, org.junit.jupiter:junit-jupiter:5.5.2 однозначно идентифицирует контент, который, как известно, относится к EPL -2,0). Система координат ClearlyDefined добавляет тип содержимого как «maven», а его источник — «mavencentral», поэтому org.junit.jupiter:junit-jupiter:5.5.2 становится maven/mavencentral/org.junit.jupiter/junit-jupiter/5.5.2 (обратите внимание, что, по крайней мере, теоретически, источником может быть другой репозиторий Maven). Мы выбрали ClearlyDefined координаты хотя бы частично, потому что у нас есть проекты, использующие языки, которые не являются Java, и программные репозитории, которые не являются Maven Central; используя эти координаты, мы также можем идентифицировать, например, содержание NPM (например, npm/npmjs/@babel/generator/7.6.2 ).

Таким образом, ведомость материалов представляет собой список координат ClearlyDefined (инструмент-прототип автоматически переводит список зависимостей Maven или файл блокировки пакета узла в эту систему координат).

Плагин Maven Dependency можно использовать для создания списка зависимостей (в виде координат Maven):

1
gt; mvn dependency:list -DoutputFile=project.deps -DappendOutput=true

Вывод плагина Maven Dependency имеет следующий вид:

1
The following files have been resolved:    org.apache.commons:commons-lang3:jar:3.4:compile    org.slf4j:slf4j-api:jar:1.7.21:compile    org.slf4j:slf4j-log4j12:jar:1.7.21:compile    log4j:log4j:jar:1.2.17:compile    commons-logging:commons-logging:jar:1.1.1:compile    ... The following files have been resolved:    org.apache.commons:commons-lang3:jar:3.4:compile    com.clearspring.analytics:stream:jar:2.9.6:compile    ...

Инструмент-прототип создает список материалов, который выглядит примерно так:

1
maven/mavencentral/org.apache.commons/commons-lang3/3.4, Apache-2.0, approved maven/mavencentral/org.slf4j/slf4j-api/1.7.21, MIT, approved maven/mavencentral/org.slf4j/slf4j-log4j12/1.7.21, MIT, approved maven/mavencentral/log4j/log4j/1.2.17, Apache-2.0, approved maven/mavencentral/commons-logging/commons-logging/1.1.1, Apache-2.0, approved maven/mavencentral/com.clearspring.analytics/stream/2.9.6, Apache-2.0, approved ...

Вывод на самом деле также включает в себя несколько URL с выводом (например, указатели на исходный код, когда они известны), но я удалил их, чтобы сосредоточиться на важных битах. Вы также заметите, что содержимое, которое повторяется в списке зависимостей, появляется только один раз в выходных данных.

Для каждой библиотеки инструмент определяет лицензию и одобряет ли она использование (я буду обсуждать, как она работает в следующем посте). Любой контент, который указан как ограниченный, а не одобренный, должен быть рассмотрен и разрешен Группой ИС, прежде чем его можно будет включить в любой официальный релиз проекта (об этом я расскажу в следующем посте).

В настоящее время инструмент-прототип только идентифицирует лицензии и оценивает совместимость, чтобы определить, утвержден ли контент. Вывод легко анализируется для выявления проблемного контента, но наша цель — сделать его более полезным, не требуя дополнительных навыков bash-fu. Существует множество возможностей для дальнейшей автоматизации, включая превращение прототипа в плагин Maven для непосредственного включения в сборку и поддержки других систем сборки.

Этот список материалов становится сторонней контентной частью проекта IP Log. Это дает дополнительное преимущество, заключающееся в точности на 100% без необходимости использования таких вопросов, как комбинированные вопросники (CQ). По крайней мере, в краткосрочной перспективе система IPzilla и CQ останутся основными средствами взаимодействия коммиттеров проекта с командой IP, но только для контента, требующего расследования.

Опубликовано на Java Code Geeks с разрешения Уэйна Битона, партнера нашей программы JCG . См. Оригинальную статью здесь: Пересмотр политики Eclipse IP: Контент третьих сторон

Мнения, высказанные участниками Java Code Geeks, являются их собственными.