Login Register

Announcing: Zend Framework integration of Dojo 1.x

Today marks a very exciting milestone for two great Open Source Products: The Zend Framework and The Dojo Toolkit. Zend aims to provide out-of-the box Ajax functionality capable of communicating directly with the Framework, and Dojo aims to provide the solution.

The parellels between the projects make this integration a perfect match. Both follow a "use as needed" creedo, have wonderfully active communities, and crystal clear licensing. As a Dojo developer and PHP enthusiast, I'm proud to be apart of this integration effort, working directly with a number of Zend Framework team members for the best possible results.

So what exactly does this all mean? Here is a FAQ written to help:

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?

Alex and I will be participating in a Webinar on Tuesday May 27th with Zend Framework team members to deliver a short overview of the proposed integration, followed by a Q&A with the audience. In addition, both Zend Framework and Dojo community members are encouraged to communicate on thee main development lists of either project.

A w00t is in order here.

Great

Congratulations on your decision!
In my eyes, Zend Framework is the best PHP Framework available and I'm happy that I've decided to choose both, Zend Framework and Dojo Toolkit 18 months ago.
I'm looking forward to the new Dojo components within the Zend Framework.

Remi

Does the "Zend Framework"

Does the "Zend Framework" mean the Eclipse IDE with the "Zend Studio for Eclipse Pro." feature/plugin?

No, the IDE "Zend Studio" is

No, the IDE "Zend Studio" is a commercial product from Zend. There are also other commercial products available from Zend.

But the "Zend Framework" is an Open Source product, driven by a large Community. The Zend Framework is a lightweight, loosely-coupled component library which helps you to build a secure, reliable and modern Web application.

see also: The Zend Framework

Regards,
Remi