La vie d'une JEP n'est pas un long fleuve tranquille

Tous les 6 mois, une nouvelle version de JAVA sort. Le JDK est mis à jour, de nouvelles fonctionnalités sont ajoutées et parfois certaines sont retirées. Le JDK c'est le JAVA developpement kit, il contient des outils et des bibliothèques qui permettent d'écrire des applications en JAVA. Avec chaque mise à jour du JDK on entend parler des JEP qu'elle intègre. Mais c'est quoi exactement une JEP ? JEP ou JDK Enhancement Proposal ? Une JEP c'est un document texte qui va permettre de définir une nouvelle fonctionnalité. C'est un document vivant qui va évoluer au cours de sa vie. Des sections vont être ajoutées, modifiées ou supprimées. Une JEP doit être rédigée: pour toutes modifications significatives du JDK si une modification demande plus de 2 semaines de travail ou si cette modification vient suite à une grande demande des développeurs Toutefois, il y à beaucoup de modifications qui ne remplissent pas ces conditions et qui sont tout de même intégrées au JDK. On pourra trouver la liste de ces modifications dans la release note qui accompagne la sortie de la nouvelle version du JDK. Pour proposer une JEP, on va la créer à partir d'un template, puis la soumettre par mail à OpenJDK. C'est a partir de ce document que l'on va pouvoir commencer à discuter de cette modification dans la communauté OpenJDK et que le travail va pouvoir commencer. OpenJDK La communauté OpenJDK, c'est une association de développeurs qui collaborent autour de l'implémentation open source de la plateforme JAVA Standard Edition (JAVA SE). Elle a été créée en 2006 quand une partie du code source de JAVA a été publié sous license GPLv2. La communauté est composée de développeurs avec différents statuts. Qui est qui chez OpenJDK ? En souscrivant à une mailing list d'OpenJDK, on obtient le rôle de Participant. C'est le tout premier rôle qui va permettre de participer aux discussions de ces mailing list. Pour pouvoir passer aux choses sérieuses et commencer à écrire du code qui va changer (ou pas) la face de JAVA, il va falloir signer l'Oracle Contributor Agreement (OCA). C'est un document juridique qui va donner les droits de ton code à Oracle. À partir de ce moment, on devient Contributor et les choses sérieuses commencent. Dorénavant on peut soumettre des modifications du code, proposer de nouveaux projets et assumer divers rôles au sein de groupes ou de projets. Au fil de des contributions, on va être amené à échanger avec d'autres développeurs, et notamment des OpenJDK Members. Et une fois que l'on aura participé à plusieurs modifications significatives, notre nom pourra être proposé afin de devenir OpenJDK Member (après un vote des OpenJDK Members). On aura la possibilité proposer la création de nouveaux groupes, devenir leader de groupe et participer à tout un tas de votes réservés aux OpenJDK Members. (nouveaux projets, nouveaux membres, membres extraordinaires du conseil d'administration...) Le dernier rôle c'est celui d'OpenJDK Lead, mais là, il faudra être nommé par Oracle pour le devenir. Il dirige les principaux efforts de la communauté, à savoir les nouvelles releases du JDK et il siège au conseil d'administration. Les groupes Tout ce petit monde va se réunir dans des groupes en fonction des appétences de chacun. (ex: Compiler, Security, Web...) Un groupe peut avoir pour intérêt la création, l'amélioration ou la maintenance d'une partie spécifique de code ou bien des sujets annexes comme la documentation par exemple. Un groupe peut devenir sponsor d'un projet. Cela veut dire qu'il estime qu'un projet est intéressant et que des membres du groupe pourront travailler sur ce projet. Le groupe sera constitué de membres et d'un leader. Le leader a toute autorité pour choisir de sponsoriser un projet, il sera le contact pour communiquer avec le groupe et il devra écrire un rapport sur les activités du groupe une fois par trimestre. Les projets Un projet est un effort collaboratif qui a pour but de produire du code, de la documentation, ou tout autre type de matériel en lien avec le projet. Un projet peut contenir une ou plusieurs fonctionnalités, ou même l'entièreté du JDK. Tout contributeur peut proposer la création d'un projet. S'il est supporté par au moins un Group Lead, dont le groupe sera sponsor du projet et approuvé par les OpenJDK Members, alors le projet sera créé. Un projet peut être sponsorisé par plusieurs groupes, mais si un projet n'a plus de sponsor, alors il est dissous et le matériel d'un projet est archivé car un projet dissous peut être recréé. On va y trouver là aussi différents rôles. un Author est un contributeur qui a reçu les droits pour créer des changements dans le code, mais il n'a pas les droits pour pousser directement sur le dépôt GIT. un committer est un auteur qui a le droit de "pousser" sur le depôt. Il peut nommer de nouveaux committers. un reviewer est une committer expérimenté qui a l'autorité d'approuver les changem

Apr 29, 2025 - 15:55
 0
La vie d'une JEP n'est pas un long fleuve tranquille

Tous les 6 mois, une nouvelle version de JAVA sort.
Le JDK est mis à jour, de nouvelles fonctionnalités sont ajoutées et parfois certaines sont retirées.
Le JDK c'est le JAVA developpement kit, il contient des outils et des bibliothèques qui permettent d'écrire des applications en JAVA.

Avec chaque mise à jour du JDK on entend parler des JEP qu'elle intègre.
Mais c'est quoi exactement une JEP ?

JEP ou JDK Enhancement Proposal ?

Une JEP c'est un document texte qui va permettre de définir une nouvelle fonctionnalité.

C'est un document vivant qui va évoluer au cours de sa vie.
Des sections vont être ajoutées, modifiées ou supprimées.

Une JEP doit être rédigée:

  • pour toutes modifications significatives du JDK
  • si une modification demande plus de 2 semaines de travail
  • ou si cette modification vient suite à une grande demande des développeurs

Toutefois, il y à beaucoup de modifications qui ne remplissent pas ces conditions et qui sont tout de même intégrées au JDK. On pourra trouver la liste de ces modifications dans la release note qui accompagne la sortie de la nouvelle version du JDK.

Pour proposer une JEP, on va la créer à partir d'un template, puis la soumettre par mail à OpenJDK.

C'est a partir de ce document que l'on va pouvoir commencer à discuter de cette modification dans la communauté OpenJDK et que le travail va pouvoir commencer.

OpenJDK

La communauté OpenJDK, c'est une association de développeurs qui collaborent autour de l'implémentation open source de la plateforme JAVA Standard Edition (JAVA SE).

Elle a été créée en 2006 quand une partie du code source de JAVA a été publié sous license GPLv2.

La communauté est composée de développeurs avec différents statuts.

Qui est qui chez OpenJDK ?

En souscrivant à une mailing list d'OpenJDK, on obtient le rôle de Participant.
C'est le tout premier rôle qui va permettre de participer aux discussions de ces mailing list.

Pour pouvoir passer aux choses sérieuses et commencer à écrire du code qui va changer (ou pas) la face de JAVA, il va falloir signer l'Oracle Contributor Agreement (OCA).
C'est un document juridique qui va donner les droits de ton code à Oracle.
À partir de ce moment, on devient Contributor et les choses sérieuses commencent.
Dorénavant on peut soumettre des modifications du code, proposer de nouveaux projets et assumer divers rôles au sein de groupes ou de projets.

Au fil de des contributions, on va être amené à échanger avec d'autres développeurs, et notamment des OpenJDK Members. Et une fois que l'on aura participé à plusieurs modifications significatives, notre nom pourra être proposé afin de devenir OpenJDK Member (après un vote des OpenJDK Members).
On aura la possibilité proposer la création de nouveaux groupes, devenir leader de groupe et participer à tout un tas de votes réservés aux OpenJDK Members. (nouveaux projets, nouveaux membres, membres extraordinaires du conseil d'administration...)

Le dernier rôle c'est celui d'OpenJDK Lead, mais là, il faudra être nommé par Oracle pour le devenir.
Il dirige les principaux efforts de la communauté, à savoir les nouvelles releases du JDK et il siège au conseil d'administration.

Les groupes

Tout ce petit monde va se réunir dans des groupes en fonction des appétences de chacun. (ex: Compiler, Security, Web...)

Un groupe peut avoir pour intérêt la création, l'amélioration ou la maintenance d'une partie spécifique de code ou bien des sujets annexes comme la documentation par exemple.

Un groupe peut devenir sponsor d'un projet. Cela veut dire qu'il estime qu'un projet est intéressant et que des membres du groupe pourront travailler sur ce projet.

Le groupe sera constitué de membres et d'un leader.
Le leader a toute autorité pour choisir de sponsoriser un projet, il sera le contact pour communiquer avec le groupe et il devra écrire un rapport sur les activités du groupe une fois par trimestre.

Les projets

Un projet est un effort collaboratif qui a pour but de produire du code, de la documentation, ou tout autre type de matériel en lien avec le projet.
Un projet peut contenir une ou plusieurs fonctionnalités, ou même l'entièreté du JDK.

Tout contributeur peut proposer la création d'un projet.
S'il est supporté par au moins un Group Lead, dont le groupe sera sponsor du projet et approuvé par les OpenJDK Members, alors le projet sera créé.

Un projet peut être sponsorisé par plusieurs groupes, mais si un projet n'a plus de sponsor, alors il est dissous et le matériel d'un projet est archivé car un projet dissous peut être recréé.

On va y trouver là aussi différents rôles.

  • un Author est un contributeur qui a reçu les droits pour créer des changements dans le code, mais il n'a pas les droits pour pousser directement sur le dépôt GIT.

  • un committer est un auteur qui a le droit de "pousser" sur le depôt.
    Il peut nommer de nouveaux committers.

  • un reviewer est une committer expérimenté qui a l'autorité d'approuver les changements dans le code. Il peut nommer ou révoquer un autre reviewer.

  • un Project lead est un committer qui a la responsabilité de diriger et coordonner les activités de ce projet.

  • Il a toute autorité sur la partie technique du projet.

  • Il peut ajouter ou retirer des auteurs qui ne sont pas committers sur le projet.

  • Il peut demander des modifications de code dans un repository.

  • Il a l'obligation d'être le point d'entrée du projet pour les mailing lists, le contenu web et les repositories.

  • Il doit publier une fois par trimestre un rapport sur les activités du projet.

  • Il est considéré comme reviewer.

  • Il est nommé par les group leads qui sponsorisent le projet.
    Lors de la création du projet, c'est lui qui nomme les auteurs, committers et reviewers.

Le Governing Board

C'est un groupe qui manage la structure et les opérations de la communauté OpenJDK.
Il est composé de 5 contributeurs:

  • Le Président, nommé par Oracle.
  • Le Vice Président, nommé par IBM.
  • L'OpenJDK Lead nommé par Oracle.
  • 2 membres extraordinaires, qui sont nommés suite à un vote des OpenJDK Members pour une durée de 1 an à compter du 1er Avril de chaque année.

Il gère la structure et les opérations de la communauté via règlement qu'il maintient et fait respecter.
Il peut trancher des litiges procéduraux.
Il n'a pas d'autorité directe sur des décisions techniques.

Le cycle de vie d'un JEP

Maintenant que nous connaissons mieux OpenJDK et surtout le rôle de chacun, il va être très facile de comprendre le schéma ci dessous fournis par OpenJDK.
En noir nous aurons les différents états de la JEP et en vert, qui modifie cet état.

Diagramme du workflow d'une JEP

La JEP va donc passer par différents états et c'est la personne en vert sur le schéma qui la fera passer d'un état à un autre.

  • Draft - c'est le 1er état de la JEP, le template correctement rempli a été fourni à OpenJDK et un numéro JBS lui a été attribué*. On va pouvoir commencer à la diffuser dans la communauté afin de valider que l'idée est bonne et réalisable.
  • Submitted - La JEP est soumise pour être évaluée par toute la communauté afin d'être ajoutée à la roadmap.
  • Candidate - La JEP a été ajoutée à la roadmap. C'est à ce moment qu'elle reçoit un numéro officiel. Le propriétaire de la JEP va commencer à établir un plan d'ingénierie.
  • Proposed to target - Une fois qu'un plan d'ingénierie crédible est établi, une release du JDK est ciblée pour la livraison.
  • Targeted - le plan d'ingénierie a été validé par les committers et reviewers du projet.
  • Integrated - le développement et les tests unitaires sont faits.
  • Complete - les tests fonctionnels, de performance et de conformité sont livrés.
  • Rejected - Une JEP peut être rejetée si l'openJDK Lead estime qu'elle est trop complexe à mettre en oeuvre.
  • Withdrawn - Une JEP peut aussi être retirée par son propriétaire s'il estime qu'elle a besoin d'être retravaillée par exemple.

Il existe des JEP de procédures (elles décrivent le fonctionnement d'openJDK) et d'infrastructure (elles décrivent les systèmes et outils utilisés pour développer et maintenir le JDK).
Ces JEP ont un numéro inférieur à 100 et elles n'ont évidemment pas d'étape de développement et elles passent directement du statut Candidate à Delivered.

Envie de te lancer ?

La première chose à faire, c'est de souscrire aux mailing lists des sujets qui t’intéressent.
Ensuite, la contribution à OpenJDK peut prendre plusieurs formes.
De l'écriture de code pour de nouvelles fonctionnalités ou de patchs bien sûr, mais pas que.

La participation aux discussions dans les mailing lists (propositions fonctionnelles, participation aux choix techniques...), le test des nouvelles features, et le feedback qui va avec, le retour sur des bugs que tu as pu constater ou que d'autres ont constaté (sur des forums par exemple) accompagné d'un travail de recherche pour les rendre reproductibles sont très appréciés et sont aussi considérés comme des contributions.

Si tu veux écrire du code, signe l'OCA ou vois si ton entreprise l'a déjà signée.
Avant de proposer un changement dans le code, il est important d'échanger avec les membres de la communauté afin d'en valider l'utilité et les choix techniques de ce changement par exemple.
Cela permettra par la même occasion de trouver un contributeur qui acceptera de devenir ton sponsor et de t'accompagner dans toutes les tâches administratives (mise à jour des JBS*, revue de code, tests additionnels...)

Enfin, même si tu choisis de ne pas participer, s'intéresser aux JDK Enhancement Proposals te permet de rester informé des futures nouveautés de JAVA et de mieux appréhender celles qui viennent d'être livrées dans le dernier JDK. De plus, les discussions sur les mailing lists peuvent s'avérer très enrichissantes pour approfondir ta compréhension du fonctionnement du JDK.

*JBS pour JDK Bug System, un outil Jira qui permet de suivre les problèmes remontés pour chaque JEP.