Projet de spécialité Ensimag 2A : contribution à un logiciel libre

Sujet proposé par Matthieu Moy, Christophe Picard et Grégory Mounié pour l'année 2015-2016.

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.

Vous (étudiants) devrez choisir une fonctionnalité à implémenter, et suivre son développement depuis l'idée jusqu'à l'acceptation du code par l'équipe de développeurs officielle. En choisissant un logiciel développé par une communauté ayant de bonnes habitudes en terme de qualité de code et processus de développement, ceci vous permettra d'apprendre et de pratiquer sur un cas réel entre autres :

Un effet de bord intéressant est qu'avoir du code à soi dans un projet libre permet de briller en société ;-).

Choix du sujet

Avant de vous inscrire pour ce sujet, il faudra choisir une fonctionnalité à implémenter sur le logiciel choisi. Attention à ne pas vous surestimer, et à ne pas sous-estimer l'effort nécessaire pour apporter un morceau de code de l'état de prototype à un état acceptable en production.

Pour proposer un encadrement de qualité, quelques logiciels sont proposés ci-dessous, pour lesquels le contexte est bien connu. Je suis ouvert à d'autres propositions si vous en avez. Dans tous les cas, vous êtes invités à discuter du projet au plus tôt, avec moi et sur les mailing-lists des projets qui vous intéressent.

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 Ensimag une fois par an!), donc choisir ce logiciel apporte quelques garanties sur la faisabilité et l'intérêt du projet. De bonnes idées de petits projets pour se lancer sont données sur les pages SmallProjectsIdeas et SoC-2016-Microprojects. D'autres bonnes sources d'inspiration pour préparer ce projet sont les pages SoC-2016-Ideas, SoC-2015-Ideas, SoC-2014-Ideas, Soc2012ideas, Soc2011ideas, Soc2010ideas et Soc2009ideas sur le Wiki de Git. Voir aussi la proposition de projet sur Git et MediaWiki.

Mozilla Firefox

Des étudiants ont pu contribuer à Firefox tous les ans 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).

Le langage Rust

Rest est un langage orienté système développé par Mozilla Research. Grégory Mounié serait motivé pour encadrer une équipe pour y contribuer.

Chamilo

Chamilo est le logiciel libre qui fait tourner http://chamilo2.grenet.fr/inp/ que vous avez utilisé à l'Ensimag. Les administrateurs de notre serveur Chamilo (en particulier Hubert Borderiou) sont également contributeurs de la communauté de développeurs de Chamilo, et sont motivés pour mentorer des étudiants Ensimag. Nous sommes également en contact avec Yannick Warnier, président de l'association Chamilo et qui est intéressé par le projet.

Une liste d'idées est disponible ici : idees-chamilo.html

Eigen : bibliothèque d'algèbre linéaire

Eigen est une librairie d'algèbre linéaire open source écrite en C++. Cette librairie est utilisée dans de nombreux projets, dont notamment l'application Street View de Google. Eigen étant une librairie relativement récente, il existe un bon espace pour les contributions (cf todo-liste). En 2014, une équipe d'Ensimag a implémenté l'algorithme de Lanczos pour calculer les valeurs propres d'une matrice creuse. Le code est disponible ici. L'algorithme marche, mais n'a pas été intégré à Eigen. Un premier exercice pourrait être de reprendre ce code et de lui faire atteindre la qualité et la robustesse suffisante pour une intégration dans Eigen.

Ce sujet est à mi chemin entre les mathématiques appliqués et l'informatique. Ce projet serait co-encardé par Christophe Picard et Matthieu Moy côté Ensimag.

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.

Déroulement du projet

Les étudiants commenceront par se familiariser avec la base de code, et la communauté, en proposant des améliorations mineures (par exemple, clarification du code sans changement de fonctionnalité). Après avoir commencé à travailler sur le projet proprement dit, les étudiants me soumettront leur code pour une première revue rapide, avant la soumission à l'équipe de développeurs du projet.

Évaluation

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

Organisation

Historique

Matthieu MOY
Retour à la page d'accueil