What is Codea?
Codea stands for C++ Object-Oriented Development Environment for Apache. Codea allows developers
to quickly and easily develop modules in C++ for Apache 2.0. Codea hides unnecessary details without
taking any of the power or flexibility of Apache's architecture away from the user.
Why not mod_cpp?
Codea is not mod_cpp/mod_cplusplus because it is comprised primarily of header files that are used to
create a module; it is not an independently loaded Apache module that other modules register with, like
mod_perl. Codea differs from projects such as mod_perl in that Codea facilitates, but does not replace, the
Apache module registration mechanism.
Ideally, Codea should serve as the foundation upon which a mod_cpp-like module would be built.
Codea will be developed with this goal in mind.
Why should I use Codea?
Codea is especially suited for those who wish to build server applications atop Apache. Codea is easy
to use for simple Apache modules, and such implementations will gain some organizational and development
benefit. But the real advantage of Codea comes when building complete applications on top of Apache.
Codea allows you to use C++ natively without concerning yourself about Apache integration issues. Codea
allows you to create robust and complete object hierarchies or to use existing C++ libraries to build
powerful, object-oriented applications. Codea's object registry allows you to easily maintain state
within Apache across callbacks or even from request to request.
- Object-oriented support for mid-to-large application development on Apache
- Full use of all C++ idioms and libraries, including the Standard Template Library
- Easy to maintain state from one invocation to another
How can I use Codea?
Codea is published under the terms of the Apache Software License. In essence, the Codea license
indicates that you may download and use Codea for any purpose, whether personal, educational, or professional,
and that you may modify the source code without telling anyone.
Since the intent of Codea is for use in building complete applications, I expect and hope that it
will be used professionally, and therefore expect that many organizations will wish to modify the code
to include their own intellectual property. Still, it will be great if you, the user of Codea,
can contribute your enhancements of Codea to the project itself. See the Getting Involved
page for details.
The current release of Codea is always available for download on the Download page
or from SourceForge.
The goals of Codea are:
High-level goals of the Codea Open Source Project include:
- To provide a lightweight coding environment that automates the process of tying C++ code into Apache 2.0
- To provide a foundation for the development of Apache modules using C++
- To facilitate the development of object-oriented applications using Apache 2.0 as a foundation
- Solidify the Codea core code and port to all supported Apache 2.0 platforms
- Extend Codea via class library development
- Collaborate with others and encourage the use of Codea to create a complete C++-on-Apache solution
- Become a part of the software suite supported by the Apache Software Foundation
The concept for Codea began with a C++-enabling suite of header files developed by Matt Ryan for Apache 1.3.
These header files were developed while Matt was working for Volera as
a designer of Volera's Content Accountant server. This application represented a complete product built
entirely atop Apache 1.3. Zachary C. Miller's
work on getting C++ to work on Apache was essential to this step.
As the product was developed, several key persons within Volera contributed to the development and refinement of this
Within weeks of Content Accountant's public release, Matt was laid off from Volera. At this point Matt decided
to recreate this concept for Apache 2.0. Starting completely over from scratch, Matt redesigned and rebuilt a new
suite of C++-enabling code for Apache 2.0. This effort began in December 2001 and became what is now Codea.
The Codea Open Source Project is adminstered by Matt Ryan and John Robertson.