incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <...@apache.org>
Subject Re: [PROPOSAL] Zeta Components
Date Wed, 21 Apr 2010 04:58:22 GMT

On 19 Apr 2010, at 06:52, Tobias Schlitt wrote:

> please find below our proposal for Zeta Components. The proposal is also
> available in the wiki:
> 
> 	http://wiki.apache.org/incubator/ZetaComponentsProposal

Well done!

+1 (Non Binding)

Cheers
Jan
--

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


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


Mime
View raw message