Skip to Content
MoodlePartie 1 — Découvrir MoodleLes versions de Moodle et le cycle de release

Chapitre 5 — Les versions de Moodle et le cycle de release

Partie 1 : Découvrir Moodle — Chapitre 5/5 Public : développeur web débutant sur Moodle. Dernier chapitre « sans code » : on apprend à lire une version, à comprendre le rythme des sorties, et à en tirer les conséquences pour votre code. Version de référence : Moodle 5.2 (sortie le 20 avril 2026).

⏱️ TL;DR

  • Une version Moodle se lit MAJEURE.MINEURE (ex. 5.2) ; les correctifs ajoutent un troisième nombre (5.2.1, 5.2.2…), publiés ~toutes les 4 semaines.
  • Le rythme est semestriel : une version majeure ou mineure environ tous les 6 mois (avril et octobre). Depuis la 4.x, la distinction « majeure/mineure » s’est estompée : chaque sortie apporte des nouveautés.
  • Une version sur ~quatre est une LTS (Long Term Support), maintenue plus longtemps (sécurité) — cible privilégiée des institutions prudentes.
  • Chaque version a trois fenêtres de support : general support (bugs + sécurité), puis security-only (sécurité seule), puis fin de vie (plus aucun correctif).
  • En base, la version se traduit par un entier YYYYMMDDXX ($CFG->version) ; en git, par une branche MOODLE_502_STABLE. Ces deux formes vous serviront concrètement.
  • Choisir une version de projet : viser la dernière stable (ou la dernière LTS si l’on privilégie la stabilité), jamais une version en fin de vie, et vérifier la compatibilité des plugins et de l’environnement (PHP, base de données).
  • Le cycle rapide (2 sorties/an, ~1 an de support général) a une conséquence directe : un plugin ou un thème doit être testé et remis à jour à chaque version — d’où l’importance des tests et de la CI (Partie 11).
  • Prérequis d’environnement de la 5.2 : PHP 8.3+, PostgreSQL 16 / MySQL 8.4 / MariaDB 10.11+, et la racine web sur public/ (changement structurel de la 5.1).

🎯 Objectifs

À la fin de ce chapitre, vous saurez :

  • Lire un numéro de version Moodle et ses trois formes (humaine, base de données, branche git).
  • Expliquer le cycle de release semestriel et le rôle des LTS.
  • Distinguer les fenêtres de support (général, sécurité, fin de vie) et pourquoi c’est critique.
  • Choisir la version d’un nouveau projet et vérifier la compatibilité plugins + environnement.
  • Anticiper l’impact du cycle sur la maintenance de vos plugins et thèmes.

1. Pourquoi la question des versions est stratégique

En JavaScript, vivre une version de retard est souvent bénin. Dans Moodle, la version détermine trois choses simultanément qui peuvent bloquer un projet entier :

  1. La sécurité — une instance en fin de vie ne reçoit plus aucun correctif de sécurité. Sur un LMS qui héberge des données d’étudiants (RGPD !), c’est une faute grave, parfois une non-conformité légale.
  2. La compatibilité des plugins — un plugin tiers annonce les versions de Moodle qu’il supporte (chapitre 4). Choisir une version trop récente ou trop ancienne peut vous priver d’un plugin indispensable.
  3. La compatibilité de l’environnement — chaque version impose une fourchette de PHP et de base de données. La 5.2 exige PHP 8.3+ : sur un serveur bloqué en PHP 8.1, vous ne pourrez tout simplement pas l’installer.

Comprendre le cycle, c’est donc pouvoir répondre à « sur quelle version part-on, et jusqu’à quand tiendra-t-elle ? » — une question qu’un décideur vous posera, et dont dépend le coût de maintenance du projet.


2. Anatomie d’un numéro de version

2.1 La forme humaine : MAJEURE.MINEURE[.CORRECTIF]

  • 5 = version majeure.
  • 5.2 = deuxième sortie de la série 5 (une « mineure » au sens historique, mais riche en nouveautés).
  • 5.2.1, 5.2.2… = releases de maintenance (correctifs de bugs et de sécurité), publiées environ toutes les 4 semaines sur les branches maintenues.

⚠️ Piège de vocabulaire : depuis la série 4.x, Moodle a abandonné la distinction rigide majeure/mineure. On parle surtout de « versions » sorties deux fois par an. Ne cherchez pas de « grande » 6.0 opposée à une « petite » 5.2 : chaque sortie semestrielle apporte de vraies fonctionnalités. La numérotation 5.0 → 5.1 → 5.2 → … progresse, et une nouvelle « dizaine » (6.0) marque simplement le passage à une nouvelle série.

2.2 La forme base de données : $CFG->version

Moodle range en interne un entier daté de la forme YYYYMMDDXX (année, mois, jour, deux chiffres d’incrément). Exemple parlant : 2026042000. On le trouve :

  • dans $CFG->version (la version du code core installé),
  • dans le version.php de chaque plugin (vous en écrirez, Partie 6),
  • comparé au numéro stocké en base pour décider s’il faut jouer une mise à niveau.

C’est ce nombre monotone croissant qui pilote tout le mécanisme d’upgrade : « le code sur le disque est plus récent que ce qui est enregistré en base → lance le processus de mise à jour ». Retenez la logique ; les détails sont en Partie 4 (installation) et Partie 6 (version.php d’un plugin).

2.3 La forme git : MOODLE_502_STABLE

Le dépôt (chapitre 4) organise les versions en branches stables nommées MOODLE_XYZ_STABLE, où XYZ encode la version : MOODLE_405_STABLE (4.5), MOODLE_500_STABLE (5.0), MOODLE_502_STABLE (5.2). La branche main porte le développement de la future version. Concrètement, déployer/upgrader consiste souvent à basculer d’une branche stable à la suivante puis à jouer l’upgrade (Partie 11).

💡 Pour un dev React : comparez aux trois « vues » d’une release npm : le tag lisible (5.2.1, comme un semver), le champ interne qui déclenche des migrations (ici l’entier YYYYMMDDXX, jouant le rôle d’un numéro de migration Prisma), et la branche/tag git de déploiement. Différence majeure avec semver : Moodle ne promet pas de compatibilité descendante d’API entre majeures de la même façon — d’où la nécessité de tester à chaque version (§6).


3. Le cycle de release : deux sorties par an

Moodle suit un calendrier semestriel régulier : une version en avril, une en octobre, chaque année. La 5.2 est ainsi sortie le 20 avril 2026 ; la suivante (5.3) est attendue en octobre 2026.

Entre deux versions majeures/mineures, chaque branche maintenue reçoit des releases de maintenance (.1, .2, …) toutes les ~4 semaines : correctifs de bugs et patchs de sécurité groupés. C’est pourquoi une instance bien tenue n’est pas « figée sur 5.2 » mais suit 5.2.1, 5.2.2… au fil des semaines.

⚠️ Piège : « être à jour » ne veut pas dire « être sur la dernière majeure ». Une instance en 5.2.3 est parfaitement à jour de sécurité même si la 5.3 est sortie, tant que la 5.2 est dans sa fenêtre de support. Distinguez suivre les correctifs de sa branche (obligatoire) et changer de branche majeure (planifié, plus lourd).


4. LTS et fenêtres de support

4.1 Qu’est-ce qu’une LTS ?

Environ une version sur quatre est désignée LTS (Long Term Support). Une LTS bénéficie d’une fenêtre de support de sécurité étendue par rapport aux versions intermédiaires. Les institutions qui privilégient la stabilité (universités, grandes administrations) calent souvent leur cycle sur les LTS : elles sautent les versions intermédiaires et n’upgradent qu’à la LTS suivante. La 5.3 (octobre 2026) est la prochaine LTS annoncée — d’où la note du README : ce qui est écrit pour la 5.2 s’applique à la 5.3.

4.2 Les trois fenêtres de support

Chaque version traverse trois phases :

PhaseCe que vous recevezDurée indicative
General supportCorrectifs de bugs et de sécurité~12 mois (versions standard)
Security-only supportSécurité uniquement (plus de correctifs de bugs fonctionnels)prolongé, surtout pour les LTS
End of life (fin de vie)Rien — aucun correctif, aucune sécuritéaprès les deux phases

⚠️ Piège critique : une instance en fin de vie est une passoire de sécurité et un risque de conformité (RGPD). C’est l’une des premières choses à auditer en reprenant un projet Moodle existant : « sur quelle version tourne la prod, et est-elle encore supportée ? ». Si la réponse est « 3.9 » ou « 4.1 » depuis longtemps, l’upgrade n’est pas une option, c’est une urgence.

📚 Aller plus loin : le calendrier officiel des sorties et des fins de support est publié et tenu à jour sur moodledev.io/general/releases . Vérifiez-y les dates exactes de fin de support de la version qui vous concerne — elles évoluent.


5. Choisir la version d’un projet

Vous démarrez un projet (nouvelle instance, nouveau plugin, nouveau thème). Quelle version viser ?

Règle par défaut : la dernière version stable (ici 5.2). Vous bénéficiez des dernières fonctionnalités, du support le plus long devant vous, et de la compatibilité avec les plugins récents.

Variante « stabilité d’abord » : la dernière LTS. Pour un client averse au risque ou qui n’upgrade que rarement, viser une LTS maximise la durée de tranquillité entre deux migrations lourdes.

Trois vérifications avant de graver la décision :

  1. Les plugins indispensables sont-ils compatibles ? Faites la liste des plugins tiers requis et croisez-la avec leur compatibilité annoncée (chapitre 4). Un seul plugin critique incompatible peut imposer de rester une version en arrière — ou de trouver une alternative.
  2. L’environnement suit-il ? La 5.2 exige PHP 8.3+ et des versions minimales de base de données (PostgreSQL 16, MySQL 8.4, MariaDB 10.11+). Si l’hébergement est bloqué sur une vieille PHP, réglez ça avant de choisir la version de Moodle.
  3. La version est-elle encore supportée pour toute la durée du projet ? Ne partez jamais sur une version proche de sa fin de vie « parce que le client la connaît ».

💡 Pour un dev React : c’est le même arbitrage que choisir Node LTS vs Node « current » pour un nouveau service — sauf que le coût d’un mauvais choix est plus élevé (données d’étudiants, migrations base de données non triviales, plugins tiers à la traîne). Dans le doute pour de la production institutionnelle : dernière LTS. Pour du développement et de l’apprentissage (ce cours) : dernière stable (5.2), pour être au plus près de l’avenir.


6. Ce que le cycle implique pour VOTRE code

C’est le point qui vous concerne directement en tant que développeur, et il change des habitudes du monde JS.

Deux sorties par an = deux occasions par an que votre plugin casse. Chaque version de Moodle peut modifier une API, déprécier une fonction, changer un template ou un comportement du core. Un plugin « qui marche » en 5.1 n’est pas garanti de marcher en 5.2. Conséquences pratiques :

  • Déclarez les versions supportées dans le version.php de votre plugin ($plugin->supported, $plugin->requires — Partie 6) et tenez-les à jour.
  • Testez à chaque version. Sans suite de tests, chaque sortie majeure est une loterie que vous perdrez tôt ou tard, en production. D’où l’insistance de la Partie 11 sur PHPUnit, Behat et la CI (moodle-plugin-ci teste justement votre plugin contre une matrice de versions de Moodle × PHP × base de données).
  • Suivez les guides de migration (les Upgrade / API change notes sur moodledev.io) : à chaque version, Moodle publie la liste des changements d’API et des dépréciations. C’est votre checklist de compatibilité.
  • Gérez des branches git alignées sur les versions de Moodle si vous maintenez un plugin pour plusieurs versions (une branche par MOODLE_XYZ_STABLE supportée) — stratégie détaillée en Partie 6 (cycle de vie et distribution).

⚠️ Piège : ne jamais « figer » une instance sur une vieille version pour éviter de mettre à jour vos plugins. Vous accumulez une dette qui explose au moment de l’upgrade forcé (fin de vie, faille), avec potentiellement plusieurs versions de Moodle à franchir d’un coup. Le bon rythme : suivre, tester tôt sur les release candidates, corriger au fil de l’eau.

💡 Pour un dev React : mentalement, un plugin Moodle se maintient comme une librairie open source que vous publieriez sur npm avec une matrice de compatibilité (« supporte Moodle 5.1, 5.2 »). La CI qui teste contre plusieurs versions, c’est votre GitHub Actions habituel — transposé à l’écosystème PHP/Moodle. La discipline est la même ; seuls les outils changent.


7. Le cas particulier de la 5.2 (et de la 5.1)

Deux évolutions structurelles récentes méritent d’être connues dès maintenant, car elles influencent l’installation et le développement (détaillés en Partie 4) :

  • La racine web public/ (depuis la 5.1). Historiquement, la racine web de Moodle était le dossier dirroot lui-même (tout le code exposé sous le document root). Depuis la 5.1, le point d’entrée web est le sous-dossier public/, ce qui améliore la sécurité (le code non public n’est plus servi directement). La 5.2 confirme ce modèle. Concrètement, votre document root Apache/Nginx pointe désormais sur .../public/, et certains chemins d’URL/de fichiers en tiennent compte.
  • Prérequis modernisés. La 5.2 impose PHP 8.3+ (fini PHP 8.1) et des bases de données récentes (PostgreSQL 16, MySQL 8.4, MariaDB 10.11+). C’est cohérent avec le rythme : chaque version relève régulièrement le plancher pour profiter des nouveautés du langage et abandonner ce qui est en fin de vie côté PHP.
  • Continuité vers la 5.3 (LTS). Comme indiqué en tête de cours, l’essentiel de ce que vous apprenez sur la 5.2 s’appliquera à la 5.3 d’octobre 2026 : les APIs, la structure des plugins, les thèmes et les web services évoluent, mais par incréments compatibles documentés, pas par rupture totale.

📚 Aller plus loin : les nouveautés détaillées de chaque version (côté utilisateur et côté développeur) sont dans les Release notes sur docs.moodle.org (fonctionnel) et les Developer update notes sur moodledev.io (API). Lire ces deux pages à chaque sortie est une habitude de développeur Moodle sérieux.


8. Synthèse et points à retenir

  • Une version se lit MAJEURE.MINEURE[.CORRECTIF] (5.2, 5.2.1…) et existe sous trois formes : humaine (5.2), base de données (YYYYMMDDXX, pilote l’upgrade) et git (MOODLE_502_STABLE, pilote le déploiement).
  • Le cycle est semestriel (avril / octobre) ; les correctifs (.1, .2) sortent ~toutes les 4 semaines. Une version sur ~quatre est une LTS.
  • Trois fenêtres : general support (bugs + sécurité) → security-onlyfin de vie (rien). Une instance en fin de vie est un risque de sécurité et de conformité.
  • Choisir une version : dernière stable par défaut (dernière LTS si stabilité prioritaire), après avoir vérifié la compatibilité des plugins et de l’environnement (PHP 8.3+, BDD récentes pour la 5.2).
  • Le cycle rapide impose de tester et maintenir vos plugins/thèmes à chaque version — d’où tests + CI (Partie 11). Ne figez jamais une instance pour fuir les mises à jour.
  • Spécificités récentes : racine web public/ (depuis 5.1), prérequis modernisés, continuité annoncée vers la 5.3 LTS.

✏️ Exercices

Exercice 1 — Traduire une version. Donnez les trois formes (humaine, base de données approximative, branche git) de la version « Moodle 5.2 sortie le 20 avril 2026 ». Expliquez à quoi sert chaque forme.

✅ Solution

  • Humaine : 5.2 (ou 5.2.0 à la sortie) — pour communiquer, lire la doc, discuter.
  • Base de données : un entier de la forme YYYYMMDDXX, ici de l’ordre de 2026042000 (date de sortie + incrément). Il pilote le mécanisme d’upgrade : le code sur disque annonce ce nombre, comparé à celui stocké en base.
  • Git : la branche MOODLE_502_STABLE. Elle sert au déploiement (checkout/pull) et à la maintenance (les .1, .2 y sont poussés).

Exercice 2 — Est-ce à jour ? Une prod tourne en 5.2.4 alors que la 5.3 vient de sortir. Le client s’inquiète d’être « en retard ». Que répondez-vous ?

✅ Solution

L’instance est à jour de sécurité : elle suit les correctifs de sa branche (5.2.4), et tant que la 5.2 est dans sa fenêtre de support, elle reçoit les patchs. Être « en retard d’une majeure » (5.3 sortie) n’est pas un problème de sécurité en soi. Il faut distinguer suivre les correctifs de sa branche (obligatoire, fait ici) et migrer vers la majeure suivante (planifié, à décider selon la fin de support de la 5.2, les besoins fonctionnels et la compatibilité des plugins). La vraie question : jusqu’à quand la 5.2 est-elle supportée ?

Exercice 3 — Choisir pour un client prudent. Une université veut une nouvelle instance et déteste les migrations. Nous sommes en avril 2026. Quelle version recommandez-vous et pourquoi ? Que vérifiez-vous avant ?

✅ Solution

Pour une institution averse au risque, on vise une LTS. En avril 2026, la 5.2 vient de sortir mais n’est pas LTS ; la prochaine LTS est la 5.3 (octobre 2026). Deux options défendables : (a) partir sur la dernière LTS disponible aujourd’hui pour une mise en service immédiate et planifier la montée vers 5.3 ; (b) si le lancement peut attendre l’automne, viser directement la 5.3 LTS pour maximiser la durée avant la migration suivante. Dans tous les cas, on vérifie la compatibilité des plugins requis et de l’environnement (PHP/BDD) avec la version choisie, et on confirme sa fenêtre de support.

Exercice 4 — Diagnostic d’une reprise de projet. Vous reprenez la maintenance d’un Moodle en 4.1, jamais mis à jour depuis 2023. Quels sont les deux risques majeurs, et quelle est la priorité ?

✅ Solution

Risques majeurs : (1) sécurité — si la 4.1 est en fin de vie (ou proche), l’instance ne reçoit plus de correctifs → vulnérabilités connues non patchées, sur des données personnelles d’étudiants (enjeu RGPD) ; (2) dette d’upgrade — plusieurs versions majeures à franchir (4.1 → 4.5 → 5.0 → 5.1 → 5.2), avec des plugins tiers probablement incompatibles à remplacer ou mettre à jour, et des migrations base de données en chaîne. Priorité : auditer la version et son statut de support, puis planifier un chemin d’upgrade par paliers (Partie 11), en sauvegardant tout avant chaque étape. Ce n’est pas « optionnel » : c’est une urgence de sécurité.

Exercice 5 — Impact sur un plugin. Vous maintenez un plugin d’activité compatible 5.1. La 5.2 sort. Quelles actions entreprenez-vous, et pourquoi ne pas simplement « attendre que ça casse » ?

✅ Solution

Actions : (1) lire les developer update notes de la 5.2 (changements d’API, dépréciations) sur moodledev.io ; (2) exécuter votre suite de tests (PHPUnit/Behat) contre la 5.2, idéalement via moodle-plugin-ci sur une matrice incluant 5.2 + PHP 8.3 ; (3) corriger les éventuelles ruptures, (4) déclarer la compatibilité 5.2 dans version.php, (5) publier une nouvelle release sur le directory. Ne pas « attendre que ça casse » : ça casserait en production, chez vos utilisateurs, au pire moment ; tester avant (dès la release candidate) transforme une panne subie en une simple tâche de maintenance planifiée.


🧠 Quiz de révision

Q1. Quelles sont les trois formes d’un numéro de version Moodle et à quoi sert chacune ?

Réponse

Humaine (5.2, pour communiquer/lire la doc), base de données (YYYYMMDDXX, entier qui pilote le mécanisme d’upgrade) et git (branche MOODLE_502_STABLE, pour le déploiement et la maintenance).

Q2. À quel rythme sortent les versions, et à quel rythme les correctifs ?

Réponse

Une version tous les 6 mois (avril et octobre) ; des releases de maintenance (correctifs de bugs et de sécurité) environ toutes les 4 semaines sur chaque branche maintenue.

Q3. Qu’est-ce qu’une LTS et pour qui est-elle indiquée ?

Réponse

Une version Long Term Support (environ une sur quatre), avec une fenêtre de support de sécurité étendue. Indiquée pour les organisations privilégiant la stabilité et migrant rarement (elles calent leur cycle sur les LTS).

Q4. Pourquoi une instance en « fin de vie » est-elle un problème grave ?

Réponse

Parce qu’elle ne reçoit plus aucun correctif, y compris de sécurité : les failles connues restent ouvertes, sur un système hébergeant des données personnelles (risque de compromission et de non-conformité RGPD).

Q5. Citez deux conséquences concrètes du cycle semestriel sur la maintenance d’un plugin.

Réponse

(1) Il faut tester et mettre à jour le plugin à chaque version de Moodle (car une API peut changer/être dépréciée) — d’où PHPUnit/Behat + CI multi-versions ; (2) il faut déclarer et tenir à jour les versions supportées (version.php) et suivre les guides de migration publiés à chaque sortie. Corollaire : ne jamais figer une instance pour éviter les mises à jour, sous peine de dette d’upgrade explosive.

Fin de la Partie 1. Vous savez désormais ce qu’est Moodle, vous parlez sa langue, vous savez naviguer dans son interface, vous connaissez son écosystème et vous comprenez son cycle de vie. Le décor est planté — place à la mécanique.

Partie suivante : Partie 2 — Administration, rôles et permissions. On entre dans le premier grand système structurant de Moodle : contextes, rôles et capabilities — le modèle de permissions qui, une fois compris, éclaire tout le reste (et que l’on retrouvera dans chaque ligne de code sécurisé).