Bob Lee wrote:
While I don't work for Google anymore, Android is an open source project, so
I like to think I can still make contributions (at least after I launch my
current product :-)).
On Thu, Mar 18, 2010 at 2:55 PM, Oleg Kalnichevski <[email protected]> wrote:
The current snapshot of HttpClient 4.x still maintains API compatibility
with the version shipping with Android.
Last I checked, the mainline HttpClient made incompatible changes after
Android shipped (protected member modifications count). This is why Android
hasn't just dropped in an upgrade. Android could certainly benefit from bug
fixes; I don't think stale connection checking works, for example.
Bob,
Every time a new release of HttpClient is cut it is checked for binary
compatibility with the previous version using clirr. Maybe Google has a
better tool, but clirr served us quite well in the past.
The strict interpretation of full binary compatibility with the version
tagged as 4_0_API_FREEZE was compromised by making several protected
variables final (listed in the 4.0 release notes). Those variables are
used in impl classes and should have never been a part of the public API
to start with. I was simply in a hurry and could not review every single
area of the library before the API freeze.
I wrote to you _twice_ shortly before the final release to ask about
your opinion whether this could be acceptable for Google or you would
rather prefer to have those changes reverted. Since I got no response I
had no other option but to assume that was not important. You went
silent and no one else from Google approached us.
Even at this point it would still be very easy to make those variables
non-final, if this is the only sticking point.
Again, I believe we stuck to our part of the deal.
Oleg
I understand that in the grand scheme of things we are very small. Now that
Android is a major success we are no longer needed.
The HttpClient library is heavily used in Android apps, so it's very much
needed. I use it in my app. Any bug fixes and performance improvements could
have a big impact on overall performance, battery life and stability.
I can think of a few options going forward:
1. Redo the incompatible changes in a way that's compatible with both
Android's version and the mainline HttpClient. This may or may not be
possible. I haven't dug too deeply.
2. Maybe the changes are in an obscure part of the API that we're certain
no one uses. We'd deliberately introduce a compatibility bug to fix a # of
bugs that actually affect users. I recall that one of the incompatible
changes fixed stale connection checking.
3. Make the HttpClient library optional. Include it for older Android apps
by default. Newer apps will need to import it using use-library. Newer apps
will be able to bundle their own updated version of HttpClient (or some
other lib). We should probably do this either way.
Bob
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]