Version 1 by Matthew Weier O'Phinney
on Aug 23, 2011 21:10.

compared with
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (29)

View Page History

During the [IRC meeting on 2011-08-17|2011-08-17 Meeting Log], one big question arose: what will ZF2 include? The basic consensus is that it should be "core" plus the MVC. The questions remaining are:

This RFC is intended for gathering feedback as to how we might categorize the various pieces of the distribution, and what the "standard" distribution might include.

Currently, I propose the following categories, with a number of questions marked for discussion.
Based on feedback on the mailing list and during the [2011-08-31 IRC meeting|2011-08-31 Meeting Log], we propose the following categories. Items marked in italics are considered optional within their category.

* Core functionality:
* *Core*
** Autoloading and Plugin Loading
** Configuration
** Caching
** Logging
** Debug (perhaps this should be part of Logging, and/or consume it?)
** EventManager
** DI
** Session
** Console
** Db
** Json
** DOM manipulation and querying
** Crypt
** Filter and Validator
** Serialization
** Stdlib
*** SPL extensions
*** Dispatchable
*** Callback
** Memory (?)
** Version
* (?) On the fence (not sure if this is core functionality, or belongs in MVC or extensions):

* *DB and Data Formats*
** Acl Db
** DOM manipulation and querying
** Feed reader, writer, and PuSH
** Mail
*** MIME
** Serialization
*** JSON
*** AMF
*** etc.
** ICal

* *Security*
** Authentication
** I18n/L10n (internationalization/localization)
** Authorization (ACL)
** Identity
*** _OpenID_
*** _OAuth_
*** _InfoCard_
*** _LDAP_

* *I18n/L10n*
** Translator
** Locale
*** Currency
*** Date
*** Translator
*** TimeSync
** Queue

* *MVC*
** "Controller" (front controller, page/action controllers)
** View and Layout
*** AMF
** Form components
** _Functional testing infrastructure_
** _Tool_

* *Other:* components currently uncategorized, but which would not be necessary in order to mark the framework stable. Instability of the component at time of stable release would result in its removal from the repository until it has been refactored.
** Queue
** Javascript extensions
** Debug (?)
** Wildfire (?)
** Tool (?)
** Functional testing infrastructure (?)
* Extensions and Extras
** Identity
*** OAuth Dojo
*** OpenID jQuery
*** InfoCard Wildfire
*** LDAP
** Mail
*** MIME
** Barcode
** Services
*** Including GData
** Feed reader, writer, and PuSH
** Cloud
** Markup

The ZF2 "standard distribution" might then be defined as "Core" + "MVC". Anything outside of this that we ship would be considered "extra", and could be included in a "full distribution" package; otherwise, they could be grabbed individually (along with their dependencies) via a distribution mechanism such as Pyrus. Alternately, bundles (meta-packages) such as "services" could be created to distribute multiple features at once, along with "core".
The ZF2 "standard distribution" would be defined as "Core" + "DB and Data Formats" + "Security" + "I18n/L10n" + "MVC". Any components outside of this that, _assuming they are stable_ , could be included in a "full distribution" package. Assuming a package manager/installer capable of metapackages, developers could then install:

* individual components (with dependencies)
* individual categories (which would be meta-packages defining their components as dependencies)
* meta-distributions (custom packages aggregating one or more components or categories)
* standard distribution (categories as defined above)
* full distribution (all components)

Any components falling outside the standard distribution that are not passing tests and/or have not been refactored to ZF2 coding standards and requirements when we prepare for beta will be removed from the repository; developers may propose their inclusion in later releases assuming they do this work.