Kabuki, an AJAX Toolkit Proposal

0. Rationale

While the term AJAX (Asynchronous Javascript and XML) has only recently been coined, the underlying web standards and technologies (JavaScript a.k.a. ECMAScript, DOM, XML, SOAP, and so on) have been around for years. Although the term is used in a variety of ways, AJAX typically describes techniques towards developing interactive applications on the web client including asynchronous messaging, use of XML grammar in client-side applications, incremental page updates, and improved user interface controls. AJAX applications combine the rich UI experience of programmed clients with the low-cost lifecycle management of web-based applications.

AJAX has raised awareness of the high potential of web applications, it has encouraged companies to adopt rich web-based interfaces over traditional "fat" clients, and it has spawned development activity to create toolkits and abstractions to make AJAX-style development easier and more powerful. This is an important trend for open source. The client itself can be composed entirely of open-source parts, such as Mozilla's Firefox or KDE's Konqueror, and does not require any particular operating system, helping to make a more level playing field for all development. More importantly, AJAX is back-end agnostic as transactions are done over HTTP. Keeping the client open forces vendors to keep the communication channel open as well, and this can only continue as long as the client technology keeps pace with proprietary alternatives. The open, standards based communications channel is what drives many technologies inside Apache, so success of the open client is vital to Apache. The mission of this project is to encourage innovation around enterprise-strength client runtimes and tools and build a community which can select and nurture a select set which will be most beneficial to the web.

0.1 Criteria

Meritocracy:

Apache was chosen for an incubator primarily because of the guidance the community can provide.

Community:

The contributed work was inspired by open source development but needs a strong and diverse community to validate its mission and carry it forward. A primary objective of the project is to build a vibrant community of users and active contributors.

Core Developers:

All of the initial committers are members of the Zimbra development teams. All developers have worked on open source projects before and have experience and understanding of open source principles.

Alignment:

The Zimbra AJAX Development Toolkit provides a rich client library, similar in style to traditional object-oriented widget libraries like Eclipse's SWT. This toolkit hides implementation details and browser quirks and makes web development more accessible to the enterprise developer. It provides

For further information, please see the Zimbra AjaxTK whitepaper: http://www.zimbra.com/pdf/Zimbra%20AJAX%20TK%20Whitepaper.pdf

The intial proposal also contained Eclipse tooling for the Kabuki components, this part of the original proposal is currently a proposed project at http://www.eclipse.org/proposals/atf/.

0.2 Warning signs

Orphaned products:

The initial committers are users of this toolkit and have a long-term interest in use and maintenance of the code.

Inexperience with open source:

Several of the commiters are very experienced in Open Source environment. All efforts will be made to ensure that the work done and momentum will be in strict adherence to open source guidelines.

Homogenous developers:

As noted above, the initial list of developers consists primarily of paid employees of the donating company.

The current list of committers includes developers who are experienced with working in a distributed environment, and with resolving technical differences.

Reliance on salaried developers:

The initial set of committers are salaried developers. Through the incubation process, more diversity will hopefully be achieved in many aspects, including reliance on salaried developers.

No ties to other Apache products:

The initial codebase will be licensed under the Apache License 2.0. While there are no direct build dependencies on other Apache projects, the development of AJAX clients will often be driven by Apache middleware and will have a positive impact on the open source movement as described in the "Rationale" section.

A fascination with the Apache brand:

The committers are intent on developing a strong open source community. We believe that the Apache Software Foundation's emphasis on community development makes it the most suitable choice.

1. Scope of the subprojects

The initial scope of the project will include client-side widgets and other utilities from the Zimbra AjaxTK, as described in 0.1. In addition, the Kabuki project will also include server-side infrastructure to facilitate the AJAX programming model. Such server-side components may include resource aggregation and delivery, user authorization, application event notification, etc. Since XML is used for communication and HTTP is used as the transport, the client-side toolkit is not tied to any particular programming language.

2. Identify the initial source from which the subprojects are to be populated

The Zimbra AjaxTK is available today in open source, and can be downloaded at http://www.zimbra.com/community/downloads.php (See Zimbra Ajax Toolkit Download). (A snapshot of the AJAX toolkit code is also available via http://www.apache.org/~rubys/ajax/Ajax.tar.gz)

2.1 External Dependencies of the project

None.

3. Identify the ASF resources to be created

3.1 mailing list(s)

3.2 Subversion repository

3.3 Bugzilla

4. Identify the initial set of committers:

5. Identify Apache sponsoring individual

We request that the Apache Incubator PMC sponsor the Kabuki AJAX Toolkit Framework as an incubating project, with the eventual goal of graduation as a TLP. The initial contributors feel the scope of the project doesn't clearly overlap with any existing TLP, and is broad enough to justify eventual TLP status.

Champion: Sam Ruby

Mentors:

KabukiProposal (last edited 2009-09-20 23:07:08 by localhost)