Hi Christopher- After taking yesterday to get most of the way through the jakarta conversion, I think we can go without the version gap.
I think option #1 gives us the best approach. After a period of time we can just ‘drop’ the javax modules and not have to cause users to change anything else back to have clean GAV coordinates. Thanks, Matt Pavlovich > On Mar 30, 2023, at 3:49 PM, Christopher Shannon > <christopher.l.shan...@gmail.com> wrote: > > Thanks Matt for bringing this up. We definitely need to figure out a path > forward as there is a lot of confusion about this still and users are > getting bit by it when trying to upgrade to Spring 6 and Spring boot 3. > > Ultimately I think we will need to support both javax and jakarta for quite > a while because while some users are going to want to use newer > technologies that require jakarta (like Spring 6 ) others will be happy to > stay on the old APIs for a while. So the question becomes what is the best > way to do that. I do think that some sort of repackaging is probably the > way to go like we did for the client but to do it for all the relevant > modules and release both. We can keep 5.18.x as a long running branch to > back port but it would still be nice if the latest worked for either API > (ie 5.19.x). I'm thinking more about it and we can probably just do it in > 5.19.x and don't need a gap version. > > I can see 3 ways to release both: > > *1) Create duplicate modules (like we did with the client for jakarta in > 5.18.x). *This works but means a lot of extra modules to maintain but is > probably the most flexible as you can do custom things in each module > easily. We could create BOM files for people to use to import the right > things to keep things consistent. > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker-javax</artifactId> > <version>5.19.0</version> > </dependency> > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker-jakarta</artifactId> > <version>5.19.0</version> > </dependency> > > *2) Don't add new modules, just keep the same ones but have each module > build 2 jars using classifiers. *We could just have each module build 2 > jars and repackage. My primary concern about sharing the same module for > both APIs would be if the Jakarta API becomes different enough that > repackaging doesn't work due to changes between it and javax but we might > still be able to make this work by having each classified jar only pull in > certain things. > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker</artifactId> > <version>5.19.0</version> > <classifier>javax</classifier> > </dependency> > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker</artifactId> > <version>5.19.0</version> > <classifier>jakarta</classifier> > </dependency> > > *3) Just build with a different version (this is what Guava does with jre > and android). *This is probably the most annoying as you would need to > re-package and then I guess use a different version when building. > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker</artifactId> > <version>5.19.0-javax</version> > </dependency> > > <dependency> > <groupId>org.apache.activemq</groupId> > <artifactId>activemq-broker</artifactId> > <version>5.19.0-jakarta</version> > </dependency> > > > On Thu, Mar 30, 2023 at 4:06 PM Endre Stølsvik <en...@stolsvik.com> wrote: > >> From a lurker position here, I just wanted to point out that Jetty is >> evidently making a version 12 which will support both javax. and jakarta. >> in the same server. >> https://www.eclipse.org/jetty/download.php >> >> Kind regards, >> Endre >> >> >> On Thu, Mar 30, 2023 at 9:54 PM Jean-Baptiste Onofré <j...@nanthrax.net> >> wrote: >> >>> Hi, >>> >>> I agree with the plan but why not keep 5.19.0-SNAPSHOT on main ? >>> We have the activemq-5.18.x branch already that could be LTS where we >>> keep javax namespace. >>> >>> Regards >>> JB >>> >>> On Thu, Mar 30, 2023 at 7:54 PM Matt Pavlovich <mattr...@gmail.com> >> wrote: >>>> >>>> Hello All- >>>> >>>> I started building a jakarta-based broker for ActiveMQ 5.x and propose >>> the following steps to manage the change. >>>> >>>> Background: >>>> >>>> Jakarta support in ActiveMQ 5.x is going to pull in JDK 17, Spring 6, >>> Jakarta EE 9, Servlet 5.x, and Jetty 11. That is quite a bit of change, >> and >>> I suggest we leave a ‘gap version’ in case we need to make any >> incremental >>> updates to 5.18.x series along the way. >>>> >>>> 1. Rename main to 5.20.0-SNAPSHOT >>>> 2. Commit broker-related jakarta, servlet, jetty, spring, etc changes >> to >>> main >>>> 3. Create new ‘-javax’ broker modules to support a >>> apache-activemq-javax-5.20.0-bin.tar.gz package using re-packaging of the >>> jakarta artifacts. >>>> 4. Leave 5.19.x as a ‘gap version’ in case it is needed for 5.18.x >>> changes >>>> >>>> Thanks, >>>> Matt Pavlovich >>> >>