Apache Avalon is a collaborative software development project dedicated to providing a high-quality freely available component architecture according to the principles of the Apache Software Foundation [ASF]. This charter briefly describes the mission, history, organization, and processes of the Apache Avalon project. MISSION ======= Apache Avalon exists to promote and facilitate Component Based Design. Component Based Design is a proven practice that helps create systems that are loosely coupled and easy to maintain. Component Based Design requires a rigid software framework to function properly. Apache Avalon provides a specification for such a framework, an implementation of that specification and a compliance testing suite, and tools and components to facilate development using that framework. The software developed by the Apache Avalon project must be high performance, reliable, secure, and easy to use. The individual software components must be part of an underlying architectural orchestration that will allow them to work together without major negotiations or breakage. The process followed for the development of Apache Avalon software is the same as the process followed by other ASF projects: individuals and corporations collaborate on the best possible infrastructure, APIs, code, testing, and release cycles. In order to achieve a coherent architecture between Apache Avalon components and other components and applications, standards (formal or de facto) will be used as much as possible for both protocols and APIs. We will also allow the innovation of new protocols, APIs, and components in order to seed new concepts not yet defined by standards. HISTORY ======= This project was established under the direction of the Apache Software Foundation in November 2002 to facilitate joint open-source development. Prior to November 2002, Apache Avalon has been a part of the Apache Java project and the Apache Jakarta project. THE PROJECT MANAGEMENT COMMITTEE ================================ The Apache Avalon project is managed by a small, core group of contributors known as the Project Management Committee [PMC]. The PMC must have at least one ASF Officer, who will also be the PMC Chairperson and who will report to the ASF Board. See http://www.apache.org/foundation/bylaws.html for reference. The PMC has the following responsibilities: o Facilitating code or other donations by individuals or companies. o Resolving license issues and other legal issues. o Approving new committers. o Ensuring that administrative and infrastructure work is completed. o Overseeing Apache Avalon to ensure that the mission defined in this document is being fulfilled. o Resolving conflicts within the project. To become a member of the PMC, an individual must be nominated by a contributor, unanimously approved by all PMC members, and approved by a two-thirds majority of committers. In most cases, developers will have actively contributed to development for at least six months before being considered for membership on the PMC. The PMC is responsible for maintaining and updating this charter. Development must follow the process outlined in this charter, so any change to the development process necessitates a change to the charter. Changes must be unanimously approved by all members of the PMC. A contributor may challenge a change to the charter at any time and ask for a vote of all committers, in which case a two-thirds majority must approve the change. COMMITTERS ========== Committers are developers who have read/write access priviledges to the source code repository. New committers are added when a developer is nominated by a committer and approved by at least 50 percent of the existing committers with no opposing votes. In most cases, new committers will already be participating in the development process by submitting suggestions and/or fixes via the bug report page or mailing lists. CONTRIBUTORS ============ Anyone is allowed and encouraged to participate in the development of the Apache Avalon software products. Occasional contributors will be able to report bugs, participate in the mailing lists, and submit patches. Specific changes to a product proposed for discussion or voting on the appropriate development mailing list should be presented in the form of patches. When sent to the mailing list, the message should contain a subject beginning with [PATCH] and include a clear summary that describes the effect of that patch. Like all Apache projects, the Avalon project is a meritocracy -- the more work you do, the more you are allowed to do. Developers who make regular and substantial contributions may become committers as described above. LICENSING ========= All contributions to the Apache Avalon project adhere to the "ASF Source Code License." All contributions must be made under those terms. All contributions must contain the following copyright notice and license: ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) 1997-2003 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Apache", "Avalon", "Excalibur", "Fortress", "Phoenix", "Merlin" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org. 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org/. THE DEVELOPMENT PROCESS ======================= The development process is intentionally lightweight and follows the same guidelines as other ASF projects. The project committers decide which changes may be committed to the repository. Three +1 ('yes' votes) with no -1 ('no' votes or vetoes) are needed to approve a code change. For efficiency, some code changes from some contributors (e.g. feature additions, bug fixes) may be approved in advance, in which case they may be committed first and changed as needed, with conflicts resolved by majority vote of the committers. PRODUCT REQUIREMENTS ==================== All software products developed by Apache Avalon must have a set of requirments as well as an up-to-date release plan and architecture design. All software products developed by Apache Avalon must have a test system to verify their correct functioning and are ideally subject to continous integration testing, regression testing and unit testing. RELATIONSHIP TO OTHER APACHE PROJECTS ===================================== The Apache Avalon project should work closely with other Apache projects, such as Jakarta and Apache HTTP Server, to avoid redundancy and achieve a coherent architecture among Apache Avalon and these projects.