This file is indexed.

/usr/share/doc/python-cherrypy3-doc/html/intro.html is in python-cherrypy3-doc 8.9.1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Foreword &#8212; CherryPy 8.9.1 documentation</title>
    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '8.9.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Installation" href="install.html" />
    <link rel="prev" title="CherryPy - A Minimalist Python Web Framework" href="index.html" /> 
  </head>
  <body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="install.html" title="Installation"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="index.html" title="CherryPy - A Minimalist Python Web Framework"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">CherryPy 8.9.1 documentation</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="foreword">
<h1>Foreword<a class="headerlink" href="#foreword" title="Permalink to this headline"></a></h1>
<div class="section" id="why-cherrypy">
<h2>Why CherryPy?<a class="headerlink" href="#why-cherrypy" title="Permalink to this headline"></a></h2>
<p>CherryPy is among the oldest web framework available for Python, yet many people aren’t aware of its existence.
One of the reason for this is that CherryPy is not a complete stack with built-in support for a multi-tier architecture.
It doesn’t provide frontend utilities nor will it tell you how to speak with your storage. Instead, CherryPy’s take
is to let the developer make those decisions. This is a contrasting position compared to other well-known frameworks.</p>
<p>CherryPy has a clean interface and does its best to stay out of your way whilst providing
a reliable scaffolding for you to build from.</p>
<p>Typical use-cases for CherryPy go from regular web application with user frontends
(think blogging, CMS, portals, ecommerce) to web-services only.</p>
<p>Here are some reasons you would want to choose CherryPy:</p>
<ol class="arabic">
<li><p class="first">Simplicity</p>
<p>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).</p>
<p>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.</p>
<p>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.</p>
<p>In short, CherryPy empowers the developer to work with the framework, not against or around it.</p>
</li>
<li><p class="first">Power</p>
<p>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.</p>
<p>CherryPy also provides <a class="reference internal" href="extend.html#tools"><span class="std std-ref">tools</span></a> and <a class="reference internal" href="extend.html#busplugins"><span class="std std-ref">plugins</span></a>, which are powerful extension points needed to develop world-class web applications.</p>
</li>
<li><p class="first">Maturity</p>
<p>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.</p>
<p>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.</p>
</li>
<li><p class="first">Community</p>
<p>CherryPy has an devoted community that develops deployed CherryPy applications and are willing and ready to assist you on the CherryPy mailing list or IRC (#cherrypy on OFTC). The developers also frequent the list and often answer questions and implement features requested by the end-users.</p>
</li>
<li><p class="first">Deployability</p>
<p>Unlike many other Python web frameworks, there are cost-effective ways to deploy your CherryPy application.</p>
<p>Out of the box, CherryPy includes its own production-ready HTTP server to host your application. CherryPy can also be deployed on any WSGI-compliant gateway (a technology for interfacing numerous types of web servers): mod_wsgi, FastCGI, SCGI, IIS, uwsgi, tornado, etc. Reverse proxying is also a common and easy way to set it up.</p>
<p>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).</p>
<p><a class="reference external" href="https://www.webfaction.com">webfaction.com</a>, run by the inventor of CherryPy, is a commercial web host that offers CherryPy hosting packages (in addition to several others).</p>
</li>
<li><p class="first">It’s free!</p>
<p>All of CherryPy is licensed under the open-source BSD license, which means CherryPy can be used commercially for ZERO cost.</p>
</li>
<li><p class="first">Where to go from here?</p>
<p>Check out the <a class="reference internal" href="tutorials.html#tutorials"><span class="std std-ref">tutorials</span></a> to start enjoying the fun!</p>
</li>
</ol>
</div>
<div class="section" id="success-stories">
<span id="successstories"></span><h2>Success Stories<a class="headerlink" href="#success-stories" title="Permalink to this headline"></a></h2>
<p>You are interested in CherryPy but you would like to hear more from people
using it, or simply check out products or application running it.</p>
<p>If you would like to have your CherryPy powered website or product listed here,
contact us via our <a class="reference external" href="http://groups.google.com/group/cherrypy-users">mailing list</a>
or IRC (#cherrypy on <a class="reference external" href="http://www.oftc.net/oftc/">OFTC</a>).</p>
<div class="section" id="websites-running-atop-cherrypy">
<h3>Websites running atop CherryPy<a class="headerlink" href="#websites-running-atop-cherrypy" title="Permalink to this headline"></a></h3>
<p><a class="reference external" href="http://tech.hulu.com/blog/2013/03/13/python-and-hulu">Hulu Deejay and Hulu Sod</a> - Hulu uses
CherryPy for some projects.
“The service needs to be very high performance.
Python, together with CherryPy,
<a class="reference external" href="http://gunicorn.org">gunicorn</a>, and gevent more than provides for this.”</p>
<p><a class="reference external" href="http://techblog.netflix.com/2013/03/python-at-netflix.html">Netflix</a> - Netflix uses CherryPy as a building block in their infrastructure: “Restful APIs to
large applications with requests, providing web interfaces with CherryPy and Bottle,
and crunching data with scipy.”</p>
<p><a class="reference external" href="http://urbanility.com">Urbanility</a> - French website for local neighbourhood assets in Rennes, France.</p>
<p><a class="reference external" href="https://www.mropsupply.com">MROP Supply</a> - Webshop for industrial equipment,
developed using CherryPy 3.2.2 utilizing Python 3.2,
with libs: <a class="reference external" href="http://jinja.pocoo.org/docs">Jinja2-2.6</a>, davispuh-MySQL-for-Python-3-3403794,
pyenchant-1.6.5 (for search spelling).
“I’m coming over from .net development and found Python and CherryPy to
be surprisingly minimalistic.  No unnecessary overhead - build everything you
need without the extra fluff.  I’m a fan!”</p>
<p><a class="reference external" href="http://www.fomori.org/cherrymusic">CherryMusic</a> - A music streaming server written in python:
Stream your own music collection to all your devices! CherryMusic is open source.</p>
<p><a class="reference external" href="http://www.yougov.com">YouGov Global</a> - International market research firm, conducts
millions of surveys on CherryPy yearly.</p>
<p><a class="reference external" href="http://cloud.aculab.com">Aculab Cloud</a> - Voice and fax applications on the cloud.
A simple telephony API for Python, C#, C++, VB, etc…
The website and all front-end and back-end web services are built with CherryPy,
fronted by nginx (just handling the ssh and reverse-proxy), and running on AWS in two regions.</p>
<p><a class="reference external" href="http://www.learnit.nl">Learnit Training</a> - Dutch website for an IT, Management and
Communication training company. Built on CherryPy 3.2.0 and Python 2.7.3, with
<a class="reference external" href="http://pythonhosted.org/oursql">oursql</a> and
<a class="reference external" href="http://www.webwareforpython.org/DBUtils">DBUtils</a> libraries, amongst others.</p>
<p><a class="reference external" href="http://linstic.com">Linstic</a> - Sticky Notes in your browser (with linking).</p>
<p><a class="reference external" href="http://www.almad.net">Almad’s Homepage</a> - Simple homepage with blog.</p>
<p><a class="reference external" href="http://fight.watch">Fight.Watch</a> - Twitch.tv web portal for fighting games.
Built on CherryPy 3.3.0 and Python 2.7.3 with Jinja 2.7.2 and SQLAlchemy 0.9.4.</p>
</div>
<div class="section" id="products-based-on-cherrypy">
<h3>Products based on CherryPy<a class="headerlink" href="#products-based-on-cherrypy" title="Permalink to this headline"></a></h3>
<p><a class="reference external" href="http://sabnzbd.org">SABnzbd</a> - Open Source Binary Newsreader written in Python.</p>
<p><a class="reference external" href="https://github.com/rembo10/headphones">Headphones</a>  - Third-party add-on for SABnzbd.</p>
<p><a class="reference external" href="http://sickbeard.com">SickBeard</a> - “Sick Beard is a PVR for newsgroup users (with limited torrent support). It watches for new episodes of your favorite shows and when they are posted it downloads them, sorts and renames them, and optionally generates metadata for them.”</p>
<p><a class="reference external" href="http://www.turbogears.org">TurboGears</a> - The rapid web development megaframework. Turbogears 1.x used Cherrypy. “CherryPy is the underlying application server for TurboGears. It is responsible for taking the requests from the user’s browser, parses them and turns them into calls into the Python code of the web application. Its role is similar to application servers used in other programming languages”.</p>
<p><a class="reference external" href="http://www.perceptiveautomation.com/indigo/index.html">Indigo</a> - “An intelligent home control
server that integrates home control hardware modules to provide control of your home. Indigo’s built-in
Web server and client/server architecture give you control and access to your home remotely from
other Macs, PCs, internet tablets, PDAs, and mobile phones.”</p>
<p><a class="reference external" href="http://www.sf.net/projects/slikiwiki">SlikiWiki</a> - Wiki built on CherryPy and featuring WikiWords, automatic backlinking, site map generation, full text search, locking for concurrent edits, RSS feed embedding, per page access control lists, and page formatting using PyTextile markup.”</p>
<p><a class="reference external" href="http://sourceforge.net/projects/read4me">read4me</a> - read4me is a Python feed-reading web service.</p>
<p><a class="reference external" href="http://www.firebirdsql.org/en/quality-assurance">Firebird QA tools</a> - Firebird QA tools are based on CherryPy.</p>
<p><a class="reference external" href="https://github.com/saltstack/salt-api">salt-api</a> - A REST API for Salt, the infrastructure orchestration tool.</p>
</div>
<div class="section" id="products-inspired-by-cherrypy">
<h3>Products inspired by CherryPy<a class="headerlink" href="#products-inspired-by-cherrypy" title="Permalink to this headline"></a></h3>
<p><a class="reference external" href="http://ooweb.sourceforge.net/">OOWeb</a> - “OOWeb is a lightweight, embedded HTTP server for Java applications that maps objects to URL directories, methods to pages and form/querystring arguments as method parameters. OOWeb was originally inspired by CherryPy.”</p>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Foreword</a><ul>
<li><a class="reference internal" href="#why-cherrypy">Why CherryPy?</a></li>
<li><a class="reference internal" href="#success-stories">Success Stories</a><ul>
<li><a class="reference internal" href="#websites-running-atop-cherrypy">Websites running atop CherryPy</a></li>
<li><a class="reference internal" href="#products-based-on-cherrypy">Products based on CherryPy</a></li>
<li><a class="reference internal" href="#products-inspired-by-cherrypy">Products inspired by CherryPy</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="index.html"
                        title="previous chapter">CherryPy - A Minimalist Python Web Framework</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="install.html"
                        title="next chapter">Installation</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/intro.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="install.html" title="Installation"
             >next</a> |</li>
        <li class="right" >
          <a href="index.html" title="CherryPy - A Minimalist Python Web Framework"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">CherryPy 8.9.1 documentation</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2001-2018 CherryPy Team.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6.
    </div>
  </body>
</html>