-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Please vote on the acceptance of Zeta Components for incubation at the
Apache Incubator. The full proposal is available at the end of this
message and on the wiki at

        http://wiki.apache.org/incubator/ZetaComponentsProposal

We ask the Incubator PMC to sponsor the project with Erik Abele as the
Champion and Craig L. Russel, Julien Vermillard and Christian Grobmeier
volunteering to be mentors. Note that the acceptance of Julien and
Christian for the IPMC is currently pending.

Please cast your votes:

[ ] +1, bring Zeta into Incubator
[ ] +0, I don't care either way
[ ] -1, do not bring Zeta into Incubator, because...

The vote is open for the next 72 hours and only votes from the Incubator
PMC are binding.

~~~~~~~~~~~~~~~~~~~~~~~~~
Proposal: Zeta Components
~~~~~~~~~~~~~~~~~~~~~~~~~

Zeta Components is a high-quality library of loosely-coupled PHP components.

- ------
Status
- ------

The proposal has been discussed on the incubator mailinglist. 3 mentors
have volunteered, the confirmation of Julien Vermillard and Christian
Grobmeier for the IPMC is pending.

- --------
Proposal
- --------

Originally developed as an open source project named eZ Components [1]
by eZ Systems AS [2] under New BSD license. eZ Systems has agreed to
relicense the source code and documentation, under the name Zeta
Components, and donate it to the Apache Software Foundation.

The goal of the project is to provide high-quality, loosely-coupled
components for the development of applications based on PHP version 5.1
and above. Zeta contains standard PHP framework components (e.g.
database abstraction, templating, email, image manipulation); and
modules which are unique in the PHP world, like a document format
conversion component, a WebDAV server module and a workflow based
programming framework.

The project is developed with a strong focus on code and documentation
quality, and backwards compatibility. It follows a well-defined
development process with extensive architecture and design discussions,
and prescribes a test-driven development approach.

- ----------
Background
- ----------

PHP is the most common language for developing web applications, but is
also in use in other areas. While the language itself already ships with
many libraries to solve different tasks, there is still a need for user
land libraries to provide more complex repetitive functionality.

Zeta provides components dedicated to such functionality. An example for
a tasks that can be solved using Zeta are processing and sending of
email. This is already possible from within pure PHP. But working with
multi-part MIME emails is not easily possible and a real pain when doing
that on your own. For that reason, a module exists in Zeta which allows
the developer to easily create and send such emails and to receive and
process them.

The Zeta project currently consists of the following components:

 * Archive
 * Authentication
 * AuthenticationDatabaseTiein
 * Base
 * Cache
 * Configuration
 * ConsoleTools
 * Database
 * DatabaseSchema
 * Debug
 * Document
 * EventLog
 * EventLogDatabaseTiein
 * Execution
 * Feed
 * File
 * Framework
 * Graph
 * GraphDatabaseTiein
 * ImageAnalysis
 * ImageConversion
 * Mail
 * MvcAuthenticationTiein
 * MvcFeedTiein
 * MvcMailTiein
 * MvcTemplateTiein
 * MvcTools
 * PersistentObject
 * PersistentObjectDatabaseSchemaTiein
 * PhpGenerator
 * Search
 * SignalSlot
 * SystemInformation
 * Template
 * TemplateTranslationTiein
 * Translation
 * TranslationCacheTiein
 * Tree
 * TreeDatabaseTiein
 * TreePersistentObjectTiein
 * Url
 * UserInput
 * Webdav
 * Workflow
 * WorkflowDatabaseTiein
 * WorkflowEventLogTiein
 * WorkflowSignalSlotTiein

As can be seen, there are typical web-application modules included, such
as the Feed component - which allows users to generate and consume
different types of aggregation feeds -, the already mentioned Mail
component, a template component for website templates and a WebDAV
server component. Beside that, the library also contains many modules
which are not only suitable for web applications, like a component for
managing various archive file formats, multiple layers of database
abstraction, tools for image manipulation, basic interfaces and
implementations of a model-view-controller structure and more.

In contrast to other frameworks, the components in Zeta are loosely
coupled and there are almost no hard inter-dependencies between them.
Instead, if a component can be integrated with another one, a so-called
Tiein component is provided, supplying the classes necessary to couple
the components. This allows users to cherry pick the components they
need, without the need of using the whole stack. That is especially
useful for using the provided modules in legacy code or when there is a
standard framework to build new applications on.

- ---------
Rationale
- ---------

Zeta is a library of high-quality, loosely coupled components for
application development on basis of PHP. The project existed for five
years now under the New BSD license, named eZ Components. It has been
developed so far as a product of eZ Systems AS by a team of lately 4
core developers and received various contributions from 3rd parties.

The unique characteristics of the project are a strong focus on
high-quality code and documentation as well as extensibility.

About the project
=================

The Zeta project is well established under the name eZ Components and
has a vital open source community around it. Its goal is to provide
high-quality PHP code in form of general purpose, re-usable components.
Being developed for 5 years now, the project has well established
processes for development in place:

Zeta underlies very hard code and documentation quality constraints. For
each new feature or component, requirements and architecture documents
need to be provided and publicly discussed, before they are implemented.
In addition, a test driven development approach is appointed, ensuring
few bugs and backwards compatibility. Full API documentation, a tutorial
and extensive examples are required for every components, before it is
released.

More information about the development process can be found in the
development process [3] and the coding standards [4].

History
=======

The Zeta project was initially started in 2005 and developed until now
by eZ Systems under the name eZ Components [1]. The initial goal was to
refactor the core libraries used by the open source content management
system eZ Publish [5] for the purpose of cleaning up the code base and
migrating it to PHP version 5.

Already during the initial planning phase, it turned out that a
refactoring was not feasible and a re-write of the desired library
became necessary. In addition, it was decided not to concentrate on the
needs of eZ Publish exclusively, but to create a general purpose library.

The source code base was mainly developed by employees of eZ Systems
under the New BSD license, with multiple contributions from 3rd parties.
Every external contributor needed to sign a CLA [6] which is derived
from the CLA used by the Apache Software Foundation.

Since eZ Systems will still make use of the Zeta project and plans to
even increase the usage drastically, their employees will continue to
contribute. eZ Systems also maintains a very vital open source community
around eZ Publish and it is expected, that their partners and
contributors also make use of and contribute to the Zeta project.

The main development team of eZ Components left eZ Systems in early
2010. While their initial idea was to continue with the project
themselves, they finally worked out the plan of moving the project into
a dedicated foundation together with their old employer. The ASF was
decided to be the most feasible new owner of the project.

To reflect the change of ownership and the changing project structure,
the name eZ Components was changed to Zeta Components. The original
development team is willing to maintain the project further on, as they
already put lots of efforts into it and feel very passionate about it.
eZ Systems is so kind to donate the IP of the source code basis,
documentation and infrastructure code to the Apache Foundation.

The goal of all involved parties is, to avoid a re-focusing of the
project, in terms of it becoming an exclusive part of the eZ Publish
content management system, and to further develop Zeta as an independent
project.

The most recent state of the eZ Components project can be found here:

 * Website: http://ezcomponents.org
 * Code repository: http://svn.ez.no/svn/ezcomponents/
 * Issue tracker: http://issues.ez.no/ProjectSelect.php?Id=1
 * Mailinglist archive: http://lists.ez.no/pipermail/components/Systems

Statistics
==========

Zeta currently consists of:

 *  712,708 lines of code:
   * 294,234 of these are non*test code:
     * 151,439 of these docs
     * 142,795 of these non*docs
 * Non test code consists of:
   * 1,909 classes:
     * 184 abstract classes (9.64%)
     * 1725 concrete classes
   * ~123 lines of code per class
 * Tests consist of:
   * 651 classes with 7134 methods

Needs for Zeta Components
=========================

Some of the initial reasons to start the project have already been
explained in the "About the project" section. Find in following a
summary of the reasons why there is still a need for the project and
where its benefits are:

While there are many frameworks and class repositories for the PHP
language out there, none of them has such a strict focus on quality.
Many frameworks are developed by hobby programmers and do therefore, or
for historical reasons, not have a quality assurance process in place.
The result is varying code quality and often un-maintained code. Many of
them also still support PHP 4, which results in slow and hard to
maintain code. In addition to that, many such projects suffer from
lacking architecture and design processes, as well as naming and usage
inconsistencies. Furthermore they allow code duplication and therefore
do not give the user a consistent choice of functionality.

The Zeta project has, in contrast to that, strict quality assurance,
architecture and design processes and consistent naming, development and
documentation guidelines. Its components are built upon PHP 5.1 and
support all later versions. Zeta focuses on generality and
extensibility. Beside that, Zeta components provide many components
which cannot be found in any other PHP library in this way. These are:

DatabaseSchema:

A component to read, write and store database schemas independent from
the relational database system in use. Beside that, schema differences
can be stored and written to a database to update the schema.

Document:

Using this component, a developer can convert between many different
document formats, like (X)HTML, DocBook XML, ODF, Wiki markup and more.
The component is designed to support any kind of document format in the
future.

Graph:

This module is used to render many different kinds of charts from
numerical data into various image file formats. It can be used with any
of the image generation libraries available in PHP.

Mail:

While most email libraries just support sending plain text or HTML
emails, this component supports various email RFCs including multi-part
MIME. Furthermore it can receive email via IMAP and POP and process
these mails to be presented in the very same way as they are represented
for sending.

PersistentObject:

This component is inspired by Javas Hibernate component, providing an
object-relational mapping mechanism. It supports typical CRUD operations
and has an optional layer for identity mapping.

Search:

An abstraction layer for different search engines, one of them being
Solr, is realized in this component. Its goal is to enable an
application developer to transparently exchange the search engine used
in an application.

Webdav:

This module delivers a fully featured, customizable WebDAV (class 1 and
2) server implementation to the user. Its is developed with focus on
interaction with different clients and to iron out their misbehaviours.
The server can easily be integrated into custom applications.

Workflow:

There is currently no other known library for graph (or workflow) driven
development in PHP. This framework provides the basis for such a
programming approach as well as control and storage mechanisms.

The current code base is designed in a flexible and extensible way, so
that integration of new features is easily possible. Several such
feature additions have already been noted down in the
issue tracker [7] to be implemented in the future (current count is
124). In addition to that, several new components have already been
discussed on the mailinglist for being added in the future.

The current user and developer base almost guarantees, the there is an
active future for the project.

Zeta and the ASF
================

In early 2010 the last members of the eZ Components development team
left eZ Systems for various reasons. Since they gave their all for the
project in the past and still fully support the project and its ideals,
the idea of spinning off the project into an independent foundation was
born. Discussions with eZ Systems' management and developers turned out,
that this is the way to go.

The Apache Software Foundation is the most accepted OSS foundation and
best supports the ideas involved in the spin-off perfectly:

 * Maintain clean IP
 * Keep permissive licensing
 * Grow the contributor base
 * Stick to a meritocratic approach

There is no comparable project inside the ASF and we really think, that
both parties (the project and the ASF) would benefit from contribution
the code base. Zeta and its community will get a new and secure home and
will flourish from the above named facts. The ASF will receive many new
developers and enthusiasts, which are likely to also participate in the
foundation itself and possibly other Apache projects.

- --------------
Current status
- --------------

The following sections give you an overview of the state of the Zeta
project, in terms of its compatibility and willingness to become an
Apache project.

Meritocracy
===========

Although initialized and led by a company so far, the project has been
following a quite meritocratic approach from its start. All technical
decisions have been discussed publicly on the mailinglists and were
never dictated by the management. Furthermore, the project was always
open for 3rd party contributed components, patches and feature requests.

This approach is mainly the result of all core developers being involved
in other open source projects around PHP. Find details on this in the
"Core Developers" section of this document.

One reason for moving the project to the ASF is to stabilize and expand
the meritocratic approach. We want to communicate this goal clearly to
the community and want to gather more contributors for the project.

Community
=========

eZ Components was mainly developed by the core team of lately 4
employees of eZ Systems. During the past 5 years, 10 employees
contributed actively to the project. In addition, 18 external
contributors signed the CLA and actively provided patches or full
components to the project.

The project maintains a vital open source community, with currently more
than 15 people active on the development mailinglist, discussing and
contributing. In addition, there is an active IRC channel, which counts
between 20 and 40 people and is used for support and technical discussions.

We are sure that this community will stay with the project, if it moves
to the ASF, and that there is growing potential from the PHP users
community. Especially when people realize that the project is no more a
"product of eZ Systems", but a fully independent OSS project.

eZ Systems plans to integrate the components provided by the Zeta
project further into their product eZ Publish. Therefore, the company
also plans to have their developers contribute further. This includes
bug fixes, feature additions and potentially new components.

In addition to that, there is a vital community of partners and open
source contributors around eZ System's product eZ Publish. These parties
already make heavy use of eZ Components and will continue to use it as
Zeta Components, since the project provides essential building blocks
for eZ Publish development. While some of them already contribute to the
project, it is expected, that contributions and participation from this
community grow in the future.

Beside that, the contributors are willing to represent and evangelize
the project at open source events and to attract new contributors.

Core Developers
===============

Zeta has four core developers by now, which all have a degree in
computer science and are long time members of the open source community
around PHP. As there are:

Derick Rethans:

Derick works on the core and multiple extensions for the PHP language
itself. In addition, he is the creator of the widely used Xdebug PHP
debugging extension [8].

Sebastian Bergmann:

As the creator and maintainer of PHPUnit [9], Sebastian is head of
development of this de-facto standard for unit testing in the PHP world.

Kore Nordmann:

Kore Nordmann maintains several open source projects, for example Arbit
[10], a PHP based issue tracking and project management system. Beside
that, he regularly contributes to various other projects in the PHP world.

Tobias Schlitt:

As a long time member of the PEAR project [11], the standard PHP code
collection, Tobias has brought experiences in software architecture and
PHP development. Beside his work on Zeta, he contributes to various
other open source projects and is a maintainer of Planet PHP [12].

Alignment
=========

The Zeta project fits especially into the ASF for its meritocratic
development approach and the target of having a very permissive license.
There is currently only one component in Zeta interacting with an ASF
project: The Search component supports Solr as a backend. However, PHP
is a project that is quite close to the ASF and many applications
written on basis of Zeta will run in an Apache web server.

In addition, some employees of eZ Systems also contribute to other ASF
projects. Jerome Renard maintains some custom Apache server modules and
contributed bug reports and patches in the past. Paul Borgermanns
contributes to Solr and Tika.

- -----------
Known Risks
- -----------

In following, we try to analyze the risks for the Zeta project.

Orphaned Products
=================

The Zeta project has been developed for the past 5 years under the name
eZ Components. There is a vital and active community around it. While
the core development team has been paid for development in the past,
they did that also with their heart and soul and will therefore not
allow the project of becoming orphan.

eZ Systems will continue to use the project in its main product (eZ
Publish) and even plans to extend the usage. To realize this, eZ Systems
will make its developers contribute to the project.

The project is in use by many PHP companies and in open source projects
like Arbit. In addition, 2 of the core developers plan to found a
company and to build their business model onto this project, among others.

Chances that development of Zeta will die away in the future are
therefore rare.

Inexperience with Open Source
=============================

The project exists since 5 years as an open source project and one
reason for putting it into the ASF is to keep it this way. All core
developers have long time experiences in leading and contributing to
various open source projects. eZ Systems is an open source company and
its business model is fully built upon OSS.

Homogeneous Developers
======================

3 of the 4 core developers of Zeta reside in Germany, but work for 2
different companies. One of them resides in London, UK. eZ Systems is
located in Norway and has a vital community of partners and contributors
among Europe and even world wide. All parties involved in the project
are looking forward to new team members from all over the world.

Reliance on Salaried Developers
===============================

The four core contributors were paid for working on the project in the
past 5 years. However, their intention to work on the project on a not
salaried basis is clear and strong, as can be seen by the efforts put
into the project becoming independent.

eZ Systems might pay developers for working on Zeta in the future. Two
of the core contributors might work on the project in terms of their own
company in the future.

Relationships with Other Apache Products
========================================

Zeta Components are already used in some open source projects outside
the Apache Foundation, like eZ Publish and Arbit. We encourage other
projects to make use of the components and are looking forward to their
feature requests and contributions. Beside that, the Search component in
Zeta enables the easy usage of Solr (Lucene) from within PHP.

We would also be happy to receive technical input from any other Apache
project and OSS projects in general and are looking forward to
integrating with them.

A Excessive Fascination with the Apache Brand
=============================================

All core contributors of the project already have a well-established
standing in the OSS community, since they contribute to various projects
for a long time now. The goal of joining the ASF is not driven by the
demand of more publicity. None of the contributors has misdemeanors
against any OSS project / foundation at any time.

However, the core contributors fully agree with the values and ideals of
the ASF and would be happy to be part of this movement.

- -------------
Documentation
- -------------

[1] Current project website: http://ezcomponents.org
[2] eZ Systems AS: http://ez.no
[3] Dev. process: http://ezcomponents.org/contributin/dev_process
[4] CLA: http://ezcomponents.org/contributing/coding_standards
[5] eZ Publish: http://ez.no/ezpublish
[6] CLA: http://ezcomponents.org/contributing/cla
[7] Issue tracker: http://issues.ez.no/ProjectSelect.php?Id=1

[8] Xdebug: http://xdebug.org
[9] PHPUnit: http://www.phpunit.de
[10] Arbit: http://arbitracker.org
[11] PEAR: http://pear.php.net
[12] Planet PHP: http://planet-php.net

- --------------
Initial Source
- --------------

Alls source code was developed in the SVN repository provided by eZ
Systems so far. This repository, including all releases and branches of
the code, can be found in http://svn.ez.no/svn/ezcomponents/.

- ---------------------
External Dependencies
- ---------------------

There are no external dependencies which need to be taken into account.
Zeta components works on basis of PHP and its bundled libraries. It can
optionally work with external tools like e.g. Solr and ImageMagick, but
there is no reason to bundle these resources users are not forced to
make use of them.

- ------------------
Required Resources
- ------------------

All essential project project infrastructure should be hosted in the
ASF. This includes:

 * SVN
 * mailinglists
 * basic website
 * issue tracker

The version history of the old SVN (hosted by eZ Systems) should be
imported to the ASF SVN.

Mailinglists
============

 * zeta-private
 * zeta-dev
 * zeta-commits
 * zeta-users (could initially also be handled on zeta-dev)

Subversion directory
====================

We would like to have the code repository hosted by the ASF:

    https://svn.apache.org/repos/asf/incubator/zeta

Issue Tracking
==============

Although some of the core developers would favor having Arbit [10] as
the issue tracker, we agree that this essential piece of infrastructure
should be hosted central in the ASF and not on a sponsored, external
server. We would therefore go with Jira. Regarding CI, we will probably
require a Hudson instance.

- ------------------
Initial Committers
- ------------------

 * Derick Rethans <e...@derickrethans.nl>
 * Kore Nordmann <k...@php.net>
 * Tobias Schlitt <t...@php.net>
 * Sebastian Bergmann <sebast...@php.net>
 * Ole Marius Smestad <o...@ez.no>
 * Roland Benedetti <r...@ez.no>

All reminded to send CLAs, some known to be received already.

- ------------
Affiliations
- ------------

Ole Marius Smestad is head of development of eZ Publish, Roland
Benedetti is product manager of eZ Publish, both employed by eZ Systems.
Kore Nordmann and Tobias Schlitt are in the process of creating a
company together. All four core contributors worked together on the
original eZ Components project on behalf of their employment at eZ
Systems AS, but are now independent of this company.

- --------
Sponsors
- --------

Champion
========

Erik Abele (ASF member) accepted being our champion.

Mentors
=======

 * Julien Vermillard (ASF member, applying for IPMC)
 * Craig L. Russel (ASF member)
 * Christian Grobmeier (not ASF member, applying for IPMC)

The acceptance of Julien and Christian for the IPMC is still pending.

We are still looking for more mentors.

Sponsoring Entity
=================

We want to kindly ask the Apache Incubator project for sponsoring.

- -- 
Tobias Schlitt         tob...@schlitt.info       GPG Key: 0xC462BC14
a passion for php                     http://schlitt.info/opensource
eZ Components are Zeta Components now!          http://bit.ly/9S7zbn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkvxe2IACgkQ5bO3TcRivBTRWgCcCD58fxfc0JIom3c7/Y6S94pf
h8cAn2ZRoEew4RK+gJEaZqH1Vbr8KX2q
=F6vk
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to