On Mon, Sep 16, 2013 at 3:39 PM, Jim Jagielski <j...@jagunet.com> wrote: > 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 === > * priv...@usergrid.incubator.apache.org (moderated) > * d...@usergrid.incubator.apache.org > * comm...@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 <albert...@gmail.com> (Globo.com) > * Alex Karasulu <akaras...@apache.org> (Apigee) > * Dave Johnson <snoopd...@apache.org> (Apigee) > * Ed Anuff <e...@anuff.com> (Apigee) > * Nate McCall <zznat...@gmail.com> (The Last Pickle) > * Rod Simpson <r...@rodsimpson.com> (Apigee) > * Scott Ganyo <scottga...@apache.org> (Apigee) > * Shaozhuang Liu <st...@hibernate.org> > * Sungju Jin <sun...@softwaregeeks.org> (Korea Telecom) > * Tim Anglade <timangl...@gmail.com> (Apigee) > * Todd Nine <todd.n...@gmail.com> (Apigee) > * Jim Jagielski <j...@apache.org> (RedHat) > > > == Affiliations == > > * Apigee > * Korea Telecom > * Globo.com > * The Last Pickle > > > == Sponsors == > > === Champion === > Jim Jagielski <j...@apache.org> > > === Nominated Mentors === > * Alex Karasulu <akaras...@apache.org> > * Dave Johnson <snoopd...@apache.org> > > === Sponsoring Entity === > Incubator PMC
As I'm setting up a similar infrastructure for a mobile application now, this project interests me a lot. I have made some different design choices so it'll be interesting to compare the benefits of my approach against choices made by the usergrid team. I'll dig into the code more deeply and join (with contributions) were I can. Definitely a good addition to the apache incubator! Lieven --------------------------------------------------------------------- To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org For additional commands, e-mail: general-h...@incubator.apache.org