Howdy, We have several topics that need to be discussed.
I. Core Plugin Versioning History: When Maven2 was born, and started using plugins "as we know them today" (Maven 1 was a very different beast), the Core Plugin versions were started as 2.0 on purpose. Just check the Maven Central for historical versions, some examples: * clean https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/ * compiler https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/ * jar https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/ * surefire https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/ * dependency https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/ So, Maven2 "as a fresh release" got all new shiny 2.0 plugins at the beginning. Later on, when Maven3 came to existence, it was able to use Maven2 plugins, the plugins were slowly migrated to become "Maven 3 plugins" (Maven2 could not use them anymore). This was denoted by the "3.x" major plugin version jump. So far, we have no 4.x plugin release of anything (M releases do not count). But my question is the following: How should we distinguish similar changes for Maven4? Explanation: when a plugin is migrated to Maven4 API, it will mean Maven3 will NOT be able to use anymore (will be incompatible). Similarly as before, Maven4 CAN run the "Maven 3" plugins, and will retain this capability for some time. But other ways it does not work, nor never worked (Maven3 will not be able to run Maven4 plugin, just like Maven2 never ran Maven3 plugin). For me, the logical answer to this question is the use of major version 4.x. So just like it happened with Maven 2 to Maven 3 transition, a plugin version 2.x meant "Maven2 plugin", version 3.x of plugin meant "Maven3 plugin" (Maven2 incompatible). As otherwise, if we start releasing Core plugins 4.x or 5.x, we will confuse the hell out of our users. At least that is what I think. II. Consequence: How to interpret Core plugin versions As can be seen above, so far the major version of the plugin was kinda showing "which Maven API level" is the plugin. So, it begs the question: HOW to interpret the Maven Core Plugin version? My interpretation was always: "shift it once left", meaning: Core plugin version "3.2.1" MEANS: - Maven API version: 3 - Core Plugin version 2.1(.0) III. Consequence: How to express Core plugin "breaking change"? Today, everyone expects a "major version jump" to express breaking changes. BUT, as explained above, that would be totally misleading here, and would break the "customary law" that Major expresses Maven lineage. Ideas and opinions welcome. T