Dear ASF members,
We would like to propose the jclouds project to the Incubator.  The jclouds 
Proposal is available at: 

http://wiki.apache.org/incubator/jcloudsProposal

We welcome your feedback and suggestions.

Thanks!

Becca Wood




= jclouds Proposal for Apache Incubator =

== Abstract ==

[[http://www.jclouds.org/|jclouds]] is an open source cloud agnostic library 
that enables developers to access a variety of supported cloud providers using 
one API.

== Proposal ==

[[http://www.jclouds.org/|jclouds]] provides two portable API abstractions for 
cloud computing and cloud storage in the form of Java or Clojure libraries. By 
abstracting away vendor-specific details, jclouds supplies a solution for users 
to avoid lock-in to a specific cloud vendor. It also provisions hooks to make 
it easy to take advantage of specific features from those vendors.

== Background ==

jclouds began in March of 2009 while Adrian Cole was working on the Amazon S3 
plugin for Infinispan. He discovered that existing S3 libraries would not pass 
the concurrent test suite needed for write behind persistence. When it became 
clear that a new library was needed, jclouds formed as an independent project 
founded by Cole under the mentorship of Manik Surtani. 

The fledgling jclouds team soon encountered two portability issues: runtime 
portability with Google App Engine and compatibility with the similar cloud 
files service from Rackspace.  

The legacy of Google App Engine is still present within jclouds and is 
expressed by the 'driver' design which doesn't require threads. Supporting 
Rackspace started a legacy of cloud portability which would soon extend to 
provisioning. As jclouds supports newer and cutting edge cloud technologies, it 
is in a constant state of evolution.

jclouds was founded in Shoreditch, London while Adrian Cole spent five months 
backpacking between European Java User Groups which accounts for the initial 
population of European developers and users within the community. The initial 
contributors to jclouds included Adrian Cole, James Murty, Andrew Newdigate, 
and Andrew Phillips. Manik Surtani served as a mentor, and there were a number 
of other advisers as well. 

== Rationale ==

There are many providers that offer IaaS clouds, but few APIs that can bridge 
the gap between cloud providers. jclouds supplies an abstraction layer for both 
compute and storage resources that makes it easy to work with many different 
cloud APIs using a simple and singular API. jclouds provides this abstraction 
layer for the Java and Clojure communities. It is a unique niche within the 
cloud community.

jclouds provides the write once, run anywhere concept when utilizing 
infrastructure cloud resources. 

== Initial Goals ==

 * Build a more centralized community pulling together jclouds developers, 
jclouds integrators, and service providers who use jclouds.
 * Although jclouds has a fairly collaborative community, the committers wish 
to further bridge the gap between developers and community by encouraging more 
community involvement in development processes.  
 * Break down from a monolithic release process into one that is more 
decentrilized.
 * Bring the jclouds core code base consisting of ComputeService and Blobstore 
into Apache.
 * jclouds will not move all existing provider code into Apache. The goal is to 
move the provider code for those clouds that have complete portability and are 
tried, tested, and true. This includes code for OpenStack, Amazon EC2, and 
Google Cloud.

== Current Status ==

=== Meritocracy ===

jclouds has an active community of contributors who are encouraged to become 
full-fledged jclouds committers. A jclouds committer understands the importance 
of seeking community feedback, actively listening to suggestions, and fostering 
relationships with community members who make contributions. The entirety of 
jclouds is built upon the relationships that have been built with community 
members. This camaraderie will continue to be promoted as jclouds is introduced 
into the Incubator and beyond.

jclouds encourages involvement from its community members, and the issues are 
open and available to any developers who wish to contribute to the project. The 
jclouds team currently seeks help and asks for suggestions utilizing the 
jclouds and jclouds-dev Google groups and IRC on irc.freenode.net#jclouds. Any 
and all submissions for changes are reviewed and taken into consideration.

=== Community ===

jclouds has a highly active and growing community of users and developers. The 
community is currently fostered at 
https://groups.google.com/forum/#!forum/jclouds-dev and 
https://groups.google.com/forum/#!forum/jclouds. The jclouds team also 
encourages community members to engage in discussions on irc in #jclouds.

There have been over 100 individuals who have contributed code to jclouds 
throughout the years, and this number has continued to increase at a rate of 1 
or 2 per month. It is accepted and anticipated that the amount of developer 
participation within the community will increase under the guidance of the 
Apache Software Foundation (ASF).

=== Core Developers ===

The core contributors are a diverse group comprised of both unaffiliated 
developers and those hailing from small to large companies. They are scattered 
geographically, and some are highly experienced industry as well as open source 
developers. Though their backgrounds may be diverse, the contributors are 
united in their belief in community driven software development.

More detailed information on the core developers and contributors in general 
can be found under the section on homogeneous developers.

=== Alignment ===

jclouds adoption is growing, and it is no longer feasible for it to remain as 
an isolated project. Apache is experienced in dealing with software that is 
very widely accepted and has a growing audience. The proposers believe that the 
jclouds team can benefit from the ASF's experience and its broad array of users 
and developers. 

jclouds supports several Apache projects and options exist for integration with 
others. Apache ACE, Apache Karaf Cellar, Apache Camel, and Apache Whirr all 
utilize jclouds APIs.  Apache Karaf integration with jclouds provides managed 
service factories and command line support for creating and administering 
blobstore and compute as OSGi services. Apache Maven may be used with jclouds 
to build new projects.  

== Known Risks ==

=== Orphaned products ===

jclouds is already being utilized at multiple companies that are actively 
participating in improving the code.  The thriving community centered around 
jclouds has seen steady growth, and the project is gaining traction with 
developers. The risks of the code being abandoned are minimal.

=== Inexperience with Open Source ===

jclouds began as an open source project in March of 2009 and has remained so 
for 4 years. Additionally, many of the committers have extensive experience 
with other open source projects. jclouds fosters a collaborative and 
community-driven environment.

In the interest of openly sharing technology and attracting more community 
members, several of our developers also regularly attend conferences in North 
America and Europe to give talks about jclouds. jclouds meetups are also 
planned every few months for developers and community members to come together 
in person and discuss ideas.

=== Homogeneous Developers ===

Thanks in part to founder Adrian Cole's love of travel, jclouds has attracted 
committers across North America, Europe, and Asia. The committers' technical 
and professional backgrounds are diverse as well, with the range of experience 
being several months to 18+ years. The committers are employed at both smaller 
companies such as Andrew Gaul from the startup Maginatics and larger 
corporations like Adrian Cole from Netflix or Matt Stephenson from Google. 
Though there are currently a handful of contributors from the same companies, 
none of the initial committers are from the same company. jclouds committer 
Andrew Bayer is also a PMC member and committer on the Apache projects Bigtop, 
Flume, Sqoop, and Whirr.  

The jclouds developers thrive upon the diversity of the community. The jclouds 
IRC channel is always active, and the developers often collaborate on fixes and 
changes in the code. They are always happy to answer users' questions as well. 

jclouds is interested in continuing to expand and strengthen its network of 
developers and community members through the ASF.

=== Reliance on Salaried Developers ===

None of the developers are directly funded by jclouds. Though some of the 
developers are paid by their employer to contribute to jclouds, many jclouds 
developers contribute code and documentation on their own time and have done so 
for a lengthy period. Given the current stream of development requests and the 
committers' sense of ownership of the jclouds code, this arrangement is 
expected to continue with jclouds' induction into the ASF.

=== Relationships with Other Apache Products ===

jclouds and Apache Libcloud address similiar use cases. However, jclouds 
supplies these services for the Java and Clojure communities whereas Libcloud 
provides them for the Python ecosystem.

While jclouds does not directly rely upon any Apache project, it does support 
several Apache projects and has options to collaborate with several others. 
More specifically, jclouds currently supports Apache Whirr, Apache ACE, Apache 
Karaf, and Apache Camel, and options exist to use Apache Maven as a build tool 
with the jclouds API.

jclouds includes support for the Apache CloudStack API and is used as a 
compatibility test tool for its EC2 interface. jclouds can also be used to test 
Apache Deltacloud EC2 portability.

=== An Excessive Fascination with the Apache Brand ===

jclouds recognizes the fortitude of the Apache brand, but the motivation for 
becoming an Apache project is to strengthen and expand the jclouds community 
and its user base. While the jclouds community has seen steady growth over the 
past several years, association with the ASF is expected to expedite this 
pattern of growth. Development is expected to continue on jclouds under the 
Apache license whether or not it is supported by the ASF.

== Documentation ==

The [[http://www.jclouds.org/|jclouds]] project documentation is publicly 
available at the following sites:

  * http://jclouds.org: installation guide, user guides, development resources, 
news, resources to get started
  * https://github.com/jclouds/jclouds: current source, source code issues log
  * https://github.com/jclouds/jclouds.github.com: static content for 
jclouds.org, documentation issues log
  * https://twitter.com/jclouds: jclouds on Twitter
  * https://groups.google.com/forum/?fromgroups#!forum/jclouds-dev: the jclouds 
development forum on Google Groups
  * https://groups.google.com/forum/?fromgroups#!forum/jclouds: the jclouds 
community forum on Google Groups

== Initial Source ==

The initial source is located on GitHub in the following repositories:

 * git://github.com/jclouds/jclouds.git
 * git://github.com/jclouds/jclouds-labs.git
 * git://github.com/jclouds/jclouds.github.com.git
 * git://github.com/jclouds/jclouds-chef.git
 * git://github.com/jclouds/jclouds-cli.git
 * git://github.com/jclouds/jclouds-karaf.git
 * git://github.com/jclouds/jclouds-examples.git
 
== Source and Intellectual Property Submission Plan ==

jclouds's initial source is licensed under the Apache License, Version 2.0. 
https://github.com/jclouds/jclouds/blob/master/resources/LICENSE.txt

== External Dependencies ==

This is a listing of Maven coordinates for all of the external dependencies 
jclouds uses. All of the dependencies are in Sonatype and their licenses should 
be accessible. 

 * aopalliance:aopalliance:jar:1.0:compile
 * com.google.code.gson:gson:jar:2.2.2:compile
 * com.google.guava:guava:jar:14.0.1:compile
 * com.google.inject.extensions:guice-assistedinject:jar:3.0:compile
 * com.google.inject:guice:jar:3.0:compile
 * javax.annotation:jsr250-api:jar:1.0:compile
 * javax.inject:javax.inject:jar:1:compile
 * javax.ws.rs:jsr311-api:jar:1.1.1:compile
 * org.99soft.guice:rocoto:jar:6.2:compile

== Cryptography ==

jclouds contains no cryptographic algorithms, but it does provide the ability 
for people to plug in various cryptographic libraries.

== Required Resources ==

=== Mailing lists ===

 * jclouds-dev: for development discussions
 * jclouds-user: for community discussions
 * jclouds-private: for PPMC discussions
 * jclouds-commits: for code changes

=== Apache git repository ===

The jclouds team is experienced in git and requests the following allocation on 
the Apache git server:

git://git.apache.org/incubator-jclouds.git

=== Issue Tracking ===

jclouds currently uses GitHub for issue tracking. The intent is to request an 
allocation for Jira upon acceptance into the Incubator. Proposed project name: 
jclouds

== Initial Committers ==

 * Ignasi Barrera, ignasi dot barrera at gmail dot com
 * Andrew Bayer, abayer at apache dot org
 * Ioannis Canellos, iocanel at gmail dot com
 * Adrian Cole, adrianc at netflix dot com 
 * Andrew Gaul, gaul at maginatics dot com
 * Andrew Phillips, aphillips at qrmedia dot com
 * Matt Stephenson, mattstep at mattstep dot net
 * Everett Toews, everett dot toews at rackspace dot com
 * Becca Wood, silkysun at silkysun dot net

== Affiliations ==

 * Ignasi Barrera, Abiquo
 * Andrew Bayer, Cloudera
 * Ioannis Canellos, Red Hat
 * Adrian Cole, Netflix
 * Andrew Gaul, Maginatics
 * Matt Stephenson, Google
 * Everett Toews, Rackspace  

== Sponsors ==
=== Champion ===

 * Brian McCallister, Apache Software Foundation

===  Nominated Mentors ===

 * Brian McCallister, Apache Software Foundation
 * Tom White, Apache Software Foundation
 * Henning Schmiedehausen, Apache Software Foundation

=== Sponsoring Entity ===

The jclouds contributors and community request sponsorship from the Incubator.

Reply via email to