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 Server.
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.

Michael

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

Reply via email to