[Checkins] SVN: zope2book/trunk/ Added simple Sphinx setup and converted the introduction chapter manually to reST
Hanno Schlichting
plone at hannosch.info
Tue Feb 10 07:16:58 EST 2009
Log message for revision 96383:
Added simple Sphinx setup and converted the introduction chapter manually to reST
Changed:
_U zope2book/trunk/
D zope2book/trunk/IntroducingZope.stx
A zope2book/trunk/Makefile
D zope2book/trunk/Preface.rst
A zope2book/trunk/README.txt
A zope2book/trunk/source/
A zope2book/trunk/source/Contributions.rst
A zope2book/trunk/source/IntroducingZope.rst
A zope2book/trunk/source/Preface.rst
A zope2book/trunk/source/_static/
A zope2book/trunk/source/_templates/
A zope2book/trunk/source/conf.py
A zope2book/trunk/source/index.rst
-=-
Property changes on: zope2book/trunk
___________________________________________________________________
Added: svn:ignore
+ develop-eggs
eggs
fake-eggs
bin
parts
downloads
var
build
dist
local.cfg
*.egg-info
.installed.cfg
*.pyc
.Python
include
lib
Deleted: zope2book/trunk/IntroducingZope.stx
===================================================================
--- zope2book/trunk/IntroducingZope.stx 2009-02-10 12:08:12 UTC (rev 96382)
+++ zope2book/trunk/IntroducingZope.stx 2009-02-10 12:16:58 UTC (rev 96383)
@@ -1,463 +0,0 @@
-Introducing Zope
-
- Zope is a framework that allows developers of varying skill levels to
- build *web applications*. This chapter explains Zope's purpose, what
- problems it solves and what audience it targets in greater detail.
- It also describes what makes Zope different and more powerful than
- similar applications.
-
- *NOTE*: The moniker "Zope" stands for the *Z Object Publishing
- Environment* (the "Z" doesn't really mean anything in particular).
-
- The Static Web Site Dilemma
-
- When a company or organization goes through the process of
- developing and eventually deploying a website, one its most
- important goals is to present timely and
- up-to-date information to its website visitors.
-
- Let us consider two examples of such time-dependent sites:
-
- - a stock market information site that needs to be updated with
- new information continually, maybe as often as every five or 10
- minutes. It will also present information tailored to each
- visitor's preferred settings (portfolios, stocks to follow, etc.)
-
- - a commercial website that helps its visitors sell and buy used
- automobiles. It is usually required that such a site run
- advertisements only for cars that have not yet been sold. It is
- also important that new ads be posted immediately after
- they've been placed by a seller.
-
- These two examples describe two very different sites that
- nevertheless have one basic requirement in common: automated and
- periodic updates of the information presented. If this single
- requirement is not met, these sites will likely be
- unsuccessful.
-
- So, how does Zope work to fulfill such a requirement? To understand
- this, we need to consider how websites are perceived by their
- visitors and the basic ways in which websites can be constructed.
-
- In general, many website visitors think about navigation in terms
- of moving "from page-to-page" within a website. When they click
- a hyperlink, their browser transports them to a new page. When they
- hit their browser's *back* button, they are returned to the last page
- they visited, and so on.
-
- Some websites are *static*. A static website stores its
- information in files on a web server. Each file then represents a
- complete page on the website. This may seem like a simple and
- efficient way of creating a website; however, *updating the
- information* within those pages becomes a problem when the site consists of
- more than a few pages, and the pages, or parts of the pages, need to be updated
- frequently.
-
- The layout of text and images that are displayed in a user's web browser
- when the user visits a website are commonly composed in a simple
- language known as Hyper Text Markup Language (HTML). When a user
- visits a typical website, a chunk of text that is "marked-up"
- with formatting in HTML is transferred between the website and the user's
- browser. The browser interprets the chunk of text and displays text
- and images to the user. The chunk of text which is transferred is
- typically referred to as a *page*.
-
- To achieve this, the static website requires a person with a
- privileged level of access (sometimes termed the *webmaster*) to
- manually create and update the site's content.
-
- Typically, this is done by editing a set of text-based files on the *web
- server* (the machine that runs the website), where each file
- represents a single page. In some cases, a site-wide change to the "look-and-feel"
- of a static website requires that the webmaster visit and update
- each and every file that comprises the website.
-
- The webmaster responsible for our automobile advertising website
- has the additional responsibility of keeping the ads themselves
- fresh. If each page in the website represents an ad for a
- particular automobile, he needs to delete the pages representing
- ads that have expired and create new pages for ads that have been
- recently sold. He then needs to make sure that no hyperlinks on
- other pages point to any of these deleted pages.
-
- Obviously, this quickly becomes a lot of work. With any more than a
- few pages to update each day, this type of repetitive work
- can become pretty dull. In addition, being a human being, the webmaster
- may also make mistakes, such as forgetting to update or remove
- critical pages. While updating a static website with only 10 to 20
- pages might be dull, it's perfectly manageable. However, websites
- can typically grow to encompass thousands of files, making the
- process of "timely updates" a non-trivial (and sometimes
- impossible) task.
-
- Somewhere down the line, smart webmasters begin to think to
- themselves, "Wow, this is a lot of work. It's tedious and
- complicated, and I seem to be making a lot of mistakes. Computers
- are really good at doing tedious and complicated tasks, and they
- don't make very many mistakes. I bet my web server computer could
- automatically do a lot of the work I now do manually." And he would
- be right.
-
- At this point, the webmaster is ready to be introduced to *web
- applications*. It is in this area where Zope's strength and power
- becomes clear.
-
- What Is A Web Application?
-
- A *web application* is a computer program that users invoke by
- using a web browser to contact a web server via the Internet. Users
- and browsers are typically unaware of the difference between
- a web server that fronts a statically-built website
- and one that fronts a web application. But unlike a
- static website, a web application creates its "pages"
- *dynamically*, or on-the-fly, upon request. A website that is dynamically-
- constructed uses an a computer program to provide its content.
- These kinds of dynamic applications can be written in any number of
- computer languages.
-
- Web applications are everywhere. Common examples of web
- applications are those that let you search the web, like *Google*;
- collaborate on projects, like *SourceForge* or *ProjectPlace*; buy
- items at an auction, like *eBay*; communicate with other people over
- e-mail, like *Hotmail*; or view the latest news ala *CNN.com*.
-
- In a dynamically-constructed website, the webmaster is not
- required to visit the site "page-by-page" in order to update its
- content or style. Instead, he is able to instruct the web server
- to *generate the site's HTML pages dynamically*, where each page is
- made up of different bits of content. While each bit of content is
- unique, each can nevertheless appear in several pages if so
- instructed by the web server. In this way, the webmaster is able to create
- a common "look and feel" for the set of pages that make up his
- site. The software on the web server that generates these
- pages is the web application.
-
- If our auto-classifieds webmaster chose to construct a web
- application to maintain his classifieds system, he could maintain a
- list of "current" ads separate from the HTML pages, perhaps stored
- in a database of some kind. He could then instruct his web
- application to query this database and generate a particular chunk
- of HTML that represented an ad, or an index of ads, when a user
- visited a page in his website.
-
- A framework that allows people to construct a web application is
- often called a *web application server*, or sometimes just an
- *application server*. Zope is a web application server, as are
- competing products like "BEA WebLogic":http://www.bea.com/,
- "Macromedia ColdFusion":http://www.macromedia.com/, and (to some
- extent) "Vignette StoryServer":http://www.vignette.com/.
-
- Zope is a web application server, which is not
- a web application in itself; rather it is *framework that allows
- people to construct web applications*. Sometimes this framework is
- called an *application server*.
-
- Using some common computer programming language, an application
- server typically allows a developer to create a web application,
- but it also provides services *beyond* the basic capabilities of
- the programming language used. Examples of such services are web
- page template creation facilities, a common security model, data
- persistence, sessions, and other features that people find useful
- when constructing a typical web application.
-
-
- How You Can Benefit From Using An Application Server
-
- If you are considering writing even a moderately-sized web
- application, it is typically a good idea to start your project
- using an application server framework, unless your application
- requirements are extremely specialized. By starting a web
- application project with an application server framework (as
- opposed to a "raw" computer language, such as Java, Perl, Python, or
- C), you are able to utilize the services of the framework that have
- already been written and proven to work, and you avoid the need to
- write the functionality yourself "from scratch" in a "raw"
- language.
-
- Many application servers allow you to perform some of the following tasks:
-
- Present Dynamic Content -- You may tailor your web site's
- presentation to its users and provide users with search features.
- Application servers allow you to serve dynamic content and typically come with facilities for
- personalization, database integration, content indexing, and
- searching.
-
- Manage Your Web Site -- A small web site is easy to manage, but a
- web site that serves thousands of documents, images, and files
- requires heavy-duty management tools. It is useful to be able to
- manage your site's data, business logic, and presentation from a
- single place. An application server can typically help manage
- your content and presentation in this way.
-
- Build a Content Management System -- A fairly new breed of
- application, a *content management system* allows non-technical
- editors to create and manage content for your website. Application
- servers provide the tools with which you can build a
- content management system.
-
- Build an E-Commerce Application -- Application servers provide a
- framework in which sophisticated e-commerce applications can be
- created.
-
- Securely Manage Contributor Responsibility -- When you deal with
- more than a handful of web users, security becomes very important.
- You must be able to safely delegate tasks to different
- classes of system users. For example, folks in your engineering
- department may need to be able to manage their web pages and
- business logic, designers may need to update site templates, and
- database administrators need to manage database queries.
- Application servers typically provide a mechanism for access
- control and delegation.
-
- Provide Network Services -- You may want to produce or consume
- *network services*. A network service-enabled web site must
- to be able to accept requests from other computer programs. For
- example, if you're building a news site, you may wish to share
- your news stories with another site; you can do this by making
- the news feed a network service. Or perhaps you want to make
- products for sale on your site automatically searchable from a
- product comparison site. Application servers
- offer methods for enabling these kinds of network services.
-
- Integrate Diverse Systems -- Your existing content may be
- contained in many places: relational databases, files, separate
- web sites, and so on. Application servers typically allow you
- to present a unified view of your existing data by integrating
- diverse, third-party systems.
-
- Provide Scalability -- Application servers allow your web
- applications to scale across as many systems as necessary to
- handle the load demands of your sites.
-
- The Zope application server allows you to perform all of these
- tasks.
-
- Why Use Zope Instead of Another Application Server
-
- If you're in the business of creating web applications, Zope can
- potentially help you create them at less cost and at a faster rate
- than you could by using another competing web application server.
- This claim is backed by a number of Zope features:
-
- - Zope is free of cost and distributed under an open-source
- license. There are many non-free commercial application servers
- that are relatively expensive.
-
- - Zope itself is an inclusive platform. It ships with all the
- necessary components to begin developing an application. You
- don't need to license extra software to support Zope (e.g., a
- relational database) in order to develop your application. This
- also makes Zope very easy to install. Many other application
- servers have "hidden" costs by requiring that you license
- expensive software or configure complex, third-party
- infrastructure software before you can begin to develop your
- application.
-
- - Zope allows and encourages third-party developers to package and
- distribute ready-made applications. Due to this, Zope has a
- wide variety of integrated services and add-on products
- available for immediate use. Most of these components, like
- Zope itself, are free and open-source. Zope's popularity has
- bred a large community of application developers. Many other
- application servers do not have a large base of third-party
- support or a means by which plug-ins are so neatly packaged.
-
- - Applications created in Zope can scale almost linearly using
- Zope's built-in "Zope Enterprise Objects" (ZEO) clustering
- solution. Using ZEO, you can deploy a Zope application across
- many physical computers without needing to change much (if any)
- of your application code. Many application servers don't scale
- quite as transparently or as predictably.
-
- - Zope allows developers to create web applications using only a
- web browser. The Internet Explorer, Mozilla, Netscape, OmniWeb,
- Konqueror, and Opera browsers are all known to be able to both
- display and manipulate Zope's development environment
- (the *Zope Management Interface*, also known as the *ZMI*). Zope
- also allows developers to safely delegate application
- development duties to other developers "through the web" using
- the same interface. Very few other application servers, if any,
- deliver the same level of web functionality.
-
- - Zope provides a granular and extensible security framework. You
- can easily integrate Zope with diverse authentication and
- authorization systems, such as LDAP, Kerberos, and RADIUS,
- simultaneously and using pre-built modules. Many other application
- servers lack support for important authentication and
- authorization systems.
-
- - Zope allows teams of developers to collaborate effectively.
- Collaborative environments require tools that allow users to work
- without interfering with each other. Zope has *Undo*,
- *Versions*, *History*, and other tools to help people work safely
- together and recover from mistakes. Many other application
- servers do not provide these kinds of features.
-
- - Zope runs on most popular microcomputer operating system
- platforms: Linux, Windows, Solaris, FreeBSD, NetBSD,
- OpenBSD, and Mac OS X. Many
- other application server platforms require that you run an
- operating system of their licensor's choosing.
-
- - Zope can be extended using the interpreted
- "Python":http://www.python.org scripting language. Python is
- popular and easy to learn, and it promotes rapid development.
- Many libraries are available for Python that can be used when
- creating your own application. Many other application servers
- must be extended using compiled languages, such as Java, which
- cuts down on development speed. Many other application servers
- use less popular languages for which there are not as many
- ready-to-use library features.
-
- For examples of applications that have already been created using
- Zope, please see Zope Corporation's "case studies
- page":http://www.zope.com/CaseStudies online at Zope.com.
-
- Zope Audiences and What Zope Isn't
-
- Managing the development process of a large-scale site can be a
- difficult task. It often takes many people working together to
- create, deploy, and manage a web application.
-
- o *Information Architects* make platform decisions and keep track
- of the "big picture".
-
- o *Component Developers* create software intended for reuse and
- distribution.
-
- o *Site Developers* integrate the software written by component
- developers and native application server services, building an
- application in the process.
-
- o *Site Designers* create the site's look and feel.
-
- o *Content Managers* create and manage the site's content.
-
- o *Administrators* keep the software and environment running.
-
- o *Consumers* use the site to locate and work with useful
- content.
-
- Of the parties listed above, Zope is most useful for *component
- developers*, *site developers*, and *site designers*. These three
- groups can collaborate to produce an application using
- Zope's native services and third-party Zope *Products*. They
- typically produce applications useful to *content managers* and
- *consumers* under the guide of the *information architect*.
- *Administrators* deploy the application and tend to the
- application after it is has been created.
-
- Note that Zope is a web application construction framework that
- programmers of varying skill levels may use to create web-based
- applications. It *is not* itself an application that is ready to
- use "out of the box" for any given application. For example, Zope
- itself is not a blog, a content management system, or a
- "e-shop-in-a-box" application.
-
- However, freely available *Products* built on top of Zope offer
- these kinds of services. At the time of this writing, the
- Zope.org website catalogs roughly 300 Products that you can
- "browse":http://www.zope.org/Products and even reuse in your
- own applications. These include Products for blogging, content
- management, and internationalization, and e-commerce.
-
- Zope is not a visual design tool. Tools like Macromedia
- Dreamweaver and Adobe GoLive allow designers to create "look and
- feel". You may use these tools to successfully manage Zope-based
- web sites, but Zope itself does not replace them. You can edit
- content "through the web" using Zope, but the limitations of current
- cross-platform browser technology prevent Zope from doing as good
- a job as these kinds of tools for designing web presentation.
-
- Introduction to Zope Maintenance and The Zope Community
-
- A community of developers is responsible for maintaining and
- extending the Zope application server. Many community members are
- professional consultants, developers, and webmasters who develop
- applications using Zope for their own gain. Others are students
- and curious amateur site developers. Zope Corporation is a member
- of this community.
-
- Zope Corporation controls the distribution of the defacto,
- "canonical", official Zope version, and permits its developers, as
- well as other selected developers, to modify the distribution's
- source code.
-
- The Zope community gets together occasionally at conferences, but it
- commonly discusses all things Zope on the many Zope mailing
- lists and web sites. You can find out more about Zope-related
- mailing lists at "Zope.org's mailing list
- page":http://www.zope.org/Resources/MailingLists.
-
- Zope Corporation makes its revenue by using Zope to create web
- applications for its paying customers, by training prospective
- Zope developers, by selling support contracts to companies who use
- Zope, and by hosting Zope-powered websites; it does not make any
- direct revenues from the distribution of the Zope application
- server itself.
-
- Zope's Terms of Use and License
-
- Zope is free of cost. You are permitted to use Zope to create and
- run your web applications without paying licensing or usage fees.
- You may also include Zope in your own products and applications
- without paying royalty fees to Zope's licensor, *Zope Corporation*.
-
- Zope is distributed under an open source license, the "Zope Public
- License or 'ZPL'":http://www.zope.org/Resources/License . The
- terms of the ZPL license stipulate that you will be able to obtain
- and modify the source code for Zope.
-
- The ZPL is different than another popular open source license, the
- "GNU Public License":http://www.gnu.org . The licensing terms of
- the GPL require that if you intend to redistribute a GPL-licensed
- application, and you modify or extend the application in a
- meaningful way, when you "redistribute":
- http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
- a GPL-licensed application, you must distribute it under the terms
- of the GPL, including licensing any modifications or extensions
- you make under the GPL. You must also provide the full source
- code, including source for your modifications.
-
- However, this is *not* required for ZPL-licensed applications.
- You may modify and redistribute Zope without contributing your
- modifications back to Zope Corporation, as long as you follow the
- other terms of the license faithfully.
-
- Note that the ZPL has been
- "certified":http://www.opensource.org/licenses/zpl.php as
- "OSD":http://www.opensource.org/docs/definition.html compliant by
- the "Open Source Initiative":http://www.opensource.org/ and is
- listed as "GPL compliant":
-
- http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
- by the "Free Software Foundation":http://www.fsf.org/ .
-
- Zope History
-
-
- In 1996, Jim Fulton (the current CTO of Zope Corporation, the
- distributors of Zope) was drafted to teach a class on CGI
- programming, despite not knowing very much about the subject. CGI,
- or *common gateway interface*, programming is a commonly-used web
- development model that allows developers to construct dynamic
- websites. Jim studied all of the existing documentation on CGI on
- his way to the class. On the way back from the class, Jim
- considered what he didn't like about traditional, CGI-based
- programming environments. From these initial musings, the core of
- Zope was written on the plane flight back from the class.
-
- Zope Corporation (then known as Digital Creations) went on to
- release three open-source software packages to support web
- publishing: *Bobo*, *Document Template*, and *BoboPOS*. These
- packages were written in a language called Python, and respectively
- provided a web publishing facility, text templating, and an object
- database. Digital Creations developed a commercial
- application server based on their three open-source components.
- This product was called *Principia*. In November of 1998,
- investor Hadar Pedhazur convinced Digital Creations to open source
- Principia. These packages have evolved into what today are the
- core components of Zope.
-
- Most of Zope is written in the "Python":http://www.python.org
- scripting language, with performance-critical pieces written in C.
Added: zope2book/trunk/Makefile
===================================================================
--- zope2book/trunk/Makefile (rev 0)
+++ zope2book/trunk/Makefile 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,75 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = 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."
Property changes on: zope2book/trunk/Makefile
___________________________________________________________________
Added: svn:eol-style
+ native
Deleted: zope2book/trunk/Preface.rst
===================================================================
--- zope2book/trunk/Preface.rst 2009-02-10 12:08:12 UTC (rev 96382)
+++ zope2book/trunk/Preface.rst 2009-02-10 12:16:58 UTC (rev 96383)
@@ -1,267 +0,0 @@
-Preface
-=======
-
-Welcome to *The Zope Book*. This book is designed to introduce you
-to ``Zope``, an open-source web application server.
-
-To make effective use of the book, you should know how to use a web
-browser and have a basic understanding of the ``Hyper
-Text Markup Language`` (HTML) and ``Uniform Resource Locators`` (URLs).
-
-You don't need to be a highly-skilled programmer in order to use Zope,
-but you may find the understanding of some programming concepts (particularly
-in object-oriented programming) to be extremely helpful.
-
-How the Book Is Organized
--------------------------
-
-This book is laid out in the following chapters:
-
-1. Introducing Zope
-
- This chapter explains what Zope is and what it can do for you.
- You'll also learn about the differences between Zope and other
- web application servers.
-
-2. Zope Concepts and Architecture
-
- This chapter explains fundamental Zope concepts and describes
- the basics about Zope's architecture.
-
-3. Installing and Starting Zope
-
- This chapter explains how to install and start Zope for the
- first time. By the end of this chapter, you will have Zope
- installed and working.
-
-4. Object Orientation
-
- This chapter explains the concept of *object orientation*,
- which is the development methodology most often used to
- create Zope applications.
-
-5. Using the Zope Management Interface
-
- This chapter explains how to use Zope's web-based management
- interface. By the end of this chapter, you will be able to
- navigate around the Zope object space, copy and move objects,
- and use other basic Zope features.
-
-6. Using Basic Zope Objects
-
- This chapter introduces *objects*, which are the most
- important elements of Zope. You'll learn the basic Zope
- objects: content objects, presentation objects, and logic
- objects, and you'll build a simple application using these
- objects.
-
-7. Acquisition
-
- This chapter introduces *acquisition*, which is Zope's
- mechanism for sharing site behavior and content.
-
-8. Basic DTML
-
- This chapter introduces *DTML*, Zope's tag-based scripting
- language. You'll learn DTML syntax, its basic tags,
- and how to use DTML templates and
- scripting facilities. After reading this chapter,
- you'll be able to create dynamic web pages.
-
-9. Using Zope Page Templates
-
- This chapter introduces *Zope Page Templates*, another Zope tool
- used to create dynamic web pages. You will learn about basic
- template statements that let you insert dynamic content, and how
- to create and edit page templates.
-
-10. Creating Basic Zope Applications
-
- This chapter presents several real-world
- examples of building a Zope application. You'll learn how to
- use basic Zope objects and how they can work together to form
- basic applications.
-
-11. Users and Security
-
- This chapter looks at how Zope handles users, authentication,
- authorization, and other security-related matters.
-
-12. Advanced DTML
-
- This chapter takes a closer look at DTML. You'll learn about DTML
- security, the tricky issue of how variables are looked up
- in DTML, advanced use of basic tags,
- and the myriad of special purpose tags.
-
-13. Advanced Page Templates
-
- This chapter goes into more depth with Zope Page Templates. You will learn
- all about template statements, expression
- types, and macros, which let you reuse presentation
- elements.
-
-14. Advanced Zope Scripting
-
- This chapter covers scripting Zope with Python and Perl. You will learn
- how to write business logic in Zope using tools more
- powerful than DTML, about the idea of *scripts* in
- Zope, and about Python and Perl-based scripts. This
- chapter shows you how to add industrial-strength scripting to
- your site.
-
-17. Zope Services
-
- This chapter covers Zope objects that are considered "services," which
- don't readily fit into any of the basic "content,"
- "presentation," or "logic" object groups.
-
-15. Searching and Categorizing Content
-
- This chapter shows you how to index and search objects with
- Zope's built-in search engine: the *Catalog*. You'll learn about
- indexing concepts, different patterns for
- indexing and searching, metadata, and
- search results.
-
-16. Relational Database Connectivity
-
- This chapter describes how Zope connects to external
- relational databases. You'll learn about features that allow you
- to treat relational data as though it were Zope
- objects, and security and performance
- considerations.
-
-17. Virtual Hosting Services
-
- This chapter explains how to set up Zope in a "virtual hosting"
- environment, in which Zope sub-folders can be served as "top-level"
- host names. It includes examples that allow virtual hosting to
- be performed either "natively" or using Apache's 'mod_rewrite'
- facility.
-
-18. Sessions
-
- This chapter describes Zope's "sessioning" services, which allow
- Zope developers to "keep state" between HTTP requests.
-
-19. Scalability and ZEO
-
- This chapter covers issues and solutions for building and
- maintaining large web applications, and focuses on issues of
- management and scalability. In particular, the Zope Enterprise
- Option (ZEO) is covered in detail. You'll learn about the
- tools and techniques needed to turn a small site into a
- large-scale site, servicing many simultaneous visitors.
-
-20. Managing Zope Objects Using External Tools
-
- This chapter explains how to use tools outside of your web
- browser to manipulate Zope objects.
-
-21. Extending Zope
-
- This chapter covers extending Zope by creating your own
- classes of objects. You'll learn about *ZClasses*, how instances
- are built from classes, and how to build a ZClass and
- its attendant security and design issues. You'll also learn how to create
- Python base classes for ZClasses, and about
- the base classes that ship with Zope.
-
-22. Maintaining Zope
-
- This chapter covers Zope maintenance and administration tasks,
- such as database "packing" and Product installation.
-
-23. Appendix A: DTML Reference
-
- Reference of DTML syntax and commands.
-
-24. Appendix B: API Reference
-
- Reference of Zope object APIs.
-
-25. Appendix C: Page Template Reference
-
- Reference of Zope Page Template syntax and commands.
-
-25. Appendix D: Zope Resources
-
- Reference of "resources" which can be used to further enhance
- your Zope learning experience.
-
-26. Appendix E: DTML Name Lookup Rules
- Describes DTML's name lookup rules.
-
-Conventions Used in This Book
------------------------------
-
-This book uses the following typographical conventions:
-
-*Italic*
- Italics indicate variables and names and is also used to introduce new terms.
-
-``Fixed width``
- Fixed width text indicates objects, commands, hyperlinks, and code
- listings.
-
-Contributors to This Book
--------------------------
-
-Contributors to this book include Amos Latteier, Michel Pelletier,
-Chris McDonough, Evan Simpson, Tom Deprez, Paul Everitt, Bakhtiar
-A. Hamid, Geir Baekholt, Thomas Reulbach, Paul Winkler, Peter Sabaini,
-Andrew Veitch, Kevin Carlson, Joel Burton and the Zope Community.
-
-Amos and Michel wrote the entirety of the first edition of this
-book, and kept the online version of the book current up until Zope
-2.5.1.
-
-Tom Deprez provided much-needed editing assistance on the first
-book edition.
-
-Evan Simpson edited the chapters related to ZPT for the 2.6
-edition.
-
-Paul Everitt contributed to the first few chapters of the first
-edition, edited the first few chapters of the second edition for
-sanity and contributed some "Maintaining Zope" content for the
-2.6 edition.
-
-Bakhtiar Hamid edited the ZEO chapter for the 2.6 edition.
-
-Geir edited and extended the Users and Security chapter for the 2.6
-edition.
-
-Paul Winkler with help from Peter Sabaini expertly massaged the
-Advanced Scripting chapter into coherency for the 2.6 edition.
-
-Peter Sabaini greatly fleshed out and extended the "Maintaining Zope"
-and the "Searching and Categorizing Content" chapter for the 2.6 Edition.
-
-Andrew Veitch cheerfully performed the thankless task of
-editing and extending the Relational Database Connectivity chapter
-for the 2.6 edition.
-
-Kevin Carlson masterfully edited and expanded the Advanced DTML
-chapter.
-
-Joel Burton rewrote the ZCatalog chapter late in the 2.6 book's
-lifetime.
-
-Dario Lopez-Kästen updated the "Introducing Zope" chapter for the
-2.7 edition.
-
-Chris McDonough edited the entirety of the book for the 2.6
-edition, entirely rewrote a few chapters and added new material
-related to object orientation, using the Zope management interface,
-acquisition, installation, services, virtual hosting, sessions, and
-DTML name lookup rules.
-
-Tres Seaver moved the text into the Zope Subversion repository, and
-helped with the conversion of the text from ``Structured Text``
-to ``ReStructured Text``.
-
-Anyone who added a comment to the online BackTalk edition of the
-first online edition of this book contributed greatly. Thank you!
-
Added: zope2book/trunk/README.txt
===================================================================
--- zope2book/trunk/README.txt (rev 0)
+++ zope2book/trunk/README.txt 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,51 @@
+Zope2 Book
+==========
+
+Background
+----------
+
+The `Zope2 Book` has been the canonical source of information about Zope2 for
+a long time.
+
+During its lifetime it has seen many different places. The original location
+has been: http://www.zope.org/Documentation/Books/ZopeBook/
+
+Chris McDonough has done a great job of updating it for Zope 2.7 and
+hosting the updated copy at http://www.plope.com/Books/2_7Edition
+
+Various attempts to update the book and maintain it took place afterwards,
+for example https://code.launchpad.net/zope2book and
+http://wiki.zope.org/zope2/ZopeBook.
+
+This is yet another attempt to bring the book back to live.
+
+Technology
+----------
+
+This time we use `Sphinx`_ based on a conversion of the original content to
+reStructured as the tool.
+
+To install Sphinx you can simply do::
+
+ easy_install Sphinx
+
+You might want to use a `virtualenv`_ to protect your global Python from any
+changes.
+
+Sphinx can generate various different formats from the same source. If you
+want to build a HTML version of the book, you can do::
+
+ make html
+
+To what extent this works on Windows is unknown.
+
+Contact
+-------
+
+At this point the book is best discussed at:
+
+http://mail.zope.org/mailman/listinfo/zope-dev
+
+
+.. _Sphinx: http://sphinx.pocoo.org/
+.. _virtualenv: http://pypi.python.org/pypi/virtualenv/
Property changes on: zope2book/trunk/README.txt
___________________________________________________________________
Added: svn:eol-style
+ native
Added: zope2book/trunk/source/Contributions.rst
===================================================================
--- zope2book/trunk/source/Contributions.rst (rev 0)
+++ zope2book/trunk/source/Contributions.rst 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,60 @@
+Contributions
+=============
+
+Contributors to this book include Amos Latteier, Michel Pelletier,
+Chris McDonough, Evan Simpson, Tom Deprez, Paul Everitt, Bakhtiar
+A. Hamid, Geir Baekholt, Thomas Reulbach, Paul Winkler, Peter Sabaini,
+Andrew Veitch, Kevin Carlson, Joel Burton and the Zope Community.
+
+Amos and Michel wrote the entirety of the first edition of this
+book, and kept the online version of the book current up until Zope
+2.5.1.
+
+Tom Deprez provided much-needed editing assistance on the first
+book edition.
+
+Evan Simpson edited the chapters related to ZPT for the 2.6
+edition.
+
+Paul Everitt contributed to the first few chapters of the first
+edition, edited the first few chapters of the second edition for
+sanity and contributed some "Maintaining Zope" content for the
+2.6 edition.
+
+Bakhtiar Hamid edited the ZEO chapter for the 2.6 edition.
+
+Geir edited and extended the Users and Security chapter for the 2.6
+edition.
+
+Paul Winkler with help from Peter Sabaini expertly massaged the
+Advanced Scripting chapter into coherency for the 2.6 edition.
+
+Peter Sabaini greatly fleshed out and extended the "Maintaining Zope"
+and the "Searching and Categorizing Content" chapter for the 2.6 Edition.
+
+Andrew Veitch cheerfully performed the thankless task of
+editing and extending the Relational Database Connectivity chapter
+for the 2.6 edition.
+
+Kevin Carlson masterfully edited and expanded the Advanced DTML
+chapter.
+
+Joel Burton rewrote the ZCatalog chapter late in the 2.6 book's
+lifetime.
+
+Dario Lopez-Kästen updated the "Introducing Zope" chapter for the
+2.7 edition.
+
+Chris McDonough edited the entirety of the book for the 2.6
+edition, entirely rewrote a few chapters and added new material
+related to object orientation, using the Zope management interface,
+acquisition, installation, services, virtual hosting, sessions, and
+DTML name lookup rules.
+
+Tres Seaver moved the text into the Zope Subversion repository, and
+helped with the conversion of the text from ``Structured Text``
+to ``ReStructured Text``.
+
+Anyone who added a comment to the online BackTalk edition of the
+first online edition of this book contributed greatly. Thank you!
+
Property changes on: zope2book/trunk/source/Contributions.rst
___________________________________________________________________
Added: svn:eol-style
+ native
Copied: zope2book/trunk/source/IntroducingZope.rst (from rev 96344, zope2book/trunk/IntroducingZope.stx)
===================================================================
--- zope2book/trunk/source/IntroducingZope.rst (rev 0)
+++ zope2book/trunk/source/IntroducingZope.rst 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,487 @@
+Introducing Zope
+================
+
+Zope is a framework that allows developers of varying skill levels to
+build *web applications*. This chapter explains Zope's purpose, what
+problems it solves and what audience it targets in greater detail.
+It also describes what makes Zope different and more powerful than
+similar applications.
+
+*NOTE*: The moniker "Zope" stands for the *Z Object Publishing
+Environment* (the "Z" doesn't really mean anything in particular).
+
+
+The Static Web Site Dilemma
+---------------------------
+
+When a company or organization goes through the process of
+developing and eventually deploying a website, one its most
+important goals is to present timely and
+up-to-date information to its website visitors.
+
+Let us consider two examples of such time-dependent sites:
+
+- a stock market information site that needs to be updated with
+ new information continually, maybe as often as every five or 10
+ minutes. It will also present information tailored to each
+ visitor's preferred settings (portfolios, stocks to follow, etc.)
+
+- a commercial website that helps its visitors sell and buy used
+ automobiles. It is usually required that such a site run
+ advertisements only for cars that have not yet been sold. It is
+ also important that new ads be posted immediately after
+ they've been placed by a seller.
+
+These two examples describe two very different sites that
+nevertheless have one basic requirement in common: automated and
+periodic updates of the information presented. If this single
+requirement is not met, these sites will likely be
+unsuccessful.
+
+So, how does Zope work to fulfill such a requirement? To understand
+this, we need to consider how websites are perceived by their
+visitors and the basic ways in which websites can be constructed.
+
+In general, many website visitors think about navigation in terms
+of moving "from page-to-page" within a website. When they click
+a hyperlink, their browser transports them to a new page. When they
+hit their browser's *back* button, they are returned to the last page
+they visited, and so on.
+
+Some websites are *static*. A static website stores its
+information in files on a web server. Each file then represents a
+complete page on the website. This may seem like a simple and
+efficient way of creating a website; however, *updating the
+information* within those pages becomes a problem when the site consists of
+more than a few pages, and the pages, or parts of the pages, need to be updated
+frequently.
+
+The layout of text and images that are displayed in a user's web browser
+when the user visits a website are commonly composed in a simple
+language known as Hyper Text Markup Language (HTML). When a user
+visits a typical website, a chunk of text that is "marked-up"
+with formatting in HTML is transferred between the website and the user's
+browser. The browser interprets the chunk of text and displays text
+and images to the user. The chunk of text which is transferred is
+typically referred to as a *page*.
+
+To achieve this, the static website requires a person with a
+privileged level of access (sometimes termed the *webmaster*) to
+manually create and update the site's content.
+
+Typically, this is done by editing a set of text-based files on the *web
+server* (the machine that runs the website), where each file
+represents a single page. In some cases, a site-wide change to the "look-and-feel"
+of a static website requires that the webmaster visit and update
+each and every file that comprises the website.
+
+The webmaster responsible for our automobile advertising website
+has the additional responsibility of keeping the ads themselves
+fresh. If each page in the website represents an ad for a
+particular automobile, he needs to delete the pages representing
+ads that have expired and create new pages for ads that have been
+recently sold. He then needs to make sure that no hyperlinks on
+other pages point to any of these deleted pages.
+
+Obviously, this quickly becomes a lot of work. With any more than a
+few pages to update each day, this type of repetitive work
+can become pretty dull. In addition, being a human being, the webmaster
+may also make mistakes, such as forgetting to update or remove
+critical pages. While updating a static website with only 10 to 20
+pages might be dull, it's perfectly manageable. However, websites
+can typically grow to encompass thousands of files, making the
+process of "timely updates" a non-trivial (and sometimes
+impossible) task.
+
+Somewhere down the line, smart webmasters begin to think to
+themselves, "Wow, this is a lot of work. It's tedious and
+complicated, and I seem to be making a lot of mistakes. Computers
+are really good at doing tedious and complicated tasks, and they
+don't make very many mistakes. I bet my web server computer could
+automatically do a lot of the work I now do manually." And he would
+be right.
+
+At this point, the webmaster is ready to be introduced to *web
+applications*. It is in this area where Zope's strength and power
+becomes clear.
+
+
+What Is A Web Application?
+--------------------------
+
+A *web application* is a computer program that users invoke by
+using a web browser to contact a web server via the Internet. Users
+and browsers are typically unaware of the difference between
+a web server that fronts a statically-built website
+and one that fronts a web application. But unlike a
+static website, a web application creates its "pages"
+*dynamically*, or on-the-fly, upon request. A website that is dynamically-
+constructed uses an a computer program to provide its content.
+These kinds of dynamic applications can be written in any number of
+computer languages.
+
+Web applications are everywhere. Common examples of web
+applications are those that let you search the web, like *Google*;
+collaborate on projects, like *SourceForge* or *ProjectPlace*; buy
+items at an auction, like *eBay*; communicate with other people over
+e-mail, like *Hotmail*; or view the latest news ala *CNN.com*.
+
+In a dynamically-constructed website, the webmaster is not
+required to visit the site "page-by-page" in order to update its
+content or style. Instead, he is able to instruct the web server
+to *generate the site's HTML pages dynamically*, where each page is
+made up of different bits of content. While each bit of content is
+unique, each can nevertheless appear in several pages if so
+instructed by the web server. In this way, the webmaster is able to create
+a common "look and feel" for the set of pages that make up his
+site. The software on the web server that generates these
+pages is the web application.
+
+If our auto-classifieds webmaster chose to construct a web
+application to maintain his classifieds system, he could maintain a
+list of "current" ads separate from the HTML pages, perhaps stored
+in a database of some kind. He could then instruct his web
+application to query this database and generate a particular chunk
+of HTML that represented an ad, or an index of ads, when a user
+visited a page in his website.
+
+A framework that allows people to construct a web application is
+often called a *web application server*, or sometimes just an
+*application server*. Zope is a web application server, as are
+competing products like `BEA WebLogic`_, `Macromedia ColdFusion`_, and
+(to some extent) `Vignette StoryServer`_.
+
+.. _BEA WebLogic: http://www.bea.com/
+.. _Macromedia ColdFusion: http://www.macromedia.com/
+.. _Vignette StoryServer: http://www.vignette.com/
+
+Zope is a web application server, which is not
+a web application in itself; rather it is *framework that allows
+people to construct web applications*. Sometimes this framework is
+called an *application server*.
+
+Using some common computer programming language, an application
+server typically allows a developer to create a web application,
+but it also provides services *beyond* the basic capabilities of
+the programming language used. Examples of such services are web
+page template creation facilities, a common security model, data
+persistence, sessions, and other features that people find useful
+when constructing a typical web application.
+
+
+How You Can Benefit From Using An Application Server
+----------------------------------------------------
+
+If you are considering writing even a moderately-sized web
+application, it is typically a good idea to start your project
+using an application server framework, unless your application
+requirements are extremely specialized. By starting a web
+application project with an application server framework (as
+opposed to a "raw" computer language, such as Java, Perl, Python, or
+C), you are able to utilize the services of the framework that have
+already been written and proven to work, and you avoid the need to
+write the functionality yourself "from scratch" in a "raw"
+language.
+
+Many application servers allow you to perform some of the following tasks:
+
+Present Dynamic Content -- You may tailor your web site's
+presentation to its users and provide users with search features.
+Application servers allow you to serve dynamic content and typically
+come with facilities for personalization, database integration,
+content indexing, and searching.
+
+Manage Your Web Site -- A small web site is easy to manage, but a
+web site that serves thousands of documents, images, and files
+requires heavy-duty management tools. It is useful to be able to
+manage your site's data, business logic, and presentation from a
+single place. An application server can typically help manage
+your content and presentation in this way.
+
+Build a Content Management System -- A fairly new breed of
+application, a *content management system* allows non-technical
+editors to create and manage content for your website. Application
+servers provide the tools with which you can build a
+content management system.
+
+Build an E-Commerce Application -- Application servers provide a
+framework in which sophisticated e-commerce applications can be
+created.
+
+Securely Manage Contributor Responsibility -- When you deal with
+more than a handful of web users, security becomes very important.
+You must be able to safely delegate tasks to different
+classes of system users. For example, folks in your engineering
+department may need to be able to manage their web pages and
+business logic, designers may need to update site templates, and
+database administrators need to manage database queries.
+Application servers typically provide a mechanism for access
+control and delegation.
+
+Provide Network Services -- You may want to produce or consume
+*network services*. A network service-enabled web site must
+to be able to accept requests from other computer programs. For
+example, if you're building a news site, you may wish to share
+your news stories with another site; you can do this by making
+the news feed a network service. Or perhaps you want to make
+products for sale on your site automatically searchable from a
+product comparison site. Application servers
+offer methods for enabling these kinds of network services.
+
+Integrate Diverse Systems -- Your existing content may be
+contained in many places: relational databases, files, separate
+web sites, and so on. Application servers typically allow you
+to present a unified view of your existing data by integrating
+diverse, third-party systems.
+
+Provide Scalability -- Application servers allow your web
+applications to scale across as many systems as necessary to
+handle the load demands of your sites.
+
+The Zope application server allows you to perform all of these
+tasks.
+
+
+Why Use Zope Instead of Another Application Server
+--------------------------------------------------
+
+If you're in the business of creating web applications, Zope can
+potentially help you create them at less cost and at a faster rate
+than you could by using another competing web application server.
+This claim is backed by a number of Zope features:
+
+- Zope is free of cost and distributed under an open-source
+ license. There are many non-free commercial application servers
+ that are relatively expensive.
+
+- Zope itself is an inclusive platform. It ships with all the
+ necessary components to begin developing an application. You
+ don't need to license extra software to support Zope (e.g., a
+ relational database) in order to develop your application. This
+ also makes Zope very easy to install. Many other application
+ servers have "hidden" costs by requiring that you license
+ expensive software or configure complex, third-party
+ infrastructure software before you can begin to develop your
+ application.
+
+- Zope allows and encourages third-party developers to package and
+ distribute ready-made applications. Due to this, Zope has a
+ wide variety of integrated services and add-on products
+ available for immediate use. Most of these components, like
+ Zope itself, are free and open-source. Zope's popularity has
+ bred a large community of application developers. Many other
+ application servers do not have a large base of third-party
+ support or a means by which plug-ins are so neatly packaged.
+
+- Applications created in Zope can scale almost linearly using
+ Zope's built-in "Zope Enterprise Objects" (ZEO) clustering
+ solution. Using ZEO, you can deploy a Zope application across
+ many physical computers without needing to change much (if any)
+ of your application code. Many application servers don't scale
+ quite as transparently or as predictably.
+
+- Zope allows developers to create web applications using only a
+ web browser. The Internet Explorer, Mozilla, Netscape, OmniWeb,
+ Konqueror, and Opera browsers are all known to be able to both
+ display and manipulate Zope's development environment
+ (the *Zope Management Interface*, also known as the *ZMI*). Zope
+ also allows developers to safely delegate application
+ development duties to other developers "through the web" using
+ the same interface. Very few other application servers, if any,
+ deliver the same level of web functionality.
+
+- Zope provides a granular and extensible security framework. You
+ can easily integrate Zope with diverse authentication and
+ authorization systems, such as LDAP, Kerberos, and RADIUS,
+ simultaneously and using pre-built modules. Many other application
+ servers lack support for important authentication and
+ authorization systems.
+
+- Zope allows teams of developers to collaborate effectively.
+ Collaborative environments require tools that allow users to work
+ without interfering with each other. Zope has *Undo*,
+ *Versions*, *History*, and other tools to help people work safely
+ together and recover from mistakes. Many other application
+ servers do not provide these kinds of features.
+
+- Zope runs on most popular microcomputer operating system
+ platforms: Linux, Windows, Solaris, FreeBSD, NetBSD,
+ OpenBSD, and Mac OS X. Many
+ other application server platforms require that you run an
+ operating system of their licensor's choosing.
+
+- Zope can be extended using the interpreted `Python`_ scripting language.
+ Python is popular and easy to learn, and it promotes rapid development.
+ Many libraries are available for Python that can be used when
+ creating your own application. Many other application servers
+ must be extended using compiled languages, such as Java, which
+ cuts down on development speed. Many other application servers
+ use less popular languages for which there are not as many
+ ready-to-use library features.
+
+.. _Python: http://www.python.org/
+
+
+Zope Audiences and What Zope Isn't
+----------------------------------
+
+Managing the development process of a large-scale site can be a
+difficult task. It often takes many people working together to
+create, deploy, and manage a web application.
+
+*Information Architects*
+ make platform decisions and keep track of the "big picture".
+
+*Component Developers*
+ create software intended for reuse and distribution.
+
+*Site Developers*
+ integrate the software written by component developers and native
+ application server services, building an application in the process.
+
+*Site Designers*
+ create the site's look and feel.
+
+*Content Managers*
+ create and manage the site's content.
+
+*Administrators*
+ keep the software and environment running.
+
+*Consumers*
+ use the site to locate and work with useful content.
+
+Of the parties listed above, Zope is most useful for *component
+developers*, *site developers*, and *site designers*. These three
+groups can collaborate to produce an application using
+Zope's native services and third-party Zope *Products*. They
+typically produce applications useful to *content managers* and
+*consumers* under the guide of the *information architect*.
+*Administrators* deploy the application and tend to the
+application after it is has been created.
+
+Note that Zope is a web application construction framework that
+programmers of varying skill levels may use to create web-based
+applications. It *is not* itself an application that is ready to
+use "out of the box" for any given application. For example, Zope
+itself is not a blog, a content management system, or a
+"e-shop-in-a-box" application.
+
+However, freely available *Products* built on top of Zope offer
+these kinds of services. At the time of this writing, the
+Zope.org website catalogs roughly 300 `Products that you can
+browse`_ and even reuse in your own applications. These include Products
+for blogging, content management, and internationalization, and e-commerce.
+
+.. _Products that you can browse: http://www.zope.org/Products/
+
+Zope is not a visual design tool. Tools like Macromedia
+Dreamweaver and Adobe GoLive allow designers to create "look and
+feel". You may use these tools to successfully manage Zope-based
+web sites, but Zope itself does not replace them. You can edit
+content "through the web" using Zope, but the limitations of current
+cross-platform browser technology prevent Zope from doing as good
+a job as these kinds of tools for designing web presentation.
+
+
+Introduction to Zope Maintenance and The Zope Community
+-------------------------------------------------------
+
+A community of developers is responsible for maintaining and
+extending the Zope application server. Many community members are
+professional consultants, developers, and webmasters who develop
+applications using Zope for their own gain. Others are students
+and curious amateur site developers. Zope Corporation is a member
+of this community.
+
+Zope Corporation controls the distribution of the defacto,
+"canonical", official Zope version, and permits its developers, as
+well as other selected developers, to modify the distribution's
+source code.
+
+The Zope community gets together occasionally at conferences, but it
+commonly discusses all things Zope on the many Zope mailing
+lists and web sites. You can find out more about Zope-related
+mailing lists at `Zope.org's mailing list page`_.
+
+.. _Zope.org's mailing list page: http://www.zope.org/Resources/MailingLists
+
+Zope Corporation makes its revenue by using Zope to create web
+applications for its paying customers, by training prospective
+Zope developers, by selling support contracts to companies who use
+Zope, and by hosting Zope-powered websites; it does not make any
+direct revenues from the distribution of the Zope application
+server itself.
+
+
+Zope's Terms of Use and License
+-------------------------------
+
+Zope is free of cost. You are permitted to use Zope to create and
+run your web applications without paying licensing or usage fees.
+You may also include Zope in your own products and applications
+without paying royalty fees to Zope's licensor, *Zope Corporation*.
+
+Zope is distributed under an open source license, the `Zope Public
+License or 'ZPL'`_. The terms of the ZPL license stipulate that you will
+be able to obtain and modify the source code for Zope.
+
+.. _Zope Public License or 'ZPL': http://www.zope.org/Resources/License
+
+The ZPL is different than another popular open source license, the
+`GNU Public License`_. The licensing terms of
+the GPL require that if you intend to redistribute a GPL-licensed
+application, and you modify or extend the application in a
+meaningful way, when you `redistribute`_
+a GPL-licensed application, you must distribute it under the terms
+of the GPL, including licensing any modifications or extensions
+you make under the GPL. You must also provide the full source
+code, including source for your modifications.
+
+.. _GNU Public License: http://www.gnu.org
+.. _redistribute: http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
+
+However, this is *not* required for ZPL-licensed applications.
+You may modify and redistribute Zope without contributing your
+modifications back to Zope Corporation, as long as you follow the
+other terms of the license faithfully.
+
+Note that the ZPL has been `certified`_ as `OSD`_ compliant by
+the `Open Source Initiative`_ and is listed as `GPL compliant`_
+by the `Free Software Foundation`_.
+
+.. _certified: http://www.opensource.org/licenses/zpl.php
+.. _OSD: http://www.opensource.org/docs/definition.html
+.. _Open Source Initiative: http://www.opensource.org/
+.. _GPL compliant: http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
+.. _Free Software Foundation: http://www.fsf.org/
+
+
+Zope History
+------------
+
+In 1996, Jim Fulton (the current CTO of Zope Corporation, the
+distributors of Zope) was drafted to teach a class on CGI
+programming, despite not knowing very much about the subject. CGI,
+or *common gateway interface*, programming is a commonly-used web
+development model that allows developers to construct dynamic
+websites. Jim studied all of the existing documentation on CGI on
+his way to the class. On the way back from the class, Jim
+considered what he didn't like about traditional, CGI-based
+programming environments. From these initial musings, the core of
+Zope was written on the plane flight back from the class.
+
+Zope Corporation (then known as Digital Creations) went on to
+release three open-source software packages to support web
+publishing: *Bobo*, *Document Template*, and *BoboPOS*. These
+packages were written in a language called Python, and respectively
+provided a web publishing facility, text templating, and an object
+database. Digital Creations developed a commercial
+application server based on their three open-source components.
+This product was called *Principia*. In November of 1998,
+investor Hadar Pedhazur convinced Digital Creations to open source
+Principia. These packages have evolved into what today are the
+core components of Zope.
+
+Most of Zope is written in the `Python`_ scripting language, with
+performance-critical pieces written in C.
Copied: zope2book/trunk/source/Preface.rst (from rev 96344, zope2book/trunk/Preface.rst)
===================================================================
--- zope2book/trunk/source/Preface.rst (rev 0)
+++ zope2book/trunk/source/Preface.rst 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,208 @@
+Preface
+=======
+
+Welcome to *The Zope Book*. This book is designed to introduce you
+to ``Zope2``, an open-source web application server.
+
+To make effective use of the book, you should know how to use a web
+browser and have a basic understanding of the ``Hyper
+Text Markup Language`` (HTML) and ``Uniform Resource Locators`` (URLs).
+
+You don't need to be a highly-skilled programmer in order to use Zope2,
+but you may find the understanding of some programming concepts (particularly
+in object-oriented programming) to be extremely helpful.
+
+
+How the Book Is Organized
+-------------------------
+
+This book is laid out in the following chapters:
+
+1. Introducing Zope
+
+ This chapter explains what Zope is and what it can do for you.
+ You'll also learn about the differences between Zope and other
+ web application servers.
+
+2. Zope Concepts and Architecture
+
+ This chapter explains fundamental Zope concepts and describes
+ the basics about Zope's architecture.
+
+3. Installing and Starting Zope
+
+ This chapter explains how to install and start Zope for the
+ first time. By the end of this chapter, you will have Zope
+ installed and working.
+
+4. Object Orientation
+
+ This chapter explains the concept of *object orientation*,
+ which is the development methodology most often used to
+ create Zope applications.
+
+5. Using the Zope Management Interface
+
+ This chapter explains how to use Zope's web-based management
+ interface. By the end of this chapter, you will be able to
+ navigate around the Zope object space, copy and move objects,
+ and use other basic Zope features.
+
+6. Using Basic Zope Objects
+
+ This chapter introduces *objects*, which are the most
+ important elements of Zope. You'll learn the basic Zope
+ objects: content objects, presentation objects, and logic
+ objects, and you'll build a simple application using these
+ objects.
+
+7. Acquisition
+
+ This chapter introduces *acquisition*, which is Zope's
+ mechanism for sharing site behavior and content.
+
+8. Basic DTML
+
+ This chapter introduces *DTML*, Zope's tag-based scripting
+ language. You'll learn DTML syntax, its basic tags,
+ and how to use DTML templates and
+ scripting facilities. After reading this chapter,
+ you'll be able to create dynamic web pages.
+
+9. Using Zope Page Templates
+
+ This chapter introduces *Zope Page Templates*, another Zope tool
+ used to create dynamic web pages. You will learn about basic
+ template statements that let you insert dynamic content, and how
+ to create and edit page templates.
+
+10. Creating Basic Zope Applications
+
+ This chapter presents several real-world
+ examples of building a Zope application. You'll learn how to
+ use basic Zope objects and how they can work together to form
+ basic applications.
+
+11. Users and Security
+
+ This chapter looks at how Zope handles users, authentication,
+ authorization, and other security-related matters.
+
+12. Advanced DTML
+
+ This chapter takes a closer look at DTML. You'll learn about DTML
+ security, the tricky issue of how variables are looked up
+ in DTML, advanced use of basic tags,
+ and the myriad of special purpose tags.
+
+13. Advanced Page Templates
+
+ This chapter goes into more depth with Zope Page Templates. You will learn
+ all about template statements, expression
+ types, and macros, which let you reuse presentation
+ elements.
+
+14. Advanced Zope Scripting
+
+ This chapter covers scripting Zope with Python and Perl. You will learn
+ how to write business logic in Zope using tools more
+ powerful than DTML, about the idea of *scripts* in
+ Zope, and about Python and Perl-based scripts. This
+ chapter shows you how to add industrial-strength scripting to
+ your site.
+
+17. Zope Services
+
+ This chapter covers Zope objects that are considered "services," which
+ don't readily fit into any of the basic "content,"
+ "presentation," or "logic" object groups.
+
+15. Searching and Categorizing Content
+
+ This chapter shows you how to index and search objects with
+ Zope's built-in search engine: the *Catalog*. You'll learn about
+ indexing concepts, different patterns for
+ indexing and searching, metadata, and
+ search results.
+
+16. Relational Database Connectivity
+
+ This chapter describes how Zope connects to external
+ relational databases. You'll learn about features that allow you
+ to treat relational data as though it were Zope
+ objects, and security and performance
+ considerations.
+
+17. Virtual Hosting Services
+
+ This chapter explains how to set up Zope in a "virtual hosting"
+ environment, in which Zope sub-folders can be served as "top-level"
+ host names. It includes examples that allow virtual hosting to
+ be performed either "natively" or using Apache's 'mod_rewrite'
+ facility.
+
+18. Sessions
+
+ This chapter describes Zope's "sessioning" services, which allow
+ Zope developers to "keep state" between HTTP requests.
+
+19. Scalability and ZEO
+
+ This chapter covers issues and solutions for building and
+ maintaining large web applications, and focuses on issues of
+ management and scalability. In particular, the Zope Enterprise
+ Option (ZEO) is covered in detail. You'll learn about the
+ tools and techniques needed to turn a small site into a
+ large-scale site, servicing many simultaneous visitors.
+
+20. Managing Zope Objects Using External Tools
+
+ This chapter explains how to use tools outside of your web
+ browser to manipulate Zope objects.
+
+21. Extending Zope
+
+ This chapter covers extending Zope by creating your own
+ classes of objects. You'll learn about *ZClasses*, how instances
+ are built from classes, and how to build a ZClass and
+ its attendant security and design issues. You'll also learn how to create
+ Python base classes for ZClasses, and about
+ the base classes that ship with Zope.
+
+22. Maintaining Zope
+
+ This chapter covers Zope maintenance and administration tasks,
+ such as database "packing" and Product installation.
+
+23. Appendix A: DTML Reference
+
+ Reference of DTML syntax and commands.
+
+24. Appendix B: API Reference
+
+ Reference of Zope object APIs.
+
+25. Appendix C: Page Template Reference
+
+ Reference of Zope Page Template syntax and commands.
+
+25. Appendix D: Zope Resources
+
+ Reference of "resources" which can be used to further enhance
+ your Zope learning experience.
+
+26. Appendix E: DTML Name Lookup Rules
+ Describes DTML's name lookup rules.
+
+
+Conventions Used in This Book
+-----------------------------
+
+This book uses the following typographical conventions:
+
+*Italic*
+ Italics indicate variables and names and is also used to introduce new terms.
+
+``Fixed width``
+ Fixed width text indicates objects, commands, hyperlinks, and code
+ listings.
Added: zope2book/trunk/source/conf.py
===================================================================
--- zope2book/trunk/source/conf.py (rev 0)
+++ zope2book/trunk/source/conf.py 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,190 @@
+# -*- coding: utf-8 -*-
+#
+# Zope2 Book documentation build configuration file, created by
+# sphinx-quickstart on Tue Feb 10 00:26:02 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'Zope2 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 = '2.12'
+# The full version, including alpha/beta/rc tags.
+release = '2.12dev'
+
+# 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 = 'Zope2Bookdoc'
+
+
+# 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', 'Zope2Book.tex', ur'Zope2 Book Documentation',
+ 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
Property changes on: zope2book/trunk/source/conf.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: zope2book/trunk/source/index.rst
===================================================================
--- zope2book/trunk/source/index.rst (rev 0)
+++ zope2book/trunk/source/index.rst 2009-02-10 12:16:58 UTC (rev 96383)
@@ -0,0 +1,24 @@
+The Zope2 Book
+==============
+
+Welcome to *The Zope Book*. This book is designed to introduce you
+to `Zope2`, an open-source web application server.
+
+
+Contents
+--------
+
+.. toctree::
+ :maxdepth: 1
+
+ Preface.rst
+ IntroducingZope.rst
+ Contributions.rst
+
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`search`
+
Property changes on: zope2book/trunk/source/index.rst
___________________________________________________________________
Added: svn:eol-style
+ native
More information about the Checkins
mailing list