Wednesday, May 21, 2008

Dojo and Zend Framework Partnership Announcement

I am excited to announce a partnership between Dojo and Zend Framework. The goal is to deliver an out-of-the-box solution for building Ajax-based Web applications with Zend Framework. This is mainly targeted at users who rely on us to provide them with a best practice and an out-of-the-box experience for Ajax and don't want to have to deal with evaluating a solution (e.g. toolkits, licenses, etc.).

A big thanks to Matthew Weier O'Phinney, architect on the ZF team, who is leading this effort from our side (yes, he will still need to go through our new proposal process. No shortcuts!). Keep an eye on his blog for a more in-depth post on this effort. Thanks also to Alex Russell, Pete Higgins, and Dylan Schiemann from the Dojo team for their support.

Below is an FAQ which sheds some more light on this announcement:

Zend Framework and Dojo Partnership FAQ

1. What are the Zend Framework and Dojo Toolkit teams announcing?

Zend Framework and Dojo are announcing a strategic partnership to deliver an integrated solution for building modern PHP-based Web applications. In order to deliver an out-of-the-box experience Zend Framework will bundle the Dojo Toolkit and will feature Dojo-specific components.

2. Why did the Zend Framework and Dojo teams decide to work together?

There are many synergies and similarities between the two projects and their communities, including:

a) Licensing

Zend Framework and Dojo are both licensed under the new BSD license, allowing end users to integrate, alter, and distribute each project as they wish. In integrating with Dojo, Zend Framework continues to deliver business-friendly licensing along with its full Ajax support.

b) IP Purity

The Zend Framework and Dojo project both require all contributors to sign Apache-style Contributor License Agreements, which mitigates the risk of accepting contributions that infringe upon third parties' intellectual property rights.

c) Design Affinity

Both projects have similar design philosophies, including a strong emphasis on use-at-will architecture. Additionally, each has rigorous quality guidelines with strict unit testing and coding standards.

d) JSON Format

While Dojo can accept XHR responses in a variety of formats, JSON is the preferred response format. Zend Framework fully supports JSON for Ajax interactions, and already has a variety of helpers to facilitate data transmission via JSON. JSON is a lightweight format, can be evaluated directly in Javascript, and presents an elegant solution to the problem of data representation in XHR requests.

e) Comprehensive Ajax Solution

Dojo provides a comprehensive solution for rich web user interfaces. Many other toolkits either abstract common DOM-related actions to make remoting more efficient or focus solely on the UI layer; Dojo provides utilities for all of these.

f) Use of Standards

Dojo not only implements published standards, but also drives them. For example, members of the Dojo Foundation are working on draft versions of the JSON-RPC, JSON-Schema, and Bayeux Protocol specifications to promote interoperability among JavaScript libraries. In addition, Dojo is adopting and implementing standards driven by the OpenAjax Alliance including the OpenAjax Hub for interoperability.

g) Support

There are dedicated organizations behind both that allow customers to benefit from a fully supported stack. Zend offers support for PHP, Zend Framework and its application server offering while SitePen has support offerings for Dojo. Depending on customer demand the companies may also create joint support offerings in the future.

h) Communities

Both projects foster very strong and active communities that can support each other. Visit http://dojotoolkit.org/community and http://framework.zend.com/community for more information on how to participate.

3. What if my favorite Ajax toolkit is not Dojo? How does this fit in with your use-at-will philosophy?

Zend Framework will continue to be largely Ajax toolkit agnostic. While we will ship Dojo with Zend Framework as our preferred Ajax toolkit, only those who seek out-of-the-box Ajax functionality in the standard library will require Dojo. Additionally, we expect that the various Dojo-related components and helpers added to Zend Framework will serve as a blueprint for similar components serving alternate Ajax toolkits developed by the Zend Framework community. While we don’t have immediate plans to support them directly, we may ship such community contributions in the future.

While the Zend Framework team feels that Dojo is the right choice of JavaScript toolkit to build our Ajax experience on, it is not necessarily the case that Dojo is the right toolkit for you or your project. In addition, it may not be worthwhile to refactor existing code to standardize on Dojo. You may find that features found in other JavaScript toolkits far outweigh any benefits of our collaboration.

The Dojo Toolkit project will, for its part, also continue being server-side framework agnostic. In essence, this collaboration should not be taken as a move towards exclusivity in either project; rather, it adds features in each project to facilitate interoperability between Zend Framework and the Dojo Toolkit.

4. What components in the Zend Framework will be affected by this integration? Will any of this work benefit integration projects for other Ajax libraries?

Currently, we intend to add the following components:

o A dojo() placeholder view helper to facilitate Dojo integration in your views, including setting up the required script and style tags, dojo.require statements, and more. In essence, this work will support and enhance Dojo's modularity at the application level.

o Zend_Form elements that utilize Dijit, Dojo’s widget collection and platform. This will simplify creation of Zend_Form elements that can be rendered as Dijits. For instance, highly interactive widgets such as calendar choosers, color pickers, time selectors, and combo-boxes will be provided in the initial integration project.

o A component for creating dojo.data-compatible response payloads. dojo.data defines a standard storage interface; services providing data in this format can then be consumed by a variety of Dojo facilities to provide highly flexible and dynamic content for your user interfaces.

o A JSON-RPC server component. JSON-RPC is a lightweight remote procedure call protocol, utilizing JSON for its serialization format; it is useful for sites that require a high volume of interaction between the user interface and server-side data stores, as it allows exposing your server-side APIs in a format directly accessible via your client. Dojo has native JSON-RPC capabilities, and Zend Framework will provide a JSON-RPC implementation that is compatible with Dojo.

These features will be added to Zend Framework; no components will be re-written to make use of Dojo.

With Dojo support in Zend Framework, we hope to see ZF community contributions that follow this blueprint to add similar functionality for other Ajax toolkits.

5. I have feedback regarding the proposed method for integrating Dojo and Zend Framework. How can I deliver this feedback?

The Dojo integration will undergo the standard Zend Framework proposal review process. Please watch the main developer’s mailing list in the coming days for a proposal. You will be able to give feedback as with any proposal.

6. Could I contribute support for my favorite Ajax toolkit to Zend Framework?

Absolutely. However, we will only officially support Dojo components for the foreseeable future.

7. Will Zend Framework ship Dojo?

Yes.

8. Is Zend joining the Dojo foundation?

Zend has signed a corporate CLA with the Dojo Foundation in order to enable Zend staff to contribute to Dojo as needed and has begun the process of becoming a new Dojo Foundation member.

9. Is the Dojo team joining Zend Framework as contributors?

Yes; the Zend Framework project already has CLAs on file for Dojo contributors.

10. If I have signed a Zend Framework CLA will I be able to contribute to the bundled Dojo library?

We will not allow contributions to the bundled Dojo library through the Zend Framework project. We will bundle the latest, unmodified version of the Dojo library in Zend Framework; all contributions to that library should be done through the Dojo Foundation according to their policies. However, we may create custom modules to extend Dojo that contain contributions from Zend and the Zend Framework community. The Zend Framework team does not expect to ship custom extensions as part of our initial Dojo integration project.

11. What license governs Dojo?

It is dual licensed under the modified BSD License and the Academic Free License version 2.1. For details see http://dojotoolkit.org/license

12. Will Zend Studio add support for Dojo? Will Zend Studio also support other Ajax toolkits?

Zend Studio will continue to enhance its Ajax support in upcoming versions. As part of these enhancements it will likely also support individual toolkits including Dojo. We are evaluating enhanced support for Dojo widgets used in Zend Framework components.

13. I have questions which you haven’t answered in this FAQ. How can I ask them?

On Tuesday May 27th Zend Framework and Dojo team members will hold a joint Q&A webinar. In the webinar the Zend Framework team will deliver a short overview of the proposed integration. Following this short presentation we will open up the Webinar to questions from the audience. In addition, Zend Framework and Dojo community members can email the main development lists of either project.

---

Enjoy!