GitHub опубликовал код Licensed — инструмента на Ruby, призванного усовершенствовать процесс работы с зависимостями в программном обеспечении (OSS) с открытым исходным кодом. При этом разработчики отмечают, что он не является полноценной заменой настоящему open source лицензированию.
Под «зависимостью» в документации подразумевается сторонний программный пакет, используемый в приложении. «Источником зависимости» является класс, способный перечислять зависимости для приложения (например, bundler, npm).
Что за Licensed?
Licensed позволяет инженерам открытого ПО выявлять потенциальные проблемы с лицензией в используемых модулях на ранних стадиях разработки продукта. Инструмент работает в любом git-репозитории и нацелен на поиск, кэширование и проверку лицензионных метаданных для зависимостей. С помощью специального конфигурационного файла он обнаруживает зависимости из разных языков и пакетных менеджеров по всему диапазону проектов в рамках одного репозитория.
Собранные данные помогают:
- хранить и использовать самую релевантную информацию по зависимостям;
- автоматизировать сборку и распространение лицензий на ПО;
- автоматически получать историю изменений в зависимостях;
- получать информацию о зависимостях, требующих пересмотра;
- проверять наличие файлов и документов, необходимых для правильного использования Licensed.
Licensed учитывает не все возможные комбинации языков и менеджеров сборки, однако разработчики добавили возможность пользователям самостоятельно вносить дополнения буквально в несколько строчек кода:
module MyProject
class MySource
# Required. I need a configuration for basic functionality
def initialize(config)
@config = config
end
# Required. Tell the world the name of the dependency source
def type
"my source"
end
# Required. Give the world the dependencies found for `@config`
def dependencies
# Will this parse a package manager file?
# Will this use CLI tools to find dependencies?
# Nope! I'm a hardcoded list!
[
Dependency.new(
@config.source_path, # location used to find license text (e.g. LICENSE)
name: "licensed",
type: type,
homepage: "https://github.com/github/licensed",
version: "0.13.0",
summary: "Extract and validate the licenses of dependencies."
)
]
end
end
end
Лицензии для открытых проектов разнообразны. Обо всех основных подвластных законодательству договорах можно узнать из нашей шпаргалки.
Источник: блог GitHub Engineering