[Checkins] SVN: zope3book/trunk/ One chapter converted to rst

Baiju M baiju.m.mail at gmail.com
Fri Feb 20 06:05:58 EST 2009


Log message for revision 96811:
  One chapter converted to rst
  

Changed:
  _U  zope3book/trunk/
  A   zope3book/trunk/Makefile
  A   zope3book/trunk/buildout.cfg
  A   zope3book/trunk/source/
  A   zope3book/trunk/source/InstallingZope3.rst
  A   zope3book/trunk/source/Preface.rst
  A   zope3book/trunk/source/_static/
  A   zope3book/trunk/source/_templates/
  A   zope3book/trunk/source/conf.py
  A   zope3book/trunk/source/index.rst

-=-

Property changes on: zope3book/trunk
___________________________________________________________________
Added: svn:ignore
   + build
develop-eggs
eggs
bin
parts
.installed.cfg

Added: svn:externals
   + bootstrap svn://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap


Added: zope3book/trunk/Makefile
===================================================================
--- zope3book/trunk/Makefile	                        (rev 0)
+++ zope3book/trunk/Makefile	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,75 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = bin/sphinx-build
+PAPER         =
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
+
+.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  pickle    to make pickle files"
+	@echo "  json      to make JSON files"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview over all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+
+clean:
+	-rm -rf build/*
+
+html:
+	mkdir -p build/html build/doctrees
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
+	@echo
+	@echo "Build finished. The HTML pages are in build/html."
+
+pickle:
+	mkdir -p build/pickle build/doctrees
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+web: pickle
+
+json:
+	mkdir -p build/json build/doctrees
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	mkdir -p build/htmlhelp build/doctrees
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in build/htmlhelp."
+
+latex:
+	mkdir -p build/latex build/doctrees
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in build/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	mkdir -p build/changes build/doctrees
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
+	@echo
+	@echo "The overview file is in build/changes."
+
+linkcheck:
+	mkdir -p build/linkcheck build/doctrees
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in build/linkcheck/output.txt."

Added: zope3book/trunk/buildout.cfg
===================================================================
--- zope3book/trunk/buildout.cfg	                        (rev 0)
+++ zope3book/trunk/buildout.cfg	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,7 @@
+[buildout]
+parts = doc
+
+[doc]
+recipe = zc.recipe.egg
+eggs = sphinx
+       docutils

Added: zope3book/trunk/source/InstallingZope3.rst
===================================================================
--- zope3book/trunk/source/InstallingZope3.rst	                        (rev 0)
+++ zope3book/trunk/source/InstallingZope3.rst	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,394 @@
+Installing Zope 3
+-----------------
+
+
+Difficulty
+::::::::::
+
+Newcomer
+
+
+Skilla
+::::::
+
+-   You should know how to use the command line of your operating system.
+    (For Windows releases, the Installer is provided.)
+-   You need to know how to successfully install the latest version of
+    Python on your system.
+
+
+Problem/Task
+::::::::::::
+
+Before you can develop anything for Zope 3, you should, of course, install
+it.
+
+
+Solution
+::::::::
+
+
+Zope 3 Installation Requirements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Zope 3 usually requires the latest stable Python version. For the Zope X3
+3.0.0 release, this is Python 2.3.4 or better. Note that you should always
+use the latest bug-fix release. Zope 3 does not require you to install or
+activate any special packages; the stock Python is fine. This has the great
+advantage that you can use a pre-packaged Python distribution (for example
+RPM, deb, Windows Installer) for your favorite operating system.
+
+Note: While distutils is part of the standard Python distribution, packagers
+often treat it as a separate installation package. In order to install Zope
+3, your Python must have distutils installed as well.
+
+The only catch is that Zope 3's C modules must be compiled with the same C
+compiler as Python. For example, if you install the standard Python
+distribution on Windows, which is compiled with Visual C++ 7, you cannot
+compile Zope 3's modules with Cygwin. However, this problem is not as bad as
+it seems. The Zope 3 binary distributions are always compiled with the same
+compiler as the standard Python distribution for the operating system.
+Furthermore, if you want to compile everything yourself, you are likely to
+use only one compiler anyway.
+
+On Unix/Linux your best bet is  `gcc`_. All Zope 3 developers are using
+`gcc`_, so it will always be supported. Furthermore, all Linux Python
+distribution packages are compiled using  `gcc`_. In Windows, the standard
+Python distribution is compiled using Visual C++ 7, as mentioned previously.
+Therefore the Zope 3 binary Windows release is also compiled with that
+compiler. However, people have also successfully used  `gcc`_ by using
+Cygwin, which comes with Python. Finally, you can run Zope 3 on MacOS X as
+well. All you need are  `gcc`_ and the  `make` program. With these, both
+Python and Zope 3 compile just fine.
+
+Python is available at the Python Web site (  `www.python.org`_).
+
+
+Installing Zope from SVN
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+In order to check out Zope 3 from SVN, you need to have a SVN client
+installed on your system. If you do not have a SVN account, you can use the
+anonymous user to check out a sandbox:
+
+
+1  svn co svn://svn.zope.org/repos/main/Zope3/trunk Zope3
+
+After the checkout is complete, you enter the Zope 3 directory:
+
+
+1  cd Zope3
+
+From there you run  `make` (so you need to have  `make` installed, and it
+should be available for all mentioned environments). If your Python
+executable is not called  `python2.3`_ and/or your Python binary is not in
+the path, you need to edit the first line of the  `Makefile`_ file to contain
+the correct path to the Python binary. Then you just run make, which
+builds/compiles Zope 3:
+
+
+1  make
+
+Next you copy  `sampleprincipals.zcml`_ to  `principals.zcml`_ and add a user
+with manager rights, as follows:
+
+
+1  <principal
+2      id="zope.userid" title="User Name Title"
+3      login="username" password="passwd" />
+4
+5  <grant role="zope.Manager" principal="zope.userid" />
+
+In the preceding code block, note the following:
+
+-   Line 2: Notice that you do not need  `zope.`_ as part of your
+    principal ID, but the ID must contain at least one dot (  `.`_), because
+    that signals a valid ID.
+-   Line 3: The login and password strings can be any random value, but
+    they must be correctly encoded for XML.
+-   Line 5: If you do not use the default security policy, you might not
+    be able to use this  `zope:grant`_ directive because it might not support
+    roles. However, if you use the plain Zope 3 checkout, roles are available
+    by default.
+
+During development, you often do not want to worry about security. In such a
+case you can simply give  `anybody`_ the  `Manager`_ role:
+
+
+1  <grant role="zope.Manager" principal="zope.anybody" />
+
+The fundamental application server configuration can be found in
+`zope.conf`_. If  `zope.conf`_ is not available,  `zope.conf.in`_ is used
+instead. In this file you can define the types and ports of the servers you
+would like to activate, setup the ZODB storage type and specify logging
+options. The configuration file is very well documented, and making the
+desired changes should be easy.
+
+Now you are ready to start Zope 3 for the first time:
+
+
+1  ./bin/runzope
+
+The following output text should appear::
+
+  ------
+  2003-06-02T20:09:13 INFO PublisherHTTPServer zope.server.http (HTTP)
+   started.
+          Hostname: localhost
+          Port: 8080
+  ------
+  2003-06-02T20:09:13 INFO PublisherFTPServer zope.server.ftp started.
+          Hostname: localhost
+          Port: 8021
+  ------
+   2003-06-02T20:09:13 INFO root Startup time: 5.447 sec real, 5.190 sec
+     CPU
+
+After Zope comes up, you can test the servers by typing the following URL in
+your browser:  `http://localhost:8080/`_. You can test FTP by using
+`ftp://username@localhost:8021/`_. Even WebDAV is available using
+`webdav://localhost:8080/`_ in Konqueror or your favorite WebDAV client.
+
+An XML-RPC server is also built in to Zope by default, but most objects do
+not support any XML-RPC methods, so you cannot test it right away. Chapter
+"??" provides detailed instructions on how to use the XML-RPC server.
+
+
+Installing the Source Distribution
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+e following sections describe how to use the source TAR ball to compile and
+install a Zope 3 distribution.
+
+
+Unpacking the Package
+:::::::::::::::::::::
+
+The latest release of Zope 3 can be found at
+`www.zope.org/Products/ZopeX3`_. First, you need to download the latest Zope
+3 release by clicking the file that is available for all platforms, i.e.
+`ZopeX3-VERSION.tgz`_. You can use  `tar`_ or WinZip to extract the archive,
+like this:
+
+
+1  tar xzf ZopeX3-3.0.0.tgz
+
+
+Building Zope
+:::::::::::::
+
+For Zope 3 releases, distributation makers provided the well-known
+`configure`_/  `make` procedure. So you can start the configuration process
+by using the following after you have entered the newly created directory:
+
+
+1  ./configure
+
+If you want to place the binaries of the distribution somewhere other than
+`/usr/local/ZopeX3-VERSION`_, you can specify the  `-prefix`_ option as
+usual. Also, if you have Python installed at a non-standard location, you can
+specify the Python executable by using  `-with-python`_. A full configuration
+statement could look like this:
+
+
+1  ./configure --prefix=/opt/Zope3 --with-
+    python=/opt/puython2.3/bin/python2.3
+
+The following output is immediately returned:
+
+
+1  Configuring Zope X3 installation
+2
+3  Using Python interpreter at /opt/puython2.3/bin/python2.3
+
+Now that the source has been configured, you can build it by using  `make`.
+After you enter the  `make` command, the following line is returned:
+
+
+1  /opt/python2.3/bin/python2.3 install.py -q build
+
+The hard drive is busy for several minutes, compiling the source. When the
+command line returns, you can run the tests by using the following:
+
+
+1  make check
+
+Here, both the unit and functional tests are executed. For each executed
+test, you have one dot on the screen. The check takes between 5 and 10
+minutes depending on the speed and free cycles on your computer. The final
+output should look as follows::
+
+
+  Python2.3 install.py -q build
+  Python2.3 test.py -v
+  Running UNIT tests at level 1
+  Running UNIT tests from
+   /path/to/ZopeX3-VERSION/build/lib.linux-i686-2.3
+  [some 4000+ dots]
+  ----------------------------------------------------------------------
+  Ran 3896 tests in 696.647s
+
+  OK
+
+The exact number of tests run depends on the version of Zope, the operating
+system, and the host platform. If the last line displays  `OK`_, you know
+that all tests passed. After you have verified the check, you can install the
+distribution as follows:
+
+
+1  make install
+
+Note: You have to have the correct permissions to create the installation
+directory and copy the files into it. Thus, it might be useful to become root
+to execute the command.
+
+
+Creating a Zope Instance
+::::::::::::::::::::::::
+
+When the installation is complete, Zope is available in the directory you
+specified in  `-prefix`_ or under  `/usr/local/ZopeX3-VERSION`_. However,
+Zope will not yet run, because you have not created an instance yet. You use
+instances when you want to host several Zope-based sites, using the same base
+software configuration.
+
+Creating a new instance is easy. You enter the Zope 3 installation directory
+and enter the following command:
+
+
+1  /bin/mkzopeinstance -u username:password -d path/to/instance
+
+This creates a Zope 3 instance in  `path/to/instance`_. A user who has the
+login  `username`_ and password  `password`_ is created for you, and the
+`zope.manager`_ role is assigned to it. All the configuration for the created
+instance are available in the  `path/to/instance/etc`_ directory. You need to
+review all the information in there to ensure that it fits your needs.
+
+
+Running Zope
+::::::::::::
+
+You execute Zope by calling
+
+
+1  ./bin/runzope
+
+from the instance directory. The startup output will be equal to that of the
+source Zope SVN installation.
+
+You are all done now! When the server is up and running, you can test it via
+you favorite browser, as described earlier in this chapter.
+
+
+Installing the Source Distribution in Windows Without Using make
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Installing the source distribution on Windows is possible even without
+`make`. However, you need a supported C compiler to build the package. If
+you do not have a C compiler or Cygwin installed, you can use the Windows
+Installer to install Zope 3. (See the next section for more details.)
+
+Before installing Zope 3, you need to install Python 2.3.4 or higher. On
+Windows NT/2000/XP the extension  `.py`_ is automatically associated with the
+Python executable, so you do not need to specify the Python executable when
+running a script.
+
+After you unpack the distribution, you enter the directory. You build the
+software by using this:
+
+
+1  install.py -q build
+
+When the build process is complete, you can run the tests with this:
+
+
+1  test.py -v
+
+This should give you the same output as under Unix/Linux. After the tests are
+verified, you install the distribution by using the following command:
+
+
+1  install.py -q install
+
+You have now completed the installation of Zope 3. Now you can follow the
+final steps in the previous section to create an instance and start up Zope.
+
+Note: When you install Zope 3 in Windows without using  `make`, it's really
+hard to uninstall it later, because you have to manually delete files and
+directories from various locations, including your Python's  `Lib/site-
+packages"` and  `Scripts` directories. You also have to completely remove
+the  `zopeskel` directory. If you use Windows Installer instead, an
+uninstallation program is provided and registered in the Control Panel's
+Add/Remove Programs applet.
+
+
+Installing the Binary Distribution of Zope
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Currently binary releases of Zope are available only for Windows. These
+releases assume that you have the standard Windows Python release installed.
+The Windows binary release is an executable that automatically executes
+Windows Installer. The first task is to make sure that you have the correct
+Python version installed. Zope X3.0 is released to work with Python 2.3.
+Thus, you need to install the latest Python 2.3 bug fix release. You can get
+the Windows binary installer at  `www.python.org/download/`_.
+
+If you already have a previous version of Zope X3, you need to remove it by
+using Add/Remove Programs from the Control Panel. Then you can install the
+Zope X3.0 release, which you can find at  `dev.zope.org/Zope3/Downloads`_.
+After you download it, you simply execute the installer and follow its
+instructions.
+
+When the install is complete, you need to open a Windows command prompt and
+change to the root Python 2.3 directory, usually  `C:\python23`. Then you
+execute the instance creation script using this:
+
+
+1  .\python .\Scripts\mkzopeinstance -u username:password -d
+    c:\path\to\instance
+
+This completes the installation. You can now run Zope 3 by using this:
+
+
+1  .\python c:\path\to\instance\bin\runzope
+
+The instance's  `bin`_ directory also contains some other useful scripts,
+such as the test runner.
+
+You can later use the Control Panel's Add/Remove Programs applet to uninstall
+Zope 3 again.
+
+.. _gcc: gcc
+.. _www.python.org: www.python.org
+.. _python2.3: python2.3
+.. _Makefile: Makefile
+.. _sampleprincipals.zcml: sample_principals.zcml
+.. _principals.zcml: principals.zcml
+.. _zope.: zope.
+.. _.: .
+.. _zope:grant: zope:grant
+.. _anybody: anybody
+.. _Manager: Manager
+.. _zope.conf: zope.conf
+.. _zope.conf.in: zope.conf.in
+.. _http://localhost:8080/: http://localhost:8080/
+.. _ftp://username@localhost:8021/: ftp://username@localhost:8021/
+.. _webdav://localhost:8080/: webdav://localhost:8080/
+.. _www.zope.org/Products/ZopeX3: www.zope.org/Products/ZopeX3
+.. _ZopeX3-VERSION.tgz: ZopeX3-VERSION.tgz
+.. _tar: tar
+.. _configure: configure
+.. _/usr/local/ZopeX3-VERSION: /usr/local/ZopeX3-VERSION
+.. _-prefix: --prefix
+.. _-with-python: --with-python
+.. _OK: OK
+.. _path/to/instance: path/to/instance
+.. _username: username
+.. _password: password
+.. _zope.manager: zope.manager
+.. _path/to/instance/etc: path/to/instance/etc
+.. _.py: .py
+.. _www.python.org/download/: www.python.org/download/
+.. _dev.zope.org/Zope3/Downloads: dev.zope.org/Zope3/Downloads
+.. _python23: c:\python23\
+.. _bin: bin

Added: zope3book/trunk/source/Preface.rst
===================================================================
--- zope3book/trunk/source/Preface.rst	                        (rev 0)
+++ zope3book/trunk/source/Preface.rst	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,199 @@
+Preface
+-------
+
+The preface will be a brief introduction into Zope 3 and its capabilities as
+well as into Python , the programming language Zope is written in.
+
+What is Zope?
+~~~~~~~~~~~~~
+
+What is Zope? While this sounds like a simple question that should be
+answered in a line or two, I often find myself in situations where I am
+unable to simple say: "It is an Open-Source Application Server." or "It is a
+Content Management System.". Both of these descriptions are true, but they
+are really putting a limit on Zope that simply does not exist. So before I
+will give my definition of Zope, let's collect some of the solutions Zope has
+been used for. As mentioned above, many people use Zope as a Content
+Management System, which are usually Web-based (browser managed) systems.
+Basically the users can manage the content of a page through a set of Web
+forms, workflows and editing tools. However, there is an entirely different
+CMS genre, for which Zope also has been used. Other companies, such as
+struktur AG, used Zope successfully to interface with the XML Database Tamino
+(from software AG). The second common use is Zope as a Web-Application
+server, where it is used to build Web-based applications, such as online
+shops or project management tools. Of course, Zope is also suitable for
+regular Web sites.
+
+And yet, there is a usage that we neglected so far. Zope can also be used as
+a reliable backend server managing the logistics of a company's operations.
+In fact, bluedynamics.com in Austria built a logistic software based on Zope
+2 ZClasses and a relational database that was able to handle hundreds of
+thousands transactions each day from taking credit card information and
+billing the customer up to ordering the products from the warehouse using
+XML-RPC. In my opinion this is the true strength of Zope, since it allows not
+only Web-familiar protocols to talk to, but also any other network protocol
+you can imagine. Zope 3, with its component architecture, accelerates even
+more in this area, since third party products can be easily plugged in or
+even replace some of the defaults. For example the Twisted framework can
+replace all of ZServer (the Zope Server components).
+
+Now that we have seen some of the common and uncommon uses of Zope it might
+be possible to formulate a more formal definition of Zope, just in case you
+are being asked at one point. Zope is an application and backend server
+framework that allows developers to quickly implement protocols, build
+applications (usually Web-based) and function as glue among other net-enabled
+services.
+
+Before Zope was developed, Zope Corporation was reviewing many possible
+programming languages to develop the framework, such as Java, C/C++, Perl and
+Python. After extensive research they found that only Python would give them
+the competitive advantage in comparison to the other large framework
+providers, such as IBM, BEA and others.
+
+
+Powerful Python
+~~~~~~~~~~~~~~~
+
+Python is a high-level object-oriented scripting language producing - by
+design - clean code through mandatory indentation. While Perl is also an
+interpreted scripting language, it lacks the cleanness and object-orientation
+of Python. Java, on the other hand, provides a nice object-oriented approach,
+but fails to provide powerful tools to build applications in a quick manner.
+So it is not surprising that Python is used in a wide variety of real world
+situations, like NASA, which uses Python to interpret their simulation data
+and connect various small C/C++ programs. Also, Mailman, the well-known
+mailing list manager, is being developed using Python. On the other hand, you
+have academics that use this easy-to-learn language for their introductory
+programming courses.
+
+Since Python is such an integral part of the understanding of Zope, you
+should know it well. If you are looking for some introductory documentation,
+you should start with the tutorial that is available directly from the Python
+homepage `http://www.python.org/doc/current/tut/tut.html`_. Also, there are a
+wide variety of books published by almost every publisher.
+
+
+In the beginning there was...
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Every time I am being asked to give a presentation or write a survey-like
+article about Zope, I feel the need to tell a little bit about its history,
+not only because it is a classic Open-Source story, but also because it gives
+some background on why the software behaves the way it does. So it should
+definitely not be missing here.
+
+Before Zope was born, Zope Corporation (which was originally named Digital
+Creations) developed and distributed originally three separate products
+called Bobo, Principia and Aqueduct. Bobo was an object publisher written in
+Python, which allowed one to publish objects as pages on the web. It also
+served as object database and object request broker (ORB), converting URLs
+into object paths. Most of this base was implemented by Jim Fulton in 1996
+after giving a frustrating Python CGI tutorial at the International Python
+Conference. Even though Bobo was licensed under some sort of "free" license,
+it was not totally Open-Source and Principia was the commercial big brother.
+
+In 1998, Hadar Pedhazur, a well-known venture capitalist, convinced Digital
+Creations to open up their commercial products and publish them as Open
+Source under the name Zope. Zope stands for the "Z Object Publishing
+Environment". The first Zope release was 1.7 in December 1998. Paul Everitt,
+former CEO, and all the other people at Zope Corporation converted from a
+product company into a successful consultant firm. Alone the story how Zope
+Corporation went from a proprietary, product-based to a service-based company
+is very interesting, but is up to someone else to tell.
+
+In the summer of 1999, Zope Corporation published version 2.0, which will be
+the base for the stable release until Zope 3.0 will outdate it in the next
+few years. Zope gained a lot of popularity with the 2.x series; it is now
+included in all major Linux distributions and many books have been written
+about it. Originally I was going to write this book on the Zope 2.x API, but
+with the beginning of the Zope 3.x development in late 2001, it seemed much
+more useful to do the documentation right this time and write an API book
+parallel to the development itself. In fact when these lines were originally
+written, there was no Zope Management Interface , and the initial security
+had just been recently implemented.
+
+
+Zope 3 Components
+~~~~~~~~~~~~~~~~~
+
+Zope 3 will make use of many of the latest and hottest development patterns
+and technologies, and that with "a twist" as Jim Fulton likes to describe it.
+But Zope 3 also reuses some of the parts that were developed for previous
+versions. Users will be glad to find that Acquisition (but in a very
+different form) is available again as well as Zope Page Templates and the
+Document Template Markup Language - DTML (even though with less emphasis).
+Also, there is the consensus of a Zope Management Interface in Zope 3 again,
+but is completely developed from scratch in a modular fashion so that
+components cannot be only reused, but the entire GUI can be altered as
+desired.
+
+But not only DTML, ZPT and Aquidition received a new face in Zope 3; external
+data handling has been also totally reworked to make external data play
+better together with the internal persistence framework, so that the system
+can take advantage of transactions, and event channels. Furthermore, the
+various external data sources are now handled much more generically and are
+therefore more transparent to the developer. But which external data sources
+are supported? By default Zope 3 comes with a database adaptor for Gadfly ,
+but additional adapters for PostGreSQL and other databases already exist and
+many others will follow. Data sources that support XML-RPC, like the very
+scalable XML database Tamino, could also be seamlessly inserted. However, any
+other imaginable data source can be connected to Zope by developing a couple
+of Python modules, as described in various chapters.
+
+During the last five years (the age of Zope 2) not only Zope was developed
+and improved, but also many third party products were written by members of
+the very active Zope community for their everyday need. These products range
+from Hot Fixes, Database Adaptors and Zope objects to a wide range of end
+user software, such as e-commerce, content management and e-learning systems.
+However, some of these products turned out to be generically very useful to a
+wide variety of people; actually, they are so useful, that they were
+incorporated into the Zope 3 core. The prime examples are the two
+internationalization and localization tools Localizer (by Juan David Iba?ez
+Palomar) and ZBabel (by me), whose existence shaped the implementation of the
+internationalization and localization support Zope 3 significantly. Another
+great product that made it into the Zope 3 core was originally written by
+Martijn Faassen and is called Formulator. Formulator allows the developer to
+define fields (representing some meta-data of a piece of content) that
+represent data on the one side and HTML fields on the other. One can then
+combine fields to a form and have it displayed on the Web. The second great
+feature Formulator came with was the Validator, which validated user-entered
+data on the server side. Formulator's concepts were modularized into schemas
+and forms/widgets  and incorporated in Zope 3.
+
+Altogether, the framework is much cleaner now (and more pythonic) and
+features that failed to make it into the Zope 2 core were incorporated.
+
+
+Goals of this book
+~~~~~~~~~~~~~~~~~~
+
+The main target audience for this book are developers that would like to
+develop on the Zope 3 framework itself; these are referred to as Zope
+developers in this book. But also Python programmers will find many of the
+chapters interesting, since they introduce concepts that could be used in
+other Python applications as well. Python programmers could also use this
+book as an introduction to Zope.
+
+In general the chapters have been arranged in a way so that the Zope 3
+structure itself could be easily understood. The book starts out by getting
+you setup, so that you can evaluate and develop with Zope 3. The second part
+of the book consists of chapters that are meant as introductions to various
+important concepts of Zope 3. If you are a hands-on developer like me, you
+might want to skip this part until you have done some development. The third
+and fourth part are the heart of the book, since a new content component with
+many features is developed over a course of 12 chapters. Once you understand
+how to develop content components, part five has a set of chapters that
+introduce other components that might be important for your projects. The
+fifth part is intended for people that wish to use Zope technologies outside
+of Zope 3. The emphasis on testing is one of the most important philosophical
+transitions the Zope 3 development team has undergone. Thus the last chapter
+is dedicated to various ways to write tests.
+
+Last but not least this book should encourage you to start helping us to
+develop Zope 3. This could be in the form of enhancing the Zope 3 core itself
+or by developing third party products, reaching from new content objects to
+entire applications, such as an e-commerce system. This book covers all the
+modules and packages required for you to start developing.
+
+.. _http://www.python.org/doc/current/tut/tut.html:
+    http://www.python.org/doc/current/tut/tut.html

Added: zope3book/trunk/source/conf.py
===================================================================
--- zope3book/trunk/source/conf.py	                        (rev 0)
+++ zope3book/trunk/source/conf.py	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,190 @@
+# -*- coding: utf-8 -*-
+#
+# Zope 3 Developer's Book documentation build configuration file, created by
+# sphinx-quickstart on Mon Feb 16 22:23:29 2009.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u"Zope 3 Developer's Book"
+copyright = u'2009, Zope Community'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '3.5'
+# The full version, including alpha/beta/rc tags.
+release = '3.5dev'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'ZopeDevelopersGuidedoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'Zope3DevelopersBook.tex', ur"Zope 3 Developer's Book",
+   ur'Zope Community', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True

Added: zope3book/trunk/source/index.rst
===================================================================
--- zope3book/trunk/source/index.rst	                        (rev 0)
+++ zope3book/trunk/source/index.rst	2009-02-20 11:05:58 UTC (rev 96811)
@@ -0,0 +1,17 @@
+#######################
+Zope 3 Developer's Book
+#######################
+
+.. toctree::
+   :maxdepth: 2
+
+   Preface.rst
+   InstallingZope3.rst
+
+##################
+Indices and tables
+##################
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`



More information about the Checkins mailing list