How to version a library between Scala 2 and Scala 3

I am aware that Scala libraries typically have in their name the Scala version with which they are binary compatible, but it is for that: maintaining binary compatibility, and the the same maven version largely implies source compatibility (at least for the most part).

However, differences between Scala 2 and Scala 3 are quite drastic, especially if you deal with type-level programming and syntax enrichment. This requires a rewrite of a considerable part of library code, and maintaining the same maven version between goes against the policy of least surprise.
However, when maintaining both a version of Scala 2 and Scala 3, it is typical that the general functionality remains roughly the same, only the means of accomplishing them differ. Therefore, it would be nice if it would be somehow possible to link such ‘logical’ versions with each other.
It would be confusing for me if a version 2.3 (for example) for Scala 3 was largely independent and unrelated to a Scala 2 version in terms of being up to date with functionality.

Is there a pattern, or best practice established to deal with this issue?
Or should I simply repeat the major scala version in the maven version, for example:


Would love to see what approaches are taken by others in similar cases.

Scodec’s 2.12/2.13 implementation uses the 1.x.y version, and its Scala 3 implementation uses the 2.w.z version. The artefact name is the same though.

However shapeless-3 uses another artefact name and is exclusive to scala 3