incubator-libcloud mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jerry Chen <>
Subject Re: [libcloud] Java Skeleton Available
Date Mon, 17 May 2010 21:49:03 GMT
First off, I'd like to say that I think this discussion is great, and thanks to everyone for
using the mailing list for full visibility and keeping it civil :)

On May 17, 2010, at 1:50 PM, Peter Haggar wrote:

> The charter ( mentions
> Python but does not say libCloud is Python only and will remain such.  I
> think it's a great idea to bring libCloud to another language like Java.  It
> can only help to broaden libCloud's appeal and applicability.  It will also
> likely broaden the libCloud community.

This approach appears to be more of a breadth-first approach rather than a depth-first one.

I would love to see libcloud mature as a strong framework, supporting the community with documentation
and tutorials, as well as a good coverage of cloud providers near and far.

Maintenance of different language ports, no matter how closely they resemble the original
codebase, will undoubtedly take away from this and possibly fragment the community.

We're lucky to have many participants here who aren't solely invested in Python, e.g. PHP
and Java users, and somehow they continue to bridge the gap to libcloud and to provide value
to the ongoing conversation.

To me, it's a matter of quantity vs quality: to cover (multiple) languages and providers mediocrely,
or to have fewer of both and do them well?

> There are other libraries available, like jcoulds.  However, that in and of
> itself is not a reason to stop innovating here. One thing I think is
> important is to be able to tell people to go to a single location for a
> consistent provider neutral API vs. multiple places that will have different
> APIs. Furthermore, choice in the market is important, so if people choose
> jclouds, great, but let's not make that choice for them.

Choice and competition are indeed great.

Personally, the relevancy of 1) the existence of jclouds and 2) the specific language of Java
are separate arguments.

Yes, it would be fantastic to announce "libcloud has been ported to 18 languages and is the
silver bullet for all your programmatic cloud needs" -- but I think we are pretty far away
from that, and trying to move towards such a lofty goal would only hurt our ability to solidify
and refine the current code base.

Perhaps a similar situation is the variety of interpreters for Python (CPython, Jython, PyPy,
etc) and Ruby (MRI, JRuby, Rubinus, etc). For the most part, everyone's working with a similar
if not identical spec, and anyone is free to build their own interpreter, but you don't see
all these interpreters rolled up and vetted by the same community.

> Now, this brings up something else I wanted to get some feedback on.  One
> issue with libCloud is that when you want to bring it to another language,
> like Java or something else down the road, it requires a port of the engine,
> plus the different provider adapters.  Should we consider a different
> approach?  For example, what if we wrote the engine in C and provided a C
> interface for the APIs (reboot_node, create_node, list_images, etc).  This
> way I can write my code in any language and just call out to C to interface
> with the libCloud library.  Yes, this would require a rewrite of the exising
> Python base to C, but it would put to rest the language discussions as well
> as give us a single engine to maintain, vs. multiple.  I think this could be
> a positive step forward and really broaden the appeal of libCloud.
> Thoughts?

I can't speak for others but the appeal of a high-level, interpreted language such as Python
has not lessened for me: ease for code maintainability, and "batteries included" advantage
of tasks such as XML parsing and testing modules.

To transition the core to C would take the project in a completely different direction --
favoring portability over development and maintenance of provider drivers, IMHO.

All in all, I think we're at a crossroads here, and our collective efforts are best spent
refining and reiterating existing code, documentation, driver support and tests, rather than
getting distracted with language ports and other pies in the sky (so to speak).

View raw message