Google Summer of Code 2009: Organization application
Group name
Agavi
Homepage URL
Public e-mail
agavi@…
Description
Agavi is an open-source software project working to develop an extensible, scalable Model-View-Controller (MVC)-based framework for PHP. It was founded in 2005 as a fork of the Mojavi 3 framework by Sean Kerr, which has been a major influence in the development of modern MVC frameworks, including Symfony and Ruby on Rails. Agavi separates itself from other application frameworks in its strict separation of MVC components (adhering more closely to the Java BluePrints for MVC published at http://java.sun.com/blueprints/patterns/MVC-detailed.html), its comprehensive support for multiple data access layers, template engines, internationalization, and caching. Agavi is also context-agnostic, meaning that Agavi applications can theoretically operate as Web applications, console applications, or GUI applications.
Today, Agavi is used by an innumerable number of individuals and companies worldwide. Its architecture makes it especially useful in applications that are not just simple Web sites, such as multi-tiered service-oriented architectures, middlewares and complex Web applications.
Why is your group applying to participate? What do you hope to gain by participating?
Agavi's complex architecture, yet relatively low barrier to entry, makes it a perfect candidate for bringing new ideas to the realm of enterprise software. We hope that the brilliant students participating in the Summer of Code program will come up with unique, practical -- and most of all, awesome -- concepts and code to contribute to Agavi and thereby to further enterprise software development in general. We also hope to enlighten students to some practical and extensible methods for writing reliable large- (or small-)scale software through analysis of some of the principles employed by Agavi as proverbial "stepping stones" toward whatever career goals they might have.
What is the main public mailing list for your group?
users@… (information: http://lists.agavi.org/mailman/listinfo/users)
Where is the main IRC channel for your group?
#agavi on irc.freenode.net
What criteria do you use to select the members of your group? Please be as specific as possible.
Our mentors have been long-time, dedicated contributors to the Agavi project, either as core developers or as upstanding community members. They use Agavi both for work and play and have demonstrated very strong understandings of computer science and software engineering in general as well as of the structure of Agavi itself. Most have made code contributions to the Agavi source. Mentors have also been active in our IRC channel and have demonstrated more than adequate skills in helping other Agavi users and in communicating with other developers. Many of the mentors have met each other in person before, and the administrators have known them for a long time (and also met them in person) and truly trust these individuals.
Has your group participated previously? If so, please summarize your involvement and any past successes and failures.
Agavi has not previously participated in the Google Summer of Code.
If your group has not previously participated, have you applied in the past? If so, for what sort of participation?
Agavi applied to the Google Summer of Code in 2008 as a mentoring organization. http://trac.agavi.org/wiki/GoogleSummerOfCode2008 has all the information from last year's application.
What license does your organization use?
GNU Library or "Lesser" General Public License (LGPL)
What is the URL to the ideas list of your organization?
http://trac.agavi.org/wiki/GoogleSummerOfCode2009/Ideas
What is the main development mailing list for your group?
dev@… (information: http://lists.agavi.org/mailman/listinfo/dev)
What is the application template you would like contributors to your organization to use.
See http://trac.agavi.org/wiki/GoogleSummerOfCode2009/StudentApplicationTemplate.
What is your plan for dealing with disappearing contributors?
Students will be asked to send weekly progress and status reports to their mentors. Mentors and students may negotiate additional regulations at their own discretion (e.g. IM chat sessions). A student who does not respond to inquiries sent by a mentor, or does not respond to a request for his or her weekly report for a period of three consecutive days without prior notice will be contacted by phone and the organization administrator will be notified. If he or she does not respond within a week, the organization administrator may, at his discretion, inform Google of the student's status and potentially suspend the student's project. We will make it clear to students that we need to know their travel plans and any scheduling complications in advance, and we will work with them to build a list of realistic goals and a roadmap with milestones for their projects, so students and mentors can adequately track progress.
What is your plan for dealing with disappearing members?
Although this should not be a problem given our selection of mentors, a student who is unable to contact his or her mentor for a period of three consecutive days must report to the project administrator. The administrator will then attempt to contact the mentor; if the mentor does not respond in an appropriate amount of time (to be determined by the administrator), the mentor's participation in the project will be revoked and the student will be reassigned to another mentor. The project administrators have met most of the mentors in person before, and are in possession of their contact details including phone numbers, so unless a mentor is literally hit by a bus, they will be able to be contacted eventually. We will assign backup mentors to each project as a measure to eliminate such risks altogether.
What steps will you take to encourage contributors to interact with your community before, during, and after the program?
All the mentors and core developers hang out on IRC (#agavi on irc.freenode.net), giving all students a chance to dive into their projects with a minimum amount of friction. The IRC channel (which is permanently logged) and the development mailing list have always been the primary instruments for conducting development-related discussions, so students can go back and look at previous discussions and rationales for decisions. Similarly, our ideas page, application, and pretty much everything else we do are built by members of the community, publicly on our wiki.
Students will be treated essentially as core developers during the program; by the time the actual coding starts, they will have all of the rights and privileges as a full developer. They will also be invited and encouraged to respond to questions from users on the mailing lists and IRC if they feel up to it. Students' mentors will give them a basic overview of the Agavi community as soon as they are accepted and work with them to feel "at home" in the community. From there, the students will explore and demonstrate what they're learning through interaction with the community -- from mailing list posts to IRC chat to handling bug reports and other development matters. Based on their progress, we will then grant them write access to code repositories and other developer privileges.
What will you do to ensure that your accepted contributors stick with the project after the program concludes?
We hope that we won't have to do anything! In our search for developers who are passionate about software development and application design, we hope that our selection of students will love the community that they immerse themselves in when they work with Agavi.
That said, we hope to integrate all of the code that our students write into our mainline repository and that the students will want to continue to contribute to and maintain this code within Agavi. Assuming they meet (and hopefully exceed!) our expectations, we plan to extend offers to students to become permanent core developers and to contribute to other aspects of the Agavi codebase after the Summer of Code is complete.

