# Papillon (application)

Papillon est une application de vie scolaire libre, gratuite et open source créée en 2021 par Vince Linise. Sous licence GPLv3.0, elle est maintenue par plusieurs dizaines de contributeurs bénévoles.

## Concept et fonctionnalités

Papillon est une application mobile visant à proposer aux élèves une expérience utilisateur améliorée et innovante lorsqu'ils utilisent les logiciels de vie scolaire de leurs établissements$^,$$^,$$^,$$^,$$^,$$^,$. L'application fournit une interface graphique liée aux services scolaires de l'établissement, permettant ainsi de les interconnecter.
Conçue pour être accessible et personnalisable, Papillon permet de fournir une alternative libre aux application scolaires mobiles existantes, souvent propriétaires, ainsi que la gestion de comptes de restauration scolaire tels que Turboself, ARD, Izly, et Alise.
Le développement de Papillon se base sur la collaboration de nombreux contributeurs GitHub et des mainteneurs des bibliothèques logicielles utilisées par l'application, lui permettant d'être compatible avec les logiciels Pronote, Skolengo (dont Mon Bureau Numérique), ÉcoleDirecte et Scodoc.

## Fonctionnement et respect de la vie privée

Papillon sert d'intermédiaire entre certaines bibliothèques logicielles permettant de se connecter aux serveurs officiels des fournisseurs de logiciels de vie scolaire et ces derniers.
De cette manière, aucune donnée de l'utilisateur n'est transmise à un tiers différent des serveurs officiels des logiciels de vie scolaire, puisque le terminal de l'utilisateur sert d'intermédiaire entre l'interface graphique de l'application et les API des fournisseurs des logiciels$^,$.
Papillon est développé par plusieurs dizaines de contributeurs qui ont comme priorité le respect de la vie privée des élèves, ainsi, aucune personne physique ni système de traitement automatisé de données ne vont accéder aux données des élèves. Le caractère open source de l'application et sa déclaration de confidentialité sont garants de son caractère sécurisé et transparent vis-à-vis de ses utilisateurs$^,$.
Concernant l'authentification, les utilisateurs peuvent sélectionner leur établissement en rentrant leur nom de commune ou en utilisant leur géolocalisation. Papillon gère ensuite la liaison avec le service (gestion de vie scolaire, de restauration, d'emploi du temps, etc.) pour afficher les données correspondantes.

## Limites du projet

Le développement des différentes bibliothèques que Papillon utilise n'est pas lié avec le développement de Papillon, le projet est donc contraint de dépendre de l'avancement de ces bibliothèques.
On peut aussi mettre en avant le fait que le développement de l'application a été initié par des lycéens alors encore scolarisés dans des établissements du second degré, qui sont maintenant en études supérieures ; il faut donc penser à l'éventualité de l'abandon de la maintenance du projet, même si l'état actuel des contributions fait plutôt pencher vers une pérennité au vu de la diversité des contributeurs.
Il est également important de préciser que Papillon ne peut remplacer les logiciels de gestion de vie scolaire dont il sert de client, puisqu'il ne remplit pas la fonction de serveur mais simplement de terminal utilisateur.

## Aspects techniques

Papillon est développé en TypeScript, avec React Native. Les données de l'utilisateur stockées sur le terminal de ce dernier sont gérées par l'AsyncStorage d'Expo. Les contributions à l'application peuvent se faire via des Pull Requests (ou demandes de fusion) Github, qui sont soumises à vérification et approbation par « les leaders de la communauté » du projet. Il est conseillé aux contributeurs de suivre les recommandations de conventionnalcommits.org pour leurs commits. La navigation au sein de l'application s'effectue avec React Navigation.
Pour son versionnage, Papillon tente de suivre les recommandations de semver.org. Chaque nouvelle version est publiée manuellement sur les magasins d'applications.