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

Sujet proposé par Matthieu Moy, Rémi Barraquand et Christophe Picard pour l'année 2013-2014.

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 :

Choix du sujet

Avant de vous inscrire pour ce sujet, il faudra choisir une fonctionalité à 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, donc choisir ce logiciel est en un sens une solution de facilité. De bonnes sources d'inspiration pour préparer ce projet sont les pages SmallProjectsIdeas, 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 en 2011, 2012 et 2013, (mentorés par Mounir Lamouri et de la Mozilla Corporation), et l'expérience a été très intéressante (cf. la page Contribution à Mozilla Firefox sur Ensiwiki). Paul Adenot, de la Mozilla Corporation, a mentoré une équipe en 2013 et est est volontaire pour renouveler l'expérience.

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).

LibreOffice

La communauté LibreOffice se veut accueillante, même si nous (Ensimag) n'avons pas d'expérience d'interaction avec elle. Nous avons quelques idées de fonctionnalités sans doute assez faciles à implémenter mais qui manquent cruellement à certains utilisateurs (par exemple, la possibilité de mettre en pause et de reprendre la lecture d'une vidéo dans une présentation Impress). Un premier contact a été fait sur la mailing-list. Rémi Barraquand encadrerait ce projet côté Ensimag.

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 2013, une équipe d'Ensimag a implémenté partiellement l'algorithme de décomposition en valeur singulière (SVD) avec une approche divide and conquer. Le code est disponible dans le répertoire unsupported/Eigen/src/SVD/ d'Eigen (cf. aussi http://eigen.tuxfamily.org/bz/show_bug.cgi?id=67), mais les étapes clés qui permettraient de gagner vraiment en performance ne sont pas encore codées.

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.

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 fonctionalité). 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