Thanks for chiming in. some notes on notes below!

> through jclouds. This conversion not only makes jclouds needlessly at
> the whim of guava compatibility, but is also unnecessarily expensive.

Perhaps, but are these the biggest pain points for users/devs? The
Guava compatibility fiasco is admittedly frustrating, but hopefully
rare going forward.
Guava prevents blobstore (and jclouds) from being considered many
android environments. Guava compatibility is not only a frustration,
but a non-starter for folks who write frameworks. This thread is
thoroughly discussed elsewhere. We don't need a guava dep for
blobstore so can avoid this class of problems completely in the
future. For example, once our views stop propagating guava, we can
clean it from core. This is clearly not your biggest concern, but
believe me, being the author of jclouds and not being able to use it
in most recent companies has made me quite frustrated potential user.

As for pain points, IMO there are other bigger and
lower hanging fruit that may be worth tackling.

Two concrete examples that are not blobstore specific:

1. URL encoding/decoding issues:
https://issues.apache.org/jira/browse/JCLOUDS-217
Agreed this isn't blobstore specific and more a favorite bug.

2. RestAnnotationProcessor magic: there are two sub-issues here
actually. First is the performance overhead of all the reflection that
happens to make this work. I've not measured it, but we have run into
cases in the past where reflection added non-trivial overhead (e.g.
https://issues.apache.org/jira/browse/JCLOUDS-301). The second (and
perhaps bigger) issue is that the code base is really hard to
penetrate for new developers. At work, every new jclouds contributor
has had a long ramp up and faced a steep learning curve just to figure
out how things work before being able to make productive changes.
And yet no-one has helped to fix this. We are amazingly capable of
complaining for years, right? I already solved this in netflix feign
and can obviously solve this here. Not blobstore related, but
certainly and provably solvable.

> In summary, I would like to fork BlobStore so that it can progress in

Can you elaborate a bit more on the plans for existing blobstore and
impact (if any) on existing consumers? IIUC, the proposal is to leave
the current blobstore as is and develop the fork in parallel? Will
there be a switch when compatibility is reached or will users always
have the choice of using the legacy API? Preferably the latter, but
that would double the effort for bug fixes and feature additions (e.g.
implementing S3 V4 signatures). The former will require consumers to
change their applications and runs the risk of introducing
regressions. So neither option seems safe.
Some methods as mention should have been dropped years ago. We can
deprecate them now. We can also make a janky bridge once the new apis
are in. Most projects evolve more than once every 5 years. we can do
better, right? Even if it took us a year, it adds hope.

> If anyone is interested in helping on this, let me know. I'll open a
> jira in a bit.

Definitely interested! What's the JIRA for this?
Not created yet, but will do once I finish cleaning up other things :)
Thanks for the interest!

Reply via email to