GitHub Licensed est un outil open-source qui vise à simplifier la corvée de s'assurer de la validité de la licence et de la documentation pour toutes les dépendances d'un projet GitHub.
Licensed peut détecter les dépendances d'un ensemble de langages et de gestionnaires de paquets dans de multiples projets au sein d'un dépôt. Les gestionnaires de paquets pris en charge incluent Bower, Bundler, Cabal, Go, les listes de Manifest et NPM. Pour chaque dépendance trouvée, Licensed peut récupérer ses métadonnées de base et les informations de licence pertinentes, telles que le type de licence et son texte juridique associé (généralement stocké dans un fichier LICENSE) à partir de leur emplacement dans l'environnement local. Pour détecter le type de licence et le texte, Licensed utilise Licensee. Toutes les métadonnées détectées sont stockées à un emplacement spécifique qui peut être utilisé pour générer la copie de toutes les licences requises pour la distribution.
Ce qui est plus important, d'après GitGHub, c'est que les métadonnées et le texte de licence peuvent être mis sous contrôle de source. Lorsque vous le faites, l'ajout de nouvelles dépendances est reflété au niveau de la Pull Request et les experts en licence peuvent examiner toute nouvelle licence pour détecter les problèmes qui pourraient survenir. Sur la base de leur propre expérience avec ce processus, GitHub affirme qu'il s'agit d'un moyen efficace de diminuer la pression sur le développeur et de s'assurer que seules les dépendances qui répondent aux exigences de l'organisation sont incluses dans le produit.
Les fonctionnements de Licensed sont contrôlés via un fichier de configuration où vous spécifiez un emplacement source_path
pour rechercher les dépendances, un répertoire cache_path
pour stocker les métadonnées et une liste des licences autorisées. Voici un exemple de fichier de configuration simplifié :
# Le chemin est relatif à la racine du dépôt git
# Si non défini, '.licenses' par défaut
cache_path: 'relative/path/to/cache'
# Path est relatif à la racine du dépôt git et spécifie le répertoire de travail lors de l'énumération des dépendances
chemin_source: 'relative/path/to/source'
# Les dépendances avec ces licences sont autorisées par défaut.
allowed:
- mit
- Apache-2.0
- bsd-2-clause
- bsd-3-clause
- cc0-1.0
Licence est une gemme Rubyque vous pouvez installer en ajoutant la ligne suivante à votre Gemfile :
gem 'licensed', :group => 'development'
Puis exécutez :
$ bundle
Vous pouvez demander à Licensed de lister toutes les dépendances de votre projet en exécutant :
licensed list
De même, la commande cache
mettra en cache les licences et les métadonnées, tandis que la commandestatus
vérifiera l'état des dépendances et émettra des avertissements si des données de licence sont manquantes ou si le type de licence doit être révisé.
GitHub souligne le fait que Licensed n'est qu'un outil de détection précoce des problèmes de licence et qu'il ne peut remplacer des conseils juridiques émanant de professionnels.