incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject [PROPOSAL] Usergrid BaaS Stack for Apache Incubator
Date Mon, 16 Sep 2013 13:39:21 GMT
I would like to propose Usergrid, a multi-tenant Backend-as-a-Service
stack for web & mobile applications based on RESTful APIs, as an Apache
Incubator podling.

Here is a link to the proposal:
   https://wiki.apache.org/incubator/UsergridProposal

It is also pasted below:

= Usergrid Proposal =

== Abstract ==

Usergrid is a multi-tenant Backend-as-a-Service stack for web & mobile
applications, based on RESTful APIs.


== Proposal ==

Usergrid is an open-source Backend-as-a-Service (“BaaS” or “mBaaS”) composed
of an integrated distributed NoSQL database, application layer and client
tier with SDKs for developers looking to rapidly build web and/or mobile
applications. It provides elementary services (user registration &
management, data storage, file storage, queues) and retrieval features (full
text search, geolocation search, joins) to power common app features.

It is a multi-tenant system designed for deployment to public cloud
environments (such as Amazon Web Services, Rackspace, etc.) or to run on
traditional server infrastructures so that anyone can run their own private
BaaS deployment.

For architects and back-end teams, it aims to provide a distributed, easily
extendable, operationally predictable and highly scalable solution. For
front-end developers, it aims to simplify the development process by
enabling them to rapidly build and operate mobile and web applications
without requiring backend expertise.


== Background ==

Developing web or mobile applications obviously necessitates writing and
maintaining more than just front-end code. Even simple applications can
implicitly rely on server code being run to store users, perform database
queries, serve images and video files, etc. Developing and maintaining such
backend services requires skills not always available or expected of app
development teams. Beyond that, the proliferation of apps inside of
companies leads to the creation of many different, ad-hoc, unequally
maintained backend solutions created by employees and contractors alike and
hosted on a wide variety of environments. This is causing poor resource
usage, operational issues, as well as security, privacy & compliance
concerns.

In response to this problem, companies have long tried to standardize their
server-side stack or unify them behind an ESB or API strategy.
Backends-as-a-Service follow a similar approach but their unique
characteristic is strongly tying  1) a persistence tier (typically a
database), 2) a server-side application tier delivering a set of common
services and 3) a set of client-side application interface mechanisms. For
example, a BaaS could package 1) MongoDB with 2) a node.js application that
offers access through 3) WebSockets. In the case of Usergrid, the trifecta
is 1) Cassandra, 2) Java + Jersey and 3) a RESTful API.

The Backend-as-a-Service approach has steadily gained popularity in the last
few years with cloud providers such Parse.com, Stackmob.com and Kinvey.com,
each operating tens of thousands of apps for tens of thousands of
developers. The trend has already reached large organizations as well, with
global companies such as Korea Telecom internally building a privately-run
BaaS platform. But so far, there have been limited options for developers
that want a non-proprietary, open option for hosting and providing these
services themselves, or for enterprise and government users who want to
provide these capabilities from their own data centers, especially on a very
large scale.


== Rationale ==

The issue this proposal deals with is implicit in the name.
Backend-as-a-Service platforms are usually offered solely as proprietary
cloud services. They are typically closed sourced, hosted on public clouds,
and require subscription payment. Usergrid opens the playing field, by
making a fully-featured BaaS platform freely available to all. This includes
developers that previously could not afford them, such as mobile
enthusiasts, small boutiques, and cost-sensitive startups. This also
includes large companies that benefit from a reference implementation they
can deploy in trust, or extend to their needs without losing time writing
less-vetted, less-performant boilerplate functionality.

Usergrid has been open source since 2011 and has grown as an independent
project, garnering 11 primary committers, 35 total contributors, 260+
participants on its mailing list, with 3,700+ commits, 200+ external
contributions, 350+ stars and 100+ forks on Github, not to mention several
large scale production deployments at major global companies in the media,
retail, telecommunication and government spaces.

The Apache Software Foundation's "Way", by putting community before the
code, will help Usergrid establish a vibrant, more diverse community to
provide these features freely to downstream users. The incubation process
will help build this community and clear out the cobwebs, while vetting the
IP to provide a pristine ASLv2 licensed product to users. Under such
conditions, our hope is that Usergrid will have a brighter future, and
provide better assurances as an independent organic open source project,
instead of continuing forward as a project sponsored by a handful of
companies.


== Initial Goals ==

We have no serious codebase concerns at the present moment. Besides vetting
the IP by making sure the dependencies are Apache License 2.0 compatible,
our main initial concern is to grow community and keep adding features to
make Usergrid as robust as possible. However some logistics based goals
include:

  * Move the existing code base to Apache
  * Integrate with the Apache development process
  * Ensure all dependencies are compliant with Apache License 2.0
  * Set up open-source docs and website
  * Incremental development and releases per Apache Guidelines 


== Current Statusi ==

=== Meritocracy ===
The project team's goals have always been to grow the community by
encouraging contributors to participate. The project has grown steadily and
smoothly from the efforts of the original creator and project founder (Ed
Anuff) to a small circle of committers (at Apigee), to a distributed,
multi-vendor community (Apigee and Korea Telecom) that also includes outside
committers (Globo and others), as well as non-salaried committers. Together
we discuss the project’s goals and roadmap openly, making drastic yet
positive changes to the project's direction based on everyone's input. Our
goal is to drive further community diversification in a way that only a
foundation-sponsored project can achieve, rather than what a vendor-led
project can accomplish.


=== Community ===
We have a public Google Group for support here:
https://groups.google.com/forum/?hl=en#!forum/usergrid with over 250 active
participants, 367 threads and new messages every day. Usergrid also has an
active community on Github issues (with over 200 discussions):
https://github.com/apigee/usergrid-stack/issues?state=all. Some of these
users have contributed their open applications back to the community or have
built their own new SDKs for Usergrid found here on Github:
https://github.com/search?q=usergrid&source=cc.

Expanding and nurturing the Usergrid community is our primary concern and
one of the main reasons for the decision to apply for incubation.  Usergrid
has been developed openly on Github for many years and has enjoyed active
developer participation by a committers from all over the globe.  However,
due to the disparate nature and wide variety of the Github repos that
comprise the Usergrid project (the Usergrid-stack, 8 separate SDKs, the
Admin Portal, and various samples), it has been challenging to grow a
unified community.  Bringing the entire project under the umbrella of Apache
will promote a unification of the Usergrid community and enable all
developers to collaborate on the project.

=== Core Developers ===
The core developers include Apache Committers, PMC Members, and Members of
the ASF. The developers, some of whom have have been involved with the
Apache Incubator and Apache Lucene as PMC members, are active mentors and
have participated in and contributed to several projects: i.e. Apache,
Lucene, Cassandra, Hibernate, Directory, Wicket, Commons, Roller, MINA,
Karaf, Felix, Cloud Stack, HCatalog, and Commons projects. Many of them are
also active in Open-source beyond code, and have positions on the committees
or organization such as OSCON.


=== Alignment ===
The initial code base leverages several Apache Software Foundation products.
Usergrid leverages Apache Cassandra for its scalable data store, and uses
Maven for its build system. Almost half of Usergrid's dependencies are
Apache dependencies:

  * Apache Cassandra
  * Apache Tomcat
  * Apache Commons
  * Apache ZooKeeper
  * Apache Shiro
  * Apache Amber
  * Apache Thrift
  * Apache ActiveMQ
  * Apache HttpClient
  * Apache Lucene
  * Apache JClouds

Besides these direct alignments, Usergrid also complements Apache Cordova
and could provide several advantages to the mobile application developer
community they serve.


== Known Risks ==

=== Orphaned products ===
There are now at least two vendors running Usergrid in product. Apigee is an
established startup with a large, diversified customer roster and Korea
Telecom is a major, national telecommunications company. The continuity of
Usergrid, as an open-source, vendor-independent product are in the interest
of all parties. Beyond the vendors, Globo.com and many others large
companies have been relying on Usergrid for critical applications and as
such they are committed to contributing to the effort.

=== Inexperience with Open Source ===
The Usergrid project has been open source and under the ALv2 for 2 years on
Github and many of its contributors came with previous open-source
experience, (as referenced above), including active members of these
communities:

  * Apache
  * Cassandra (& Hector)
  * Lucene
  * Hibernate
  * CouchDB
  * PhoneGap
  * jQuery

Development in this open forum has resulted in a growing community of
contributors, and the Usergrid project is now ready and eager to embrace and
learn from Apache's wealth of experience. Usergrid would like to embrace an
even greater culture of open participation as witnessed on so many Apache
projects.
 
=== Homogenous Developers ===
The core development team for Usergrid is a geographically and
technologically diverse group. Apigee’s team is itself distributed, with
contributors based in each timezone in the continental US. Additional
regular contributors have joined us from India, Asia, Oceania, South
America, the Middle East and Europe. While roughly half of our core
developers come from a Java background, the other half is comprised of iOS,
Ruby, and JavaScript developers.
 
=== Reliance on Salaried Developers ===
Most of the principal developers are paid by their employers to contribute,
but not all. Throughout the life of the project, we’ve seen passionate,
personal commitment from all parties, as evidenced by our commit
distribution on weekends
(https://github.com/apigee/usergrid-stack/graphs/punch-card). We also
believe, given the growing interest in mobile API services and the range of
individuals and corporations that are eager to participate, that
non-salaried contributions will grow. We know the "The Apache Way" will help
us further accelerate this process.
 
=== Relationships with Other Apache Products ===
There's much potential for collaboration with Apache Cordova and, of course,
the Cassandra community because of the underlying foundations of Usergrid's
scalability. In the future there may be more interactions with any of the
communities that Usergrid has direct dependencies to.

=== A Excessive Fascination with the Apache Brand ===
Although we are aware of the strength of the Apache brand, we are primarily
interested in the transforming power of the Apache Way to help guide
Usergrid towards a more diversified and meritocratic community. To that end,
the brand's primary benefit for us is to help to attract more participants
and diversify the community. Having several committers, PMC participants,
and members of Apache as developers on Usergrid, there's little infatuation
with the brand, and the Usergrid community is actively conscious of this not
being a driver for joining the Apache community.  


== Documentation ==

Information on Usergrid can be found at:
https://developers.apigee.com/app-services.


== Initial Source ==

All initial sources can be found here: https://github/usergrid


== Source and Intellectual Property Submission Plan ==

The IP transfer for Usergrid is trivial due to it's single source and
existing ASLv2 licensing.


== External Dependencies ==

Most dependencies are Apache compatible licenses (Category A). A small set
of Category B licenses, like the CDDL exists. For more details please see
Dependency Licenses.


== Cryptography ==

Not relevant to Usergrid since all code dealing with cryptography already
comes from the JDK or from dependencies on  Apache Software.  


== Required Resources ==

=== Mailing lists ===
  * private@usergrid.incubator.apache.org (moderated)
  * dev@usergrid.incubator.apache.org
  * commits@usergrid.incubator.apache.org

=== Subversion Directory ===
We prefer to use Git as our source control system:
git://git.apache.org/usergrid/. If possible, we would like to keep
leveraging the extremely useful github facilities for workflow using a
process much like that employed by the Apache Cordova project (documented
here http://wiki.apache.org/cordova/ContributorWorkflow).

=== Issue Tracking ===
JIRA Usergrid (USERGRID)

=== Other Resources ===
None.


== Initial Committers ==

  * Alberto Leal <albertonb@gmail.com> (Globo.com)
  * Alex Karasulu <akarasulu@apache.org> (Apigee)
  * Dave Johnson <snoopdave@apache.org> (Apigee)
  * Ed Anuff <ed@anuff.com> (Apigee)
  * Nate McCall <zznate.m@gmail.com> (The Last Pickle)
  * Rod Simpson <rod@rodsimpson.com> (Apigee)
  * Scott Ganyo <scottganyo@apache.org> (Apigee)
  * Shaozhuang Liu <stliu@hibernate.org>
  * Sungju Jin <sungju@softwaregeeks.org> (Korea Telecom)
  * Tim Anglade <timanglade@gmail.com> (Apigee)
  * Todd Nine <todd.nine@gmail.com> (Apigee)
  * Jim Jagielski <jim@apache.org> (RedHat)


== Affiliations ==

  * Apigee
  * Korea Telecom
  * Globo.com
  * The Last Pickle


== Sponsors ==
 
=== Champion ===
Jim Jagielski <jim@apache.org>

=== Nominated Mentors ===
  * Alex Karasulu <akarasulu@apache.org>
  * Dave Johnson <snoopdave@apache.org>

=== Sponsoring Entity ===
Incubator PMC


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org


Mime
View raw message