FlOpEDT : un nouveau logiciel libre de gestion des emplois du temps !

Posté par  (site web personnel) . Édité par Xavier Teyssier, Davy Defaud et palm123. Modéré par Xavier Teyssier. Licence CC By‑SA.
82
14
août
2018
Éducation

FlOpEDT

Toutes celles et ceux qui ont travaillé dans un lycée ou une université savent à quel point la gestion des emplois du temps est un sac de nœuds. La personne responsable s’arrache les cheveux pour tenter de fabriquer quelque chose qui satisfasse tout le monde… et ne réussit jamais !

Alors, avec quelques enseignants de l’IUT de Blagnac, on a développé FlOpEDT. C’est un logiciel libre qui génère les emplois du temps tout seul et permet aux utilisateurs de saisir leurs disponibilités et d’apporter des modifications en ligne et en toute autonomie.
Toutes les briques de FlOpEDT sont libres, et lui‐même est en licence AGPL v3.

Facile à utiliser et plein de liberté !

Les utilisateurs se connectent et saisissent leurs préférences à l’aide d’une interface intuitive : un « sens interdit » pour les indisponibilités, une couleur explicite pour les préférences.
Saisie des préférences

Ensuite, l’emploi du temps est généré automatiquement en quelques minutes en respectant contraintes et préférences. L’emploi du temps est alors accessible à tous, et il est possible pour tout utilisateur de le modifier.
Interface de modification

Cette partie est celle qui étonne : on nous dit souvent que si tout le monde peut faire des modifications ce sera la pagaille. Notre expérience confirme l’inverse : cela génère du confort pour tout le monde, et tout le monde a à cœur de prendre soin de cette liberté nouvelle (pas de coups de fils à passer, pas de courriels gênés…). Évidemment, l’application empêche toute modification qui ne respecterait pas les règles fixées collectivement.

FlOpEDT est aussi doté d’un outil de synchronisation avec iCal (pour les agendas en ligne), ainsi que d’un outil de synchronisation avec des bases de données extérieures.

Plus précisément, FlOpEDT se divise en deux parties essentielles :

  • une application web, développée dans le cadriciel Django (Python 3), s’appuyant sur une base de données PostgreSQL ;
  • un outil de création de l’emploi du temps, qui passe par la définition d’un système d’équations linéaires (à l’aide de PuLP) et sa résolution.

FlOpEDT n’en est qu’à sa version 0, et il n’est pour l’instant pas extrêmement générique : l’adaptation aux contours précis de votre établissement demanderait pour l’instant du travail. Mais ce temps investi permettrait d’en gagner ensuite beaucoup, et vous participeriez au développement d’un logiciel à terme utile à toutes et tous. Alors n’hésitez pas à nous contacter si vous voulez le tenter, votre proposition ne fera pas flop

Aller plus loin

  • # inspiration

    Posté par  . Évalué à 10. Dernière modification le 14 août 2018 à 08:48.

    Il est encore temps de changer de nom. A part ça a l'air déja abouti, bravo.

    • [^] # Re: inspiration

      Posté par  (site web personnel) . Évalué à 8. Dernière modification le 14 août 2018 à 10:20.

      Oui, merci pour ce projet qui a l'air très intéressant.

      Pour le nom, il vaut mieux un bon logiciel avec un nom peu flatteur qu'un logiciel pourri avec un joli nom (et je ne dis pas ça parce que l'éducation nationale utilise des logiciels comme Sirhen ou Apogé…).

      • [^] # Re: inspiration

        Posté par  . Évalué à 10.

        Merci pour ce logiciel et ces efforts,

        Cependant…

        Est-ce qu'un jour les acteurs de l'open source comprendront que l'enrobage est aussi important que le contenu ?

        Avec ce nom, ce logiciel ne se développera pas, il restera au mieux confidentiel, mais tombera plus probablement dans l'oubli.

        Par pitié, arrêtez avec les acronymes imprononçables.

        Pour le nom, il vaut mieux un bon logiciel avec un nom peu flatteur qu'un logiciel pourri avec un joli nom (et je ne dis pas ça parce que l'éducation nationale utilise des logiciels comme Sirhen ou Apogé…).

        Non, les deux sont autant importants. Un nom doit s'inscrire dans l'esprit, s'imposer comme une évidence pour être retenu, c'est pourtant simple.

        Effectivement, éviter également les acronymes douteux et bricolés dans le genre du MEN. Faites-nous rêver, à la Google, Amazon and co.

        Qu'est-ce qui évoque la liberté, le temps libre dégagé grâce à cet outil ? Y-a-t-il des références dans la mythologie, dans les comics, dans la culture générale ?

        • [^] # Re: inspiration

          Posté par  . Évalué à 3.

          Moi, je verrais bien une allusion au Ministère du Temps Libre, cher au Front Populaire et à Léo Lagrange…

        • [^] # Re: inspiration

          Posté par  . Évalué à 5. Dernière modification le 14 août 2018 à 15:07.

          Suggestion, avec juste un petit changement : FlexOpEdT, ou même FlexEdT ? (qui met en avant la flexibilité de cette solution, contenu dans le titre non acronymisé) (et le d de "du" en minuscule).

        • [^] # Re: inspiration

          Posté par  (site web personnel) . Évalué à 10. Dernière modification le 14 août 2018 à 15:56.

          Je propose TempsLibre, ou TempsLibreEDT. Parce que c'est libre, et que ça fait gagner du temps. Les anglophones ont le problème de sens de "free" (libre/gratuit) dans leur langue, d'où leur utilisation d'Open Source. Toutefois, le français n'a pas ce problème, alors autant préférer "libre" si on donne dans le pur francophone.

          • [^] # Re: inspiration

            Posté par  (site web personnel) . Évalué à 8. Dernière modification le 14 août 2018 à 16:38.

            "TempsLibre"! J'adore!
            On aime bien "FlOp" parce que c'est pas prétentieux. Genre ça fait Flop, et à la fois non, ça marche, et les gens sont contents (en tout cas dans notre IUT ça a pas fait flop!) Et puis on peut le retenir. Et ça marche en anglais "FlOpScheduler".
            Mais j'entends l'argument marketing… TempsLibre, c'est classe.
            Mais pour le coup c'est un peu prétentieux non?

            • [^] # Re: inspiration

              Posté par  (site web personnel) . Évalué à 4. Dernière modification le 14 août 2018 à 18:55.

              Tu peux retourner le truc pour dire que justement c'est un outil pour remplir facilement ton temps libre, c'est moins prétentieux du coup ;).

              Pour le nom en anglais, effectivement ce serait mieux, mais comme vous utilisez l'abréviation EDT qui n'est de toute façon pas en anglais, autant aller au bout et prendre un nom en français. Le logiciel est multi-langue ?

          • [^] # Re: inspiration

            Posté par  . Évalué à 4.

            TempsLibreOccupé

            Parce qu’un peu d’ironie ne fait pas de mal, vu la fonction du logiciel… :)

          • [^] # Re: inspiration

            Posté par  . Évalué à 3.

            Je me lance :

            EDTL (prononcé eudétèl) : Emploi du temps libre

            Schedulibre ("C'est du libre" prononcé avec l'accent d'Alambix…)

            LaPEL : La planification en libre (ce qui permettrait des phrases du genre "on a refait l'EDT avec laPEL"…)

            OTT : Open Time Table

        • [^] # Re: inspiration

          Posté par  (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 14 août 2018 à 19:27.

          Des noms comme Google ou Amazon ne faisaient vraiment pas rêver jusqu'à ce que ces boîtes deviennent connues…

          Sinon, dans la mythologie, ce qui est connu de la majorité (ou est est une référence facile à trouver pour ceux qui penseraient d'abord à la vitesse) est Chronos

          Du côté comics il faut peut-être regarder chez DC : Rip Hunter et William Tockman Mais je doute qu'aller dans ce sens soit une bonne idée. :)

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

        • [^] # Re: inspiration

          Posté par  (site web personnel) . Évalué à 4. Dernière modification le 15 août 2018 à 11:38.

          Qu'est-ce qui évoque la liberté, le temps libre dégagé grâce à cet outil ? Y-a-t-il des références dans la mythologie, dans les comics, dans la culture générale ?

          Chronos/Saturne/Kairos (temps) ? Aergie (paresse) ? Horme (niaque) ?

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: inspiration

      Posté par  . Évalué à 0.

      Je présume que le nom actuel est une référence au logiciel propriétaire EDT (https://www.edt-soft.com/) qui propose le même type de service.

      • [^] # Re: inspiration

        Posté par  (site web personnel) . Évalué à 9.

        une référence au logiciel propriétaire EDT

        Euh, ou juste au fait que « EDT » signifiant Emploi Du Temps, on l'emploie en tant que terme générique pour désigner tous les logiciels de ce genre :)

      • [^] # Re: inspiration

        Posté par  . Évalué à 5.

        EDT ça me semble être tout simplement un acronyme pour Emploi Du Temps. ;)

        • [^] # Re: inspiration

          Posté par  . Évalué à 6.

          Puisqu’il est question de vocabulaire je me permet de pinailler : un fr:wikt:acronyme si prononce. Sauf à vouloir prononcer « edte », ce n’est donc qu’un vulgaire sigle :)

  • # ILP

    Posté par  (Mastodon) . Évalué à 8.

    Pourquoi ne pas conseiller GLPK pour la résolution du programme linéaire ? Gurobi n'est pas libre. Certes il marche franchement mieux mais bon, quitte à faire du libre, autant aller jusqu'au bout. GLPK ne se défend pas si mal que ça.

    • [^] # Re: ILP

      Posté par  (site web personnel) . Évalué à 5.

      Merci pour la remarque! On est bien d'accord, et on a fait tout en libre. En fait, on conseille surtout CBC qui est sous licence libre Eclipse
      C'est vrai qu'on rend hommage à Gurobi qui est celui qui nous a permis d'avoir confiance dans l'efficacité de notre projet quand il était en phase de test. Pour les détenteurs d'une licence, la résolution d'un emploi du temps d'IUT est très rapide avec Gurobi (quelques secondes / minutes) mais ça fonctionne bien avec CBC aussi… Avec GLPK par contre je crois pas trop, mais je vais demander aux collègues qui s'y connaissent mieux dans ces aspects.

      • [^] # Re: ILP

        Posté par  (Mastodon) . Évalué à 3.

        Ça m'intéresse d'avoir des avis sur CBC par rapport à GLPK. Il m'a l'air plus compliqué à utiliser (l'API est… rude on va dire).

  • # Proposition de nom

    Posté par  . Évalué à 3.

    C'est vrai que le nom n'est pas vendeur, je propose :
    - Tempo
    - LibreEDT

  • # il manque une info

    Posté par  . Évalué à 10. Dernière modification le 14 août 2018 à 17:45.

    j'aimerais bien connaitre les limites du logiciels ou ce que vous avez pu testé

    genre 45 prof, 32 matières, 600 élèves, 25 salles

    et comment vous gérez le cas ou personne ne veut travailler le mercredi matin, ou le vendredi après midi ?

    • [^] # Re: il manque une info

      Posté par  (site web personnel) . Évalué à 10.

      Merci pour la question! Je vais modifier le site et le readme…

      Je vais tenter de répondre le plus précisément possible. Il a été développé dans le cadre du département informatique de l'IUT de Blagnac, et il n'a pour l'instant été testé que là. Il est utilisé en prod depuis un an. C'est un cadre assez spécifique:
      - un cadre assez petit (3 promos, 15 groupes de TP, 200 étudiants, 40 à 50 profs, Une 30aine de modules par semestre)
      - un emploi du temps qui change complètement chaque semaine
      - beaucoup de modifications (plusieurs dizaines chaque semaine), y compris de dernière minute
      - de nombreux vacataires avec beaucoup de contraintes (parfois atypiques et très spécifiques).

      Dans ce cadre là, le logiciel génère un emploi du temps compatible en quelques secondes, et le meilleur (selon une heuristique que je préciserai bientôt) en quelques minutes ou dizaines de minutes.

      On a hâte de pouvoir le tester dans d'autres cadres … :)

      • [^] # Re: il manque une info

        Posté par  . Évalué à 3.

        "On a hâte de pouvoir le tester dans d'autres cadres … :)"

        Je pense à un autre cas d'emploi, mais il est vrai qu'il s'agit d'un autre type de planification, et je ne sais pas dans quelle mesure celui-ci serait intégrable au projet lui-même, mais sur le fond, la gestion de contraintes semble avoir beaucoup de points communs.
        Il s'agit de la gestion de plannings mensuels non constants d'équipe de travail (typiquement pour les gens qui travaille sur une base non hebdomadaire, telles les équipes de soin dans les hôpitaux). Il s'agit ici également de faire cohabiter des contraintes personnelles (j'ai besoin de tel jour de congé, telle personne est à 80%, telle autre à temps plein, lui ne peut pas travailler le mercredi après-midi, etc…). Dans ce cas d'emploi, les contraintes peuvent s'appliquer sur une durée beaucoup plus longue, par exemple, les plannings de charges sont généralement établis mensuellement avec potentiellement quelques mois d'avance, et chaque personne a également la contrainte de ne pas dépasser son quota annuel de jours par mois ET par ans, ou de jours (ou nuits) travaillés successifs, ainsi que la possibilité de relais en équipe, journées décalées, etc…

        … Et puis j'y pense en lisant l'article, mais il est possible qu'une ou des solution(s) existe(nt) déjà :)

    • [^] # Re: il manque une info

      Posté par  . Évalué à 5.

      « et comment vous gérez le cas ou personne ne veut travailler avoir des étudiants le mercredi matin, ou le vendredi après midi ? » ;-)

      • [^] # Re: il manque une info

        Posté par  (site web personnel) . Évalué à 6. Dernière modification le 14 août 2018 à 23:18.

        Ah oui, j'ai zappé…
        Ben en vrai ce genre de situations théoriques n'arrive pas… Il peut arriver que plein de gens aient des contraintes similaires (et les étudiants ont des demi journées plus légères) mais tout le monde en même temps non…
        L'appli permet de distinguer contrainte et préférence (à la fois sur les créneaux et sur les autres type, genre "le moins de demi journées possibles" ou " pas plus de 5h par jour"…). Du coup, quand l'EDT est infaisable il est possoble de faire basculer des contraintes en préférence. Mais dans notre expérience, il est vraiment rare qu'un EDT soit infaisable, et c'est souvent pour une raison précise et facilement identifiable (genre ce cours doit être avant celui là, mais les dispos de ce prof sont après celles se celui là)…

        • [^] # Re: il manque une info

          Posté par  (site web personnel) . Évalué à 5. Dernière modification le 14 août 2018 à 23:29.

          Par ailleurs, il est possible de fixer des règles collectives qui évitent ce genre de situation. Chez nous, on est obligés de mettre 2 fois plus de dispos que d'heures à faire, sauf si on a plus de 15h dans la semaine. Et l'appli tente de minimiser le nombre de jours de cours.
          On pourrait aussi mettre "une semaine sur 4 il faut te rendre dispo le mercredi". Mais franchement je ne pense pas du tout que ce soit nécessaire. Si tout le monde à l'opportunité d'exprimer précisément ses préférences, les préférences vont forcément différer entre les individus…

        • [^] # Re: il manque une info

          Posté par  (site web personnel) . Évalué à 5.

          Il est possible également d'exprimer des contraintes (ou des préférences) du type:
          - Ce cours doit être après/juste après/simultané/un autre jour que celui-ci
          - Pas plus de 2 cours/TP/cours de ce module par jour/demi-journée
          - Minimiser le nombre de jours/demi-journées de présence
          - Eviter d'avoir à la fois ce créneau et celui-là
          Et bien d'autres…

          • [^] # Re: il manque une info

            Posté par  (site web personnel) . Évalué à 3.

            Et comment vous gérer les salles ? Car un EDT pour qu'il fonctionne, il faut des salles avec suffisamment de chaises dedans. Il gère donc les contraintes de place en terme de cours / TD / TP ?

            • [^] # Re: il manque une info

              Posté par  (site web personnel) . Évalué à 3.

              Oui bien sûr!
              Les contraintes peuvent être de taille ou autres (contient des ordis, salle de bio, labo de langue, etc…)
              En gros, à un cours correspond un type de salle, et les salles peuvent admettre plusieurs types. Un cours ne peut peut être placé dans une seule que si elle admet le type en question…

  • # quelques remarques

    Posté par  (site web personnel) . Évalué à 9. Dernière modification le 14 août 2018 à 20:57.

    J'ai regardé vite fait le projet et si je peux me permettre quelques remarques :
    - ce serait peut-être bien de mettre les issues et readme du dépôt en anglais.
    - le fait de devoir passer par docker-compose + un script bash pour provisionner la base est assez contraignant. Je n'ai pas utilisé django depuis un moment mais il me semble que configurer django+postgres+redis est assez simple pour un développeur, avec un setup.py et un manage.py. Et ça faciliterait également la création de paquets par d'éventuels mainteneurs de distribs…
    - par contre, une vraie image docker directement utilisable depuis dockerhub serait très pratique.

    • [^] # Re: quelques remarques

      Posté par  (site web personnel) . Évalué à 6. Dernière modification le 14 août 2018 à 21:11.

      C'est noté, merci!
      Pour les issues et le readme on va sûrement le faire, mais on s'est dit que cette version 0 serait adressée surtout à une communauté francophone, donc…
      Je note pour la lourdeur. L'idée était de pouvoir facilement provisionner la base avec une réalité proche de la nôtre pour tester l'appli, mais à terme il faudra une appli django qui permette facilement à chaque utilisateur de provisionner la base avec sa réalité propre. On y travaille.
      Ok pour l'image docker sur dockerhub. On regarde ça bientôt. Merci!!

      PS: tu as réussi à provisionner la base? A utiliser l'appli?

      • [^] # Re: quelques remarques

        Posté par  (site web personnel) . Évalué à 4.

        PS : tu as réussi à provisionner la base? A utiliser l'appli?

        C'est un peu compliqué…
        J'ai testé sur une distrib Nixos, qui n'utilise pas de FHS classique. Jusqu'ici, j'arrive à lancer un environnement avec les bonnes dépendances et à faire le "docker-compose build" mais le provisionnement avec wait-for-it.sh ne fonctionne pas. Je crois qu'il faut patcher les scripts et que Nix a des outils qui font ça mais je ne les connais pas bien. Du coup, c'est un peu rageant de devoir utiliser du docker-compose tout moche alors que Nix est top pour gérer des services… Bref, je réessaierai plus tard, ou avec une distrib plus classique.

      • [^] # Re: quelques remarques

        Posté par  . Évalué à 4.

        Perso j'ai pas réussi à faire marcher l'appli, cf https://framagit.org/flopedt/FlOpEDT/issues/4.

        Pour revenir sur docker et docker-compose, moi je trouve que c'est très bien, ça évite justement de se préoccuper de problèmes de dépendances and co, surtout pour tester (c'est aussi un très bon moyen de gérer son instance, mais en général on doit écrire son proper compose, on va pas en réutiliser un autre).

        Je n'arrive pas à comprendre pourquoi ça marche pas sur Nix, vu qu'il suffit juste d'un daemon docker et y'a tout ce qu'il faut pour que ça tourne dans la distrib choisie pour l'image docker… même la "compile" est faite dans docker là en plus…

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.