Dojo and Zend Framework Partnership Announcement

The Zend Framework team is 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.).

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:

    1. 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.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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.

    7. 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.

    8. 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:

    • 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.
    • 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.
    • 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.
    • 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.

Matthew Weier O’Phinney has
written up some of the technical details
of the integration for those
interested.

About Matthew Weier O'Phinney

Matthew is a Principal Engineer at Zend Technologies. He is currently project lead for both Zend Framework and Apigility; a Zend Certified Engineer; and a member of the Zend Education Advisory Board, the group responsible for authoring the Zend Certification Exam. He contributes to a number of open source projects, blogs on PHP-related topics, and presents talks and tutorials related to PHP development and the projects to which he contributes. You can read more of his thoughts on his blog, mwop.net/blog.