Differences between revisions 4 and 5
Revision 4 as of 2008-09-26 17:00:15
Size: 6815
Editor: a-212-224-30-66
Comment: Joining the Oilo project
Revision 5 as of 2009-09-20 23:06:11
Size: 6815
Editor: localhost
Comment: converted to 1.6 markup
No differences found!

Abstract

Apache Olio is a web 2.0 toolkit to help developers evaluate the suitability, functionality and performance of various web technologies by implementing a reasonably complex application in several different technologies.

Proposal

Olio will develop an example application to understand the benefits, performance, and scalability of popular web technologies. Multiple implementations of the application are planned - each providing the same functionality but staying true to the philosophy of its base language/framework.

Background

Most web 2.0 sites today use open source languages and frameworks such as PHP, Ruby on Rails, and Java EE to develop their applications. Deployments of these applications also use popular open source servers such as Apache httpd, Tomcat, MySQL, Memcache, and Glassfish. Many other servers/technologies such as lighttpd, mogileFS, mongrels, JRuby are also gaining popularity.

With the myriad technologies available, it is not easy to understand how they differ, especially in terms of performance and scalability. With varied levels of documentation available for some open source applications, it is also quite difficult for a web 2.0 startup to understand the correct usage of these technologies so that they don't become a bottleneck as their site grows.

Rationale

Olio is a toolkit that will attempt to address the above issues.

What it does

Olio defines an example web 2.0 application (the initial implementation uses an events site somewhat like yahoo.com/upcoming) and provides three implementations: PHP, Java EE, and Ruby on Rails. The toolkit will also define ways to drive load against the application in order to measure performance.

As developers join the project, they can implement the same application using their favorite web frameworks and compare their implementations to others.

What you can learn from it

a) Understand how to use various web 2.0 technologies such as AJAX, memcached, mogileFS etc. in the creation of your own application. Use the code in the application to understand the subtle complexities involved and how to get around issues with these technologies.

b) Evaluate the differences in the implementations: PHP, Ruby on Rails, Java EE, and other contributed implementations to understand which might best work for your situation.

c) Within each language implementation, evaluate different infrastructure technologies by changing the servers used (e.g: apache vs lighttpd, MySQL vs PostgreSQL, Ruby vs Jruby etc.)

d) Drive load against the application to evaluate the performance and scalability of the chosen platform.

e) Experiment with different algorithms (e.g. memcache locking, a different DB access API) by replacing portions of code in the application.

A robust, community-developed standard implementations of a web 2.0 application using different technologies will enable developers to compare and contrast these technologies in a manner that does not exist today. By providing excellent sample implementations of a concrete application that is available to everyone, we will enable faster and easier application development for users. Although we list three implementations in this proposal, we encourage others to come up with many more using other language stacks and/or frameworks e.g. Spring framework, Python etc.

Current Status

This is a new project with some sample not-ready-for-prime-time code.

Meritocracy

The initial developers are very familiar with meritocratic open source development, both at Apache and elsewhere. Apache was chosen specifically because the initial developers want to encourage this style of development for the project.

Community

Olio seeks to create developer and user communities during incubation.

Core Developers

The initial core developers are Sun Microsystems, Inc. employees, and faculty and students at UC Berkeley. We hope to expand this very quickly.

Alignment

The developers of the Olio want to work with the Apache Software Foundation specifically because Apache has proven to provide a strong foundation and set of practices for community-based development.

Known Risks

Orphaned products

This project has a lot of enthusiasm among the core developers, has ongoing development, and is not orphaned.

Inexperience with Open Source

The initial developers are well-versed in open source methodologies and practices.

Homogenous Developers

The initial group of developers is from two organizations. We would like to expand this and that is a primary reason for bringing this project to Apache.

Reliance on Salaried Developers

Although part of the initial development team are students, the core developers are employed by Sun Microsystems.

Relationships with Other Apache Products

None in particular, except that Apache HTTPD is the most common place to run PHP, and which the initial PHP implementation uses.

A Excessive Fascination with the Apache Brand

We believe in the processes, systems, and framework Apache has put in place. The brand is nice, but is not why we wish to come to Apache.

Documentation

Initial Source

Sun Microsystems Inc. intends to donate code for their PHP implementation of the sample events application as well as code to drive load against the application. UC Berkeley intends to donate code for the Ruby on Rails implementation.

This code is still a work in progress and will be provided primarily as a starting place for a much more robust, community- developed implementation.

External Dependencies

Required Resources

Developer mailing lists olio-dev@incubator.apache.org olio-commits@incubator.apache.org olio-private@incubator.apache.org olio-user@incubator.apache.org

A subversion repository

A JIRA issue tracker

Initial Committers

Sponsors

Champion

Nominated Mentors

Sponsoring Entity

The Apache Incubator.

OlioProposal (last edited 2009-09-20 23:06:11 by localhost)