Написать пост

Сервис GitHub открыл код инструмента для кэширования и проверки лицензий зависимостей Licensed

Аватар Светлана Хачатурян

Опубликован код инструмента для проверки лицензий на сторонние программные решения, используемые в проектах с открытым исходным кодом. Полноценной заменой настоящему лицензированию он не является.

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
		

Лицензии для открытых проектов разнообразны. Обо всех основных подвластных законодательству договорах можно узнать из нашей шпаргалки.

Следите за новыми постами
Следите за новыми постами по любимым темам
643 открытий645 показов