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]

Reply via email to