Contexte du projet Stretto

Pourquoi un nouvel éditeur de texte

L'idée de Stretto est née d'un constat simple : aujourd'hui, en 2016, de nombreux développeurs n'arrivent pas à trouver un éditeur de texte qui leur convient.

En particulier, beaucoup apprécient l'efficacité de Vim, avec son fonctionnement par modes, mais sont rebutés par son archaïsme notoire. A contrario, des éditeurs modernes comme Atom ou Sublime Text fournissent des interfaces bien plus intuitives, mais ont tendances à perdre en efficacité, en généralité, ou tout simplement à ne pas être Open Source.

On ne parlera pas ici des IDE comme Eclipse et Netbeans, le temps qu'ils démarrent, vous aurez fini de lire cette page depuis longtemps.

Stretto, c'est donc la solution à tous ces problèmes.

En fonction des résultats de votre travail, le projet Stretto pourra devenir un projet Open Source à part entière et être maintenu sur le long terme, et éventuellement donner naissance à un projet de création de Start-up.

Encadrement

Découvrez la vie d'étudiant-entrepreneur

Vous aurez le plaisir de travailler avec moi-même (Eric Burel), étudiant en 3A MMIS. Je réalise en ce moment mon projet de fin d'études sur mon projet de création d'entreprise, Stoulou.com, en tant qu'étudiant-entrepreneur.

Stretto est un side-project, dont je souhaite tester le concept durant les prochains mois. N'hésitez pas à me contacter si vous souhaitez en savoir plus sur la création d'entreprise innovante.

Objectif

Votre mission dans ce projet

L'objectif de ce projet de spécialité est d'implémenter une première version de Stretto, en langage Go.

Votre implémentation devra être la plus générale possible et prendre en compte les enjeux long terme du projet.

Stretto doit être conçu pour améliorer la productivité des développeurs. Tout comme Vim, Stretto reposera donc sur un système de modes. Ce fonctionnement permet de séparer les tâches d'écriture du code, de refactoring, de gestion des fichiers etc. et de démultiplier les raccourcis.

Un exemple de raccourcis variant selon le mode
RaccourciMode insertionMode fichierMode édition
sla lettre ssauvegarder fichiersubstituer mot
ola lettre oouvrir fichierouvrir nouvelle ligne

Le but n'est pas de créer une copie de Vim en langage Go, mais bien un nouvel éditeur. Utilisez donc Vim comme une source d'inspiration et non comme un calque. Pour les fonctionnalités modernes, vous pourrez vous intéresser à Atom et Sublime Text, qui sont de bons exemples.

Votre projet incluera donc une phase de conception. Je recommande au minimum d'utiliser les outils des méthodes agiles (Product Backlog, Sprint et Burdoown Chart) même si vous ne souhaitez pas les pratiquer sur ce projet. Je conseille Trello ou Asana pour gérer vos tâches.

Le code sera hébergé sur Github, dans le dépôt stretto-editor/stretto.

Contenu du projet

Au programme :

60% Complete (success)
30% Complete
20% Complete (warning)
10% Complete (danger)

Contraintes

Non, il n'y en pas tant que ça

Votre logiciel devra respecter les contraintes suivantes :

  • être écrit entièrement en anglais, documentation et raccourcis (s pour save) inclus (sauf bien sûr pour les rapports demandés par l'Ensimag)
  • être programmé en Golang (le langage du futur) pour le coeur, mais vous pouvez utiliser d'autres langages si le besoin se présente (utilisation de librairie C par exemple)
  • être accompagné d'une documentation complète : code (succinte, car en bon ensimag vous choisirez déjà des noms de fonctions clairs et précis), manuel utilisateur, et description de vos choix architecturaux et techniques
  • avoir des commits propres. Toute la communauté Github aura les yeux posés sur vous, je vous conseille l'utilisation de branches, et de la commande git rebase -i.
  • être entièrement testé (non négociable, on pourra discuter ensemble des joies du TDD)
  • être extensible : il doit être possible d'écrire et ajouter des plugins aisément
  • être configurable : voir le fonctionnement de Sublime et le fichier .vimrc pour ce point (vous pouvez faire beaucoup mieux !)
  • inclure un plugin (donc désactivable, supprimable, et réactivable) pour la gestion du langage Golang
  • Bonus : vous pourrez tentez d'ajouter des plugins pour la gestion du HTML, CSS, JavaScript
  • Bonus : Le logiciel pourra capturer diverses données d'utilisation, afin de permettre son amélioration continue

Equipe

4 à 6 étudiants

Entre quatre et six étudiants semble l'idéal, le projet est copieux et peut se diviser en parties plus ou moins indépendantes (coeur, API pour les plugins, raccourcis, interface graphique etc.). De même, une à deux équipes semble être optimal.

Contact

Pour en savoir plus

Une question ? Envoyez moi un mail sur l'adresse eric.burel@ensimag.grenoble-inp.fr.