Contribution à un logiciel libre

Sujet proposé par Matthieu Moy pour l'année 2021-2022.

Objectifs

Le but du projet est de participer à un projet « de la vraie vie » (un logiciel activement développé, ayant déjà un bon nombre d'utilisateurs, ...). Un bon moyen d'atteindre cet objectif est de contribuer à un logiciel libre.

Contribuer à un logiciel libre est en particulier un bon moyen d'aborder sur des cas réels les questions comme :

Un effet de bord intéressant est qu'avoir du code à soi dans un projet libre permet de briller en société ;-) (et c'est aussi un point fort sur le CV !)

Choix du sujet

Pour vous lancer dans l'aventure du logiciel libre, nous vous proposons des sujets en partie préparés, mais il vous restera à afiner le cahier des charges en discussion avec la communauté. Vous pouvez aussi proposer votre propre sujet sur le logiciel de votre choix, mais dans ce cas attendez-vous à être plus livrés à vous-mêmes.

Git

Je (Matthieu Moy) connais bien Git et sa communauté de développeurs (qui est très enthousiaste à l'idée d'accueillir des étudiants !). Le temps me manque ces dernières années mais j'ai beaucoup contribué à Git jusqu'à 2017. Choisir ce logiciel apporte quelques garanties sur la faisabilité et l'intérêt du projet.

Pour vous lancer, commencez par choisir une (ou éventuellement plusieurs) fonctionnalité la plus simple possible. Voir la page SoC-2017-Microprojects pour une liste d'idées de choses à faire (la page est écrite pour le contexte du Google Summer of Code mais est tout à fait pertinente pour nous). Voir aussi SmallProjectsIdeas. D'autres pages plus anciennes peuvent vous aider : et SoC-2016-Microprojects, SoC-2016-Ideas, SoC-2015-Ideas, SoC-2014-Ideas, Soc2012ideas et Soc2011ideas sur le Wiki de Git.

Pour le projet à proprement parler, nous vous proposons de travailler sur la commande git send-email. Cette commande permet de s'échanger des commits sous forme de « diff ». Il est fréquent de vouloir envoyer un patch en réponse à un autre mail, et git send-email ne propose pas (encore ?) de moyen simple de le faire (conserver le sujet et la liste des destinataires, citer proprement le corps du message, ...). Des étudiants Ensimag ont commencé le travail sur le sujet dans cette branche mais :

  • Le code n'est pas encore d'une qualité acceptable et devra être retravaillé.
  • Le code de Git a changé entre temps, il faudra fusionner (plus précisément rebaser) l'ancienne branche sur la nouvelle.
  • D'autres fonctionalités intéressantes peuvent être ajoutées en plus, par exemple la possibilité de télécharger automatiquement un message depuis https://public-inbox.org/ en utilisant l'identifiant du message.

Le code de Git est essentiellement écrit en C, mais la commande git send-email est écrite en Perl, donc le projet devra démarrer par un apprentissage de ce langage.

Mozilla Firefox

Des étudiants ont pu contribuer à Firefox régulièrement depuis 2011. Paul Adenot, de la Mozilla Corporation, a mentoré plusieurs équipes depuis 2013 et est est volontaire pour renouveler l'expérience (possiblement aidé par des collègues de la Mozilla Corporation).

La base de code de Firefox est grosse, donc un peu impressionnante au premier abord, mais il y a beaucoup de documentation et une communauté accueillante (cf. par exemple Developer Guide, et la liste des Mentored Bugs pour lesquels quelqu'un s'est porté volontaire pour aider un nouveau développeur).

Paul Adenot travaille sur l'API Audio. Pour donner une idée, des sujets proposés les années passées étaient :

Tuleap

Tuleap est une forge open-source développée par l'entreprise Enalean (dont les bureaux sont à Crolles et Chambéry).

Tuleap est un outil de génie logiciel complet dont le but est d'aider les équipes à mieux faire leurs projets. La mission d'Enalean est de fournir les outils pour permettre à ses utilisateurs de mieux développer, plus rapidement et facilement. Enalean nous a proposé deux sujets qui ont pour but de faciliter l'accès Tuleap via des approches nouvelles. Les développeurs d'Enalean nous aideraient pour la mise en œuvre.

A titre d'exemples, voici les sujets des années passées :

Chatbot pour Tuleap (choisi en 2019)

Prototyper dans le language / techno de votre choix un "chatbot" qui ferait le lien entre un serveur Tuleap et un serveur de chat Mattermost. Exemple de cas d'utilisation: une discussion s'engage sur mattermost, à un moment donné, cette discussion doit être referencée dans un bug. Le chatbot devra permettre de créer un nouveau bug en y attachant la conversation qui a eu lieu dans mattermost.

Un premier prototype en PHP a été réalisé l'an passé. Le projet poura donc s'appuyer sur cette base pour proposer de nouvelles fonctionalités.

Intégration avec Zapier

Zapier est une plateforme permettant l'automatisation de tâches dans d'autres applications. Par exemple, « Quand je reçois un mail, sauvegarder les pièces-jointes dans dropbox », « quand on me mentionne sur GitHub, m'envoyer un message sur slack », ...

L'idée ici serait d'intégrer Tuleap avec Zapier, pour permettre des scenarios comme « On a un fil Twitter pour tenir compte de l'actualité du développement de son logiciel. Un bug est clos dans Tuleap, on veut qu'automatiquement un tweet d'annonce soit émis contenant le titre et un lien vers ledit bug. ». L'intérêt d'une intégration à Zapier plutôt qu'une intégration directe avec Twitter est de bénéficier de toutes les applications intégrées à Zapier pour le prix d'une intégration.

MechanicalSoup

MechanicalSoup est une bibliothèque permettant de simuler le comportement d'un navigateur web pour automatiser les interactions avec un site web. Votre serviteur (Matthieu Moy) en est co-mainteneur. La bibliothèque a atteint un bon niveau de maturité, mais il reste quelques petits défauts identifiés (cf. les bugs sur GitHub) dont certains demanderaient une ré-ingéniérie de code non-triviale.

Travailler sur MechanicalSoup est intéressant du point de vue génie logiciel car le développement repose sur un bon nombre d'outils modernes : GitHub pour l'hébergement Git et la gestion des bugs, Travis-CI et pytest pour les tests, ReadTheDocs pour la documentation, lgtm.com et flake8 pour l'analyse statique de code, codecov.io pour la couverture de code, ...

Votre logiciel préféré

Bien sûr, la liste ne peut être exhaustive. N'hésitez pas à faire d'autres suggestions. Un point de départ possible si vous manquez d'inspiration est la liste des organisations proposant un Google Summer of Code.

Évaluation

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

Historique