hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Osipov <micha...@apache.org>
Subject Re: HC 5.0: co-location with HC 4.x
Date Thu, 19 Nov 2015 21:17:42 GMT
Am 2015-11-19 um 12:32 schrieb Oleg Kalnichevski:
> Folks
> I would like to start working on the first alpha releases of HC 5.0.
> There is one issue that still needs to be discussed though before I can
> proceed. We need to decide on how we intent to maintain compatibility
> with HC 4.x. It is pretty clear that maintaining full compatibility is
> unrealistic and probably counter-productive. HC 5.0 is likely to have
> different APIs especially once HTTP/2 transport is implemented.
> A pragmatic approach could be to make HC 5.0 and HC 4.x deployable
> within the same class loader context (so called co-location). This is
> what Apache Commons do with their major releases. We should do
> likewise.
> Effectively co-location is about moving major releases to a new package
> space like org.apache.commons.lang3, org.apache.commons.lang4, etc. I
> think we should adopt a compatible scheme. The trouble is that when the
> project was started in 2005 the choice of 'org.apache.http' was pretty
> natural and in line with Jakarta practices (anyone here still remembers
> Apache Jakarta?). Now it can be seen as too presumptuous. This would be
> a good opportunity to fix that.
> What would be a better name space for the project in your opinion?

Finally -- at long last. This is something I had in mind for more than 
six months now. The current approach taken by Apache Commons saved me 
tons of work rewriting third party components just for namespace 
clashes. At some point, I had a dependency on a third party, closed 
source library which still uses HttpClient 3.x (!). Impossible to use 
4.x. I had to reverse engineer the calls and reimplement them from 
scratch. Wasted two weeks for that.

I would highly favor a package change/bump every major release. That 
would give everyone the ability to update at their own pace w/o waiting 
for third parties, etc.

> org.apache.http<n>
> org.apache.http.hc<n>
> org.apache.hc<n>.http
> where <n> is a major release version
> Something else? Any thoughts or preferences?

First of all, I wouldn't use any of those. (Currently referring to 
package names only). Artifact ids are a different story.

org.apache.http: that is too general and confuses me with Apache HTTP 
org.apache.http.hc: http seems redundant here due to hc (http components).
org.apache.hc<n>.http: same here.

I would do:

HC Core: org.apache.hc.core5
HC Client: org.apache.hc.client5
HC Async Cilent: org.apache.hc.asyncclient5

Clean and simple. Each project would be scoped in its namespace. Picking 
up sebb's opinion, we even reflect the HTTP domain in the package name.


To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message