********************
Why choose CherryPy?
********************

Let's face it: there are **dozens** of different Python web frameworks. Why would
you want to choose CherryPy for your next dynamic Web project?

1. Simplicity
-------------

Developing with CherryPy is a simple task. "Hello, world" is only a few lines
long, and does not require the developer to learn the entire (albeit very
manageable) framework all at once. The framework is very pythonic; that is,
it follows Python's conventions very nicely (code is sparse and clean).

Contrast this with J2EE and Python's most popular and visible web frameworks:
Django, Zope, Pylons, and Turbogears. In all of them, the learning curve is
massive. In these frameworks, "Hello, world" requires the programmer to set
up a large scaffold which spans multiple files and to type a lot of boilerplate
code. CherryPy succeeds because it does not include the bloat of other
frameworks, allowing the programmer to write their web application quickly
while still maintaining a high level of organization and scalability.

CherryPy is also very modular. The core is fast and clean, and extension
features are easy to write and plug in using code or the elegant config
system. The primary components (server, engine, request, response, etc.)
are all extendable (even replaceable) and well-managed.

In short, CherryPy empowers the developer to work with the framework,
not against or around it.

2. Power
--------

CherryPy leverages all of the power of Python. Python is a dynamic language
which allows for rapid development of applications. Python also has an
extensive built-in API which simplifies web app development. Even more
extensive, however, are the third-party libraries available for Python. These
range from object-relational mappers to form libraries, to an automatic Python
optimizer, a Windows exe generator, imaging libraries, email support, HTML
templating engines, etc. CherryPy applications are just like regular Python
applications. CherryPy does not stand in your way if you want to use these
brilliant tools.

CherryPy also provides Tools and Plugins, which are powerful extension points
needed to develop world-class web applications.

3. Maturity
-----------

Maturity is extremely important when developing a real-world application.
Unlike many other web frameworks, CherryPy has had many final, stable releases.
It is fully bugtested, optimized, and proven reliable for real-world use.
The API will not suddenly change and break backwards compatibility, so your
applications are assured to continue working even through subsequent updates
in the current version series.

CherryPy is also a "3.0" project: the first edition of CherryPy set the tone,
the second edition made it work, and the third edition makes it beautiful.
Each version built on lessons learned from the previous, bringing the developer
a superior tool for the job.

4. Community
------------

CherryPy has an active community that develops deployed CherryPy applications
and are willing and ready to assist you on the CherryPy mailing list or IRC.
The developers also frequent the list and often answer questions and implement
features requested by the end-users.

5. Deployability
----------------

Unlike many other Python web frameworks, there are cost-effective ways to
deploy your CherryPy application.

Out of the box, CherryPy includes its own production-ready HTTP server
to host your application. If the application needs to be deployed on Apache,
there is copious documentation discussing how to connect the two. CherryPy can
also be deployed on any WSGI-compliant gateway (a technology for interfacing
numerous types of web servers): mod_wsgi, FastCGI, SCGI, IIS, etc.

In addition, CherryPy is pure-python and is compatible with Python 2.3. This
means that CherryPy will run on all major platforms that Python will run on
(Windows, MacOSX, Linux, BSD, etc).

`Webfaction.com <http://www.webfaction.com>`_, run by the inventor of CherryPy,
is a commercial web host that offers CherryPy hosting packages (in addition to
several others).

6. It's free!
-------------

All of CherryPy is licensed under the open-source BSD license, which means
**CherryPy can be used commercially for ZERO cost**.

7. Where to go from here?
-------------------------

Check out the :doc:`/concepts/index` and :doc:`/progguide/index` for
more complete documentation.

