GitLab for FabLab: a self hosted git management software

De Ensiwiki
Aller à : navigation, rechercher

Mycomputer.png  Deuxième Année  CDROM.png  Projets de spécialité 

Sujet proposé en 2013 par Rémi Barraquand et Stan Borkowski.

Contexte

Le but de ce projet est de développer une plateforme de partage ouverte facilitant l'hébergement et la diffusions de projets créatifs issus des ateliers de type FabLab.

Le concept des FabLabs est né de la convergence des innovations en logiciel, matériel et micro-électronique au début des années 2000. Les FabLabs, avec la mouvance des "makers", sont à l'origine d'un grand nombre de projets créatifs, lesquels sont souvent rendus publics. Les utilisateurs des FabLabs créent des objets, des schémas et du code.s Aujourd'hui le code est le plus souvent géré et publié sur des services en ligne tels que GitHub, et les modèles des objets physiques sont mis en ligne sur des portails propriétaires comme Thingiverse. Nous vous proposons de combiner des fonctionnalités de ces deux services au sein d'une solution Open Source basée sur GitLab.

Les résultats de votre travail pourront être utilisés pour la mise en place d'une plateforme d'échange pour les utilisateurs du FabLab d'ENSIMAG, du FabLabMSTIC et des ateliers du EquippEx Amiqual4Home.

Travail demandé

Le design de cette plateforme de partage devra se reposer sur des solution technologies existantes. La plateforme open-source GitLab basé sur le système de version distribué GIT et inspiré du site Github. Les principales fonctionnalités de GitLab sont:

  • l'hébergement de la solution sur un serveur personnel,
  • l'administration de projets
    • gestion d’incidents et suivi de projet,
    • gestion des groupes de projets et d'utilisateurs,
    • wiki
    • chat inter-projet
    • etc.

Le travail demandé sera d'adapter et d'améliorer cette plateforme aux besoins particuliers des projets de type "fablab". Parmi les fonctionnalités demandées nous trouvons par ordre de priorité:

  • api/widgets pour gitlab: afin de pouvoir plus facilement integrer les projets hébergés par gitlab sur une page web (page perso, portal wordpress, etc.), GitLab devra être amélioré pour proposer une API (style REST) permettant d'acceder aux données public. Cette API devra également permettre l'accès à des widgets offrant aux usagés la possibilité de visualiser (directement intégrable dans des pages web) directement ces données. Cette API devra, par exemple, fournir les accès suivant:
    • retourne la liste des (top) projets avec leur informations associés (e.g. nom, description, namespace, minipage, développeurs, etc.)
    • affiche des (top) projets avec leur informations associés
    • retourne les détails d'un projet (e.g. retourne les détails du projet timefridge du groupe ensimag)
    • affiche les détails d'un projet
  • service de création/administration de minipage par projet: similairement aux GitHub pages, GitLab devra être augmenté avec la capacité de gérer des mini-pages. Ainsi chaque projet pourra être doté d'une vitrine le présentant. La technologies utilisé sera Jekyll
  • service de génération de preview pour des modèles 3D,2D (.stl, .obj, .dxf): afin de pouvoir visualiser des objets 3D/2D à partir d'un navigateur, GitLab devra être augmenté des capacités de génération de preview de ces modèles, mais aussi de la capacités de visualisation interactive (https://github.com/tbuser/thingiview.js)

Détails Techniques

GitLab est développé en Ruby et est basé sur Ruby on Rails. Ruby et Rails sont aujourd'hui devenues des technologies clés en conception d'applications web. Les étudiants devront donc savoir s'adapter à ces technologies.

Références

Organisation

Ce projet pourra être supporté par une ou deux équipes. Taille des équipes : 2 à 4 étudiants (de préférence, plutôt 4 que 2). Pour ce sujet, il est possible (préférable) de bénéficier d'un encadrement spécifique sur le thème des méthodes agiles. Pour plus de détails, voir la page Méthodes agiles en projet de spécialité.

Liens

Objectif et évaluation

L'objectif général du projet est de fournir une solution qui soit utilisable, et évolutive, pour que le développement puisse continuer sur le long terme (par exemple des projets de spécialité Ensimag futurs, mais pourquoi pas des contributions extérieures à l'école).

L'évaluation prendra en compte les points suivants (liste non-exhaustive) :

  • Qualité/quantité du code produit
  • Mise en place de la communauté, (forge, wiki, test, demo, etc.)
  • Soutenance et rapport final