incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tobias Schlitt <tob...@schlitt.info>
Subject [PROPOSAL] Zeta Components
Date Mon, 19 Apr 2010 13:52:47 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

please find below our proposal for Zeta Components. The proposal is also
available in the wiki:

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

Regards,
Toby

=========================
Proposal: Zeta Components
=========================

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

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

The Zeta project was originally named *eZ Components* [1]_ and was
developed as an open source project under New BSD license by eZ Systems
AS [2]_. Involving a name change, eZ Systems is willing relicense the
source code basis and documentation and to 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. On the one hand, Zeta contains standard components for e.g.
database abstraction, templating, email, image manipulation and more, on
the other hand there are 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, as well as on 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 [5]_ 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 [17]_ 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 [6]_ and
[7]_.

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 [3]_ 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 [8]_ 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 [1]_
- - Code repository [9]_
- - Issue tracker [10]_
- - Mailinglist archive [11]_

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 [5]_ 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
[10]_ 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 [12]_.
Sebastian Bergmann
    As the creator and maintainer of PHPUnit [13]_, 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 [14]_, 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 [15]_, 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 [16]_.

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

- -----------
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]  eZ Components: http://ezcomponents.org
.. [2]  eZ Systems: http://ez.no
.. [3]  eZ Publish: http://ez.no/ezpublish
.. [4]  eZ Systems community: http://ez.no/developer

.. [5]  Mail component: http://ezcomponents.org/s/Mail
.. [6]  Development process:
http://ezcomponents.org/contributing/dev_process
.. [7]  Coding guidelines:
http://ezcomponents.org/contributing/coding_standards
.. [8]  Current CLA: http://ezcomponents.org/contributing/cla
.. [9]  Code repository: http://svn.ez.no/svn/ezcomponents/
.. [10] Issue tracker: http://issues.ez.no/ProjectSelect.php?Id=1
.. [11] Mailinglist: http://lists.ez.no/pipermail/components/Systems

.. [12] Xdebug: http://xdebug.org
.. [13] PHPUnit: http://www.phpunit.de
.. [14] Arbit: http://arbitracker.org
.. [15] PEAR: http://pear.php.net
.. [16] Planet PHP: http://planet-php.net

.. [17] Model-View-Controller:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
.. [18] Continuous integration:
http://en.wikipedia.org/wiki/Continuous_integration

- --------------
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 here in [9]_.

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

The current project infrastructure is hosted by eZ Systems, but this
should change. The project can be fully hosted on its own servers,
sponsored by some of the core contributors. However, for reliability
reasons, there are some services which we would want to have hosted by
the ASF.

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

The core developers would better like to host issue tracking on their
own, since an issue tracker that is build upon Zeta Components (Arbit
[14]_) already exists and is maintained by some of the core developers.
This tool also offers continuous integration [18]_ facilities, which is
important for the project.

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

- - Derick Rethans <ezc@derickrethans.nl>
- - Kore Nordmann <kore@php.net>
- - Tobias Schlitt <toby@php.net>
- - Sebastian Bergmann <sebastian@php.net>
- - Ole Marius Smestad <oms@ez.no>
- - Roland Benedetti <rbg@ez.no>

No CLAs sent, yet.

- ------------
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 accepted being our champion.

Nominated Mentors
=================

We don't have mentors, yet, and are looking for them.


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

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

- -- 
Tobias Schlitt         tobias@schlitt.info       GPG Key: 0xC462BC14
a passion for php                     http://schlitt.info/opensource
Member of the eZ Components project          http://components.ez.no
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkvMYC4ACgkQ5bO3TcRivBQvhQCZAeGRa3AnLpb27zk7UUzhEwdg
FKwAn2cy6pFAA9AswDuQSBK87xslsylO
=nmLP
-----END PGP SIGNATURE-----

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


Mime
View raw message