I don't think core is special in this regard, but I *do* think it is special in having a separate release cycle. Most Java projects these days use version alignment (and usually a unified repository as well), despite featuring many distinct components that all move at different speeds. Examples include:
- Log4j2 (api, core, four logging bridges, many many appenders...) - JUnit 5 (platform commons, Jupiter API, Jupiter engine, vintage engine, Jupiter params support, platform runner...) - Jackson (annotations, core, databind, dataformat, datatype, jaxrs, Kotlin/scala support...) - Netty (common, buffer, codec, resolver, transport, native libs, numerous protocols and data formats...) - AWS SDK for Java (*over a hundred* separate service SDKs, multiple HTTP clients, SPI, code generators, SDK core...) Under this approach, there is a clear benefit to the user of only having to track one version number, no matter how many components are pulled in. Currently, httpclient5 works quite the other way: users must add dependencies on both httpcore5 and httpclient5 as a matter of course, and must model both versions explicitly: this is the only way to be sure that they are getting the latest versions of both components. I also think that the projects listed above make it clear that dependency alignment scales to a much larger number of components than we have currently, and adopting it does not foreclose the possibility of developing new httpcomponents in the future. On Fri, Dec 13, 2019 at 1:57 PM Oleg Kalnichevski <[email protected]> wrote: > I understand it can be frustrating while core APIs are not stable > but core and client components tend to have different maturity cycles > and therefore having distinct release cycles for core and client > components is beneficial. In HC 4.x we can make fixes to core > components and release them fast while some client features are still > being worked on and are not ready for a release. > > We might also have a reverse-proxy or a more feature rich server sub- > projects at some point. Coupling core with client would make it much > harder and would necessitate a separate core project again at that > point. > > Unless we decide we only develop HttpClient and nothing else, which is > fine by me as long as this is what we all want. > > Oleg > >
