Proposal for an Apache-run version of the C++ Standard Library Submission date: 12 May 2005, Tim Triemstra, Heidi Buelow (TimT @ RogueWave dot-com, Buelow @ RogueWave dot-com)
(0) rationale The goal of the Apache C++ Standard Library project is to provide a free implementation of the ISO/EIC 14882 international standard, often called the "STL" or "stdlib", which is consistent and portable across all major platforms and compilers. For the sake of this proposal, the project will be called "STDCXX" to blend in with other Apache names. Currently, C++ developers spend considerable effort porting code among platforms, as compiler vendors are focused on backward compatibility rather than cross-platform portability. There are other free implementations, but none have the quality, license flexibility, or platform support necessary to serve as a universal foundation for the C++ language. Rogue Wave Software will jump start this project by contributing the commercial C++ Standard Library it has been shipping for over a decade. This is a new, enhanced version of the OEM library provided by many vendors, including ARM, Sun Microsystems, HP and others. Unique attributes include: Complete compliance with the C++ standard Complete implementation of locale library (not OS dependant) User control over strict or loose standards compliance Largest test suite of any major implementation High performance Reference counted basic_string using atomic locking Thread-safety, including iostream and locale objects Fast compiles and extremely small executable file sizes Proven, portable, and fully tested on each platform Many platforms (Windows, Linux, Solaris, HP-UX, AIX, etc.) Platform-specific compilers (eg: MSVC, Sun Forte, HP aCC, GCC) Fully configurable and documented build control Ten years of deployment in the world's most critical systems Highly respected documentation, well maintained and up to date The day the project is launched, it will already provide the strongest foundation library for the C++ language available, both in terms of platform and standards support. (0.1) criteria Meritocracy: The STDCXX project should adhere to the same open, merit-based community standards as other Apache projects, while also closely tracking the relevant C++ standards. Contributions and Core Developers: The initial code contribution will be a fully-functional implementation of the ISO/EIC 14882 international standard, including the Standard Template Library (STL), locales, and iostreams libraries. As each platform's build system is packaged, additional ports will be contributed. As a side note, Rogue Wave Software intends to continue distributing the library as part of its SourcePro/C++ product well into the future. This means that significant effort will continue, especially in porting, and that effort will directly benefit the open source community since even code developed to meet commercial requirements will be contributed back into the community. Community: We estimate there are over 300,000 developers using the original commercial code, and several have already expressed interest in becoming contributors. This established, loose-knit group of users exposed to the existing code base via OEM or as direct customers should ensure a vibrant community once the open source project is started. It is likely that the Apache C++ Standard Library would be a desirable project to be used by other Apache projects as a foundation to ensure excellent performance and easy portability across platforms. It can serve many of the same goals as the existing APR project, but directly address the needs of C++ developers. Those other projects will be encouraged to actively participate in the library's community as well. Apache Alignment: With the success of open/free software, C/C++ has seen a bit of a revival as a popular language for its portability, power, and performance. In fact, Apache has a considerable number of key projects based on these languages. These projects and the entire developer community at large would benefit from a C++ standard implementation from a trusted source such as Apache. Without such a respected organization behind the project, developers will have to constantly choose a less-portable solution, or a solution more risky due to a small user community. (0.2) known risks Orphaned Products: One of the first questions when a commercial entity offers code to the public is "will this code be abandoned?" To be clear, Rogue Wave decided to initiate this process due to its own desire to stabilize the C++ market, making the creation of higher-level products easier and more portable. For a long time the contributed code has served primarily as a foundation for other commercial products, not as revenue producer on its own. Regardless of Apache's interested in the project, Rogue Wave intends to open the C++ Standard Library to the public in the interest of bolstering the C++ language and will continue to fully support and enhance the project. However, we fully expect a vibrant community to spring up around the project as there are already many people involved in various C++ libraries, compilers, and even consumer products that will benefit from the a true standard implementation that is also free and commonly available. Commercial Interest: The C++ Standard Library will continue to be shipped in commercial products but the policies would be the same as apply for any other company using the project. In short, that means we will continue to contribute to evolve the project and add new platforms well into the future. Inexperience with Open Source: Like many companies entering this arena, we have limited experience working on open source projects. Our primary goal is to foster an active community around the C++ Standard Library. Advice will be welcomed, and significant resources will be dedicated to the project to get it off the ground. However, we hope that our experience working in open standards groups will aid in the transition to the open source community. Initial Reliance on Salaried Workers: At the time of the initial proposal, only one external developer has agreed to volunteer as a top-level contributor. However, in discussions with members of the Apache community, as well as partners and customers, it is clear that there is already significant interest. Members of other Apache projects have indicated a desire to participate and there is optimism that by the time the project is set to begin more contributors from within Apache and the user community will be enrolled. Licensing, Patents, Miscellaneous Legal: After a thorough review, it was concluded that there are two copyright owners for the contributed code, Rogue Wave Software and Hewlett-Packard, both of whom will maintain those rights but relinquish the code to the world under the Apache license. Rogue Wave Software will simply retain copyright and adhere to the ASF license and will sign the software grant form for the initial code. HP did significant work on the standard many years ago and has sections of its original code contributed to the community at large. The license grant given by HP should conform to the rules of the ASF license, and is included below: Copyright (c) 1994 Hewlett-Packard Company Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. (1) scope of the project The C++ Standard Library project would focus closely on tracking the international standard governing the library, including the Standard Template Library (STL) and all related libraries. The list of Apache contributors should continue to include members of the standards committee, as it does in this proposal. The Apache members will work with the standards bodies to guide adherence, define future standards and extensions, and represent the needs of the open source community. The specific goals of the project are: A complete standards-compliant implementation of the library Support as many platforms and compiler versions as practical Work with standards committees where appropriate Provide the best performance possible on each supported platform Respond to the needs of the C++ community at large (2) identify the initial source for project code A preview bundle of the contributed code may be found at the following link: Rogue Wave Software's open source home page (http://www.roguewave.com/opensource/ ) (2.1) a special note about the initial code contribution The initial tarball made available on the web site will not be immediately ready to include in a public CVS/SVN repository. The file set is quite large, and has significant complexity, especially to support dozens of platforms out of a single code base. The code and directory structure will therefore need a thorough review to be sure they are efficiently packaged for public, group development. We don't expect this to take long, but wanted to set proper expectations. The code drop is fully functional, and contains notes on how to get it to compile on a subset of platforms. Once the review is complete and the project is fully ramped up in Apache it should support at least forty (40) platforms, using a variety of compilers. The Apache license and bundling best practices will of course need to be applied once the project is accepted. (3) identify the ASF resources to be created Rogue Wave will work with the ASF to determine which resources are appropriate for the company to provide in addition to those detailed as the responsibility of the ASF. Examples: newsgroups, knowledge bases, examples, white papers. (3.1) mailing list(s) stdcxx-dev stdcxx-user stdcxx-commits (3.2) SVN repositories stdcxx (3.3) Bugzilla stdcxx (4.0) identify the initial set of committers This is a preliminary list that will be updated with volunteer members. Tim Triemstra (TimT @ RogueWave dot-com) Martin Sebor (Sebor @ RogueWave dot-com) - standards committee member Lance Diduck (LDiduck @ bloomberg dot-net) Ravi Palepu (Palepu @ RogueWave dot-com) Amit Jindal (Jindal @ RogueWave dot-com) Heidi Buelow (Buelow @ RogueWave dot-com) John Hollis (Hollis @ RogueWave dot-com) John Hinke (Hinke @ RogueWave dot-com) (5) identify apache sponsoring individual Justin Erenkrantz (justin @ erenkrantz dot-com) (6) open issues for discussion The code and structure for this project is already quite complex to support localization and many platforms. While this has been managable within the confines of Rogue Wave's internal development processes, issues such as directory structure and build automation will be early priorities for the project. The initial contribution tarball does not include the test suite or the product documentation. Those will come in conjunction with the Apache build process as they currently depend on proprietary build infrastructure. -------------------- Heidi Buelow Rogue Wave, a division of Quovadx --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]