Jean-Luc Archimbaud Matthieu Moy Franck Pérignon
Recenser les fonctionnalités classiques offertes par les forges existantes Servir de base pour identifier nos besoins (quelles sont les fonctionnalités importantes pour nous?)
Git, Mercurial, Subversion, A priori, se concentrer sur Git? Accès au dépôt via l interface web Accès HTTPS (pour les utilisateurs externes derrière un firewall) Commit direct depuis l interface web (pratique pour les petites modifications) Clone du dépôt principal par utilisateur
Utilisation typique des Pull requests : Code envoyé temporairement dans une branche par utilisateur Revue et discussion sur le code lié à la pull request (fil de commentaires associé) Fusion dans le dépôt principal (manuel ou via interface web) Intérêts : Possibilité de contribuer facilement à n importe quel projet Intégration avec les autres outils : intégration continue, revue de code, gestionnaire de bugs Suivi des pull-requests : classification ouvert/fermé,...
Possibilité tester ( build ) automatiquement le code : Périodiquement (exemple : 1 fois par jour) À chaque commit/push Sur chaque pull-request Fonctionnalités appréciables : Machines de build différentes (exemple : Linux, Mac OS, Windows) Build depuis une machine vierge Possibilité d installer des outils arbitraires dans chaque build Configuration : via un fichier de configuration (exemple : Travis) ou via une interface web (exemple : Jenkins) Affichage des résultats : Email Intégré à l interface web du gestionnaire de version (pass/fail pour chaque commit testé) Outil de rapport détaillé dédié (exemple : cdash)
Possibilité de commenter n importe quelle ligne de code (ou n importe quelle ligne d un patch)
Utilisation typique : gros fichiers de donnés associés à du code de calcul Solution possible : git-lfs Connections au pôle «données» de GRICAD (summer & cie)?
Suivi d un ensemble de choses à faire Ouvert : action nécessaire Fermé : plus d action nécessaire Fonctionnalités appréciables : Interfaçage avec le gestionnaire de versions, les pull-requests, et l interface web Attribution d un bug à quelqu un Gestion des droits (exemples : rapport de bug autorisé pour tout le monde, accès au bugs restreint, ) Filtres pour faire des recherches Gestion des priorités Gestion du planning (exemple : estimation des tâches en durée, diagrammes de Gantt,...)
Utilisations typiques : Discussions en privé entre les membres Discussions ouvertes à tous (exemple : logiciel libre) Mail automatique suite à un commit/push Archivage Fonctionnalités appréciables : Gestion des listes par projet Interface de gestion conviviale
Possibilité de publier/consulter des documents (PDF, ) depuis l interface web Fonctionnalités appréciables : Gestion des droits (privé/public) par document Classification (répertoires) Alternative possible : utiliser directement le gestionnaire de versions et l interface web correspondante.
Distribution de fichiers compilés à chaque release Fonctionnalités appréciables : Statistiques de téléchargement
Page web de présentation du projet Plusieurs niveaux possibles : Pages statiques (HTML) Pages dynamiques (PHP, SQL, ) Besoin essentiellement déjà couvert par les laboratoires
Wiki : édition collaborative directement dans le navigateur Rendu automatique de documentation : exemple : README.md sur GitHub. Un fichier en syntaxe type wiki est inclu avec les sources. Fonctionnalités appréciables : 1 wiki par projet Gestion des droits (exemple : contribution anonyme autorisée ou non, )
Exemples de métriques : Nombre de téléchargement Nombre de clones Nombre de visites Contributions par utilisateurs Exemple d utilisation : rédiger son CV / rapport d activité ;-)
Authentification centralisée : 1 login/password pour l ensemble de la forge Gestion fine des droits (qui est autorisé à faire quoi sur quel outil?) par utilisateur
Utilisations typiques : Montage de projet collaboratif (ANR, ) : entièrement privé Logiciel libre : tout est visible, gestion des droits uniquement en modification...
Packaging de l outil (facilité d installation et de mise à jour) Gestion de groupes de projets (exemple : organisations sur GitHub) Organisation possible par laboratoires Si on ouvre à l enseignement : possibilité de gérer toutes les équipes d une promotion en groupe Durée de vie d un compte (exemple : CIMENT : les permanents ont un compte définitif, les autres ont un compte qui expire à la fin du contrat).
Possibilité d importer des projets depuis une autre forge Possibilité d exporter vers une autre forge
Hébergement local Vs service externe API pour scripter l outil à distance
FusionForge GitLab (community ou enterprise) GitHub Enterprise / BitBucket Tuleap RedMine Allura https://allura.apache.org/ Trac Autre?