An excellent well thought out, complete proposal, with none of the usual copying of previous proposals with a bit of tweaking.
All looks good to me. Gav... > -----Original Message----- > From: Tobias Schlitt [mailto:tob...@schlitt.info] > Sent: Monday, 19 April 2010 11:53 PM > To: general@incubator.apache.org > Cc: Derick Rethans; Kore Nordmann; Sebastian Bergmann; Ole Marius > Smestad; Roland Benedetti > Subject: [PROPOSAL] Zeta Components > > -----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 <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> > > 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 tob...@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-unsubscr...@incubator.apache.org > For additional commands, e-mail: general-h...@incubator.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org For additional commands, e-mail: general-h...@incubator.apache.org