Flavours of Zope
- updated 8th March 2010
Zopish Web Platforms
- BlueBeam (previously Zope 3)
- Grok
- Repose.bfg
- ZCA - Zope Component Architecture
- Zope ToolKit
- Zope 2
Zope Based Applications
BlueBream (previously known as Zope 3)
BlueBream is a web framework written in the Python programming language. BlueBream is free/open source software, owned by the Zope Foundation, licensed under the Zope Public License (BSD like, GPL compatible license). Prior to 2010 Blue Bream was known as Zope 3.
A few of the features which distinguish BlueBream among Python web frameworks.
-
BlueBream is built on top of the Zope Tool Kit (ZTK), a distillation of many years of experience in meeting demanding requirements for stable, scalable software.
-
BlueBream leverages the power of Buildout a build system written in Python.
-
BlueBream uses the ZODB transactional object database, providing extremely powerful and easy to use persistence.
-
BlueBream uses ZCML, an XML based configuration language for registering components, providing limitless flexibility. If you don’t need the power of ZCML and the complexity it adds, try GROK, which adds a layer replacing the declarative configuration of ZCML with conventions and declarations in standard Python.
-
BlueBream features the Zope Component Architecture (ZCA) which implements Separation of concerns to create highly cohesive reusable components (zope.component).
-
BlueBream supports WSGI using Paste, PasteScript, and PasteDeploy.
-
BlueBream includes a number of components which provide well tested implementation of common requirements. A few are of these are:
zope.publisher publishes Python objects on the web, it is geared towards WSGI compatibility
zope.security provides a generic mechanism supporting pluggable security policies
zope.testing and zope.testbrowser offer unit and functional testing frameworks
zope.pagetemplate is an xhtml-compliant templating language
zope.schema and zope.formlib provide a schema engine and automatic form generation machinery.
Source: http://bluebream.muthukadan.net/doc/1.0/introduction.html
The Zope Toolkit (ZTK)
The Zope Toolkit (ZTK) is a set of libraries intended for reuse by projects to develop web applications or web frameworks. It is developed by the contributors of the Zope Foundation.
The whole collection of ZTK libraries are used in various web frameworks and web application servers. Two of these are managed by the Zope project: Zope 3 and Grok. If you install one of these systems, you will get the ZTK along with it automatically.
The Steering Group is there to help guide the development of the ZTK.
The Zope Toolkit started as “Zope 3”. Zope 3 was the intended successor to the Zope 2 platform. It didn’t work out that way. Zope 3 can be used, but Zope 2 is still alive and well, and in fact started to use some parts of the Zope 3 codebase. We also have the Grok project came along that reused Zope 3 to build a related but separate web framework.
We realized that the term “Zope 3” was overloaded, meaning both the set of libraries shared by Zope 2 and Grok, and the actual web application server with a user interface that you can install. We therefore introduced the term Zope Toolkit so we could think about this set of shared libraries independently and manage them that way.
The ZTK does not include the ZMI.
Source: http://docs.zope.org/zopetoolkit/
Grok
Grok is a web application framework for Python developers. It is aimed at both beginners and very experienced web developers. Grok has an emphasis on agile development. Grok is easy and powerful.
You will likely have heard about many different web frameworks for Python as well as other languages. Why should you consider Grok?
• Grok offers a lot of building blocks for your web application.
• Grok is informed by a lot of hard-earned wisdom.
Grok accomplishes this by using at its core the Zope Toolkit (ZTK), an advanced object-oriented set of libraries intended for reuse by web frameworks. While Grok uses the Zope Toolkit, and benefits a lot from it, you can get started with Grok without any special knowledge of the ZTK.
Some aspects of Grok development require more detailed knowledge of the ZTK libraries (authentication, for example) but it is our goal to make Grok a more approachable, easier to learn framework over time. If you find yourself bonking when trying to accomplish something, please let us know where you are struggling.
Grok doesn't require you to edit cryptic configuration files. Instead you just program in Python and create HTML templates. Beyond this, Grok also offers a wide range of built-in features at your fingertips, from automated form generation to an object database. This way, Grok gives you both power and quick satisfaction during development. Grok is fun.
Grok has an extensive tutorial that helps you to get started. And thanks to grokproject, you'll be able to create your first web app with Grok in no time.
Features:
Through the ZTK, Grok offers a very wide range of building blocks for your web application. What's more, ZTK libraries and components are typically rock-solid due to extensive unit-testing and well-specified API documentation.
Grok, thanks to the ZTK, is informed by hard-earned wisdom. The core of the ZTK has been under continuous development since 2001. The ZTK's design in turn is based on experience with the Zope 2 platform, which has been under continuous development (starting with Bobo, Principia and then Zope 1) since 1997. The Zope community is supported by an independent foundation, the Zope Foundation.
The Zope community has been around for a while. We've built a lot and learned a lot. We are in this for the long run.
Future:
Successful web applications aren't built for a day - such an application will need to be maintained, extended, evolved, over a period of many years. Zope developers really know this. Grok, through the ZTK, offers an architecture that enables your application to grow over time.
Source: http://grok.zope.org/about/why-grokRepose.bfg usually known as BFG
The first release of repoze.bfg was made in July 2008.
Simplicity - repoze.bfg attempts to be a “pay only for what you eat” framework which delivers results even if you have only partial knowledge. Other frameworks may expect you to understand many concepts and technologies fully before you can be truly productive. repoze.bfg doesn’t force you to use any particular technology to produce an application, and we try to keep the core set of concepts you need to understand to a minimum.
A Sense of Fun - Developing a repoze.bfg application should not feel
“enterprisey”. We like to keep things down-to-earth.
Minimalism - repoze.bfg provides only the very basics: URL to code
mapping, templating, security, and resources. There is not
much more to the framework than these pieces: you are expected to
provide the rest.
Documentation - because repoze.bfg is minimal, it’s relatively easy to keep its documentation up-to-date, which is helpful to bring new developers up to speed. It’s our goal that nothing remain undocumented about repoze.bfg.
Speed - repoze.bfg is faster than many other popular Python web frameworks for common tasks such as templating and simple response generation. The “hardware is cheap” mantra has its limits when you’re responsible for managing a great many machines: the fewer you need, the less pain you’ll have.
Familiarity - The repoze.bfg framework is a canonization of practices that “fit the brains” of its authors.
Trustability repoze.bfg is developed conservatively and tested exhaustively. If it ain’t tested, it’s broke. Every release of repoze.bfg has 100% statement coverage via unit tests.
Openness - like Python, the repoze.bfg software is distributed under a permissive open source license.
Beginnings:
repoze.bfg was inspired by Zope, Pylons and Django. As a result, repoze.bfg borrows several concepts and features from each, combining them into a unique web framework.
Many features of repoze.bfg trace their origins back to Zope. Like Zope applications, repoze.bfg applications can be configured via a set of declarative configuration files. Like Zope applications, repoze.bfg applications can be easily extended: if you obey certain constraints, the application you produce can be reused, modified, re-integrated, or extended by third-party developers without forking the original application. The concepts of traversal and declarative security in repoze.bfg were pioneered first in Zope.
The repoze.bfg concept of URL dispatch is inspired by the Routes system used by Pylons. Like Pylons, repoze.bfg is mostly policy-free. It makes no assertions about which database you should use, and its built-in templating facilities are included only for convenience. In essence, it only supplies a mechanism to map URLs to view code, along with a set of conventions for calling those views. You are free to use third-party components that fit your needs in your applications.
The concepts of view and model are used by repoze.bfg mostly as they would be by Django. repoze.bfg has a documentation culture more like Django’s than like Zope’s.
Like Pylons, but unlike Zope, a repoze.bfg application developer may use completely imperative code to perform common framework configuration tasks such as adding a view or a route. In Zope, ZCML is typically required for similar purposes. In Grok, a Zope-based web framework, decorator objects and class-level declarations are used for this purpose. repoze.bfg supports ZCML and decorator-based configuration, but does not require either. See Application Configuration for more information.
Also unlike Zope and unlike other “full-stack” frameworks such as Django, repoze.bfg makes no assumptions about which persistence mechanisms you should use to build an application. Zope applications are typically reliant on ZODB; repoze.bfg allows you to build ZODB applications, but it has no reliance on the ZODB software. Likewise, Django tends to assume that you want to store your application’s data in a relational database. repoze.bfg makes no such assumption; it allows you to use a relational database but doesn’t encourage or discourage the decision.
Other Python web frameworks advertise themselves as members of a class of web frameworks named model-view-controller frameworks. Insofar as this term has been claimed to represent a class of web frameworks, repoze.bfg also generally fits into this class.
Source: http://docs.repoze.org/bfg/1.2/narr/introduction.html#what-is-repoze
ZCA - Zope Component Architecture
Zope Component Architecture (ZCA) is a Python framework for supporting component based design and programming. It is very well suited to developing large Python software systems. The ZCA is not specific to the Zope web application server: it can be used for developing any Python application. Maybe it should be called as Python Component Architecture.
The ZCA is all about using Python objects effectively. Components are reusable objects with introspectable interfaces. An interface is an object that describes how you work with a particular component. In other words, component provides an interface implemented in a class, or any other callable object. It doesn't matter how the component is implemented, the important part is that it comply with its interface contracts. Using ZCA, you can spread the complexity of systems over multiple cooperating components. It helps you to create two basic kinds of components: adapter and utility.
There are three core packages related to the ZCA:
- zope.interface is used to define the interface of a component.
- zope.event provides a simple event system.
- zope.component deals with creation, registration and retrieval of components.
Remember, the ZCA is not the components themselves, rather it is about creating, registering, and retrieving components. Remember also, an adapter is a normal Python class (or a factory in general) and utility is a normal Python callable object.
The ZCA framework is developed as part of the Zope 3 project. As noted earlier, it is a pure Python framework, so it can be used in any kind of Python application. Currently Zope 3, Zope 2 and Grok projects use this framework extensively. There are many other projects including non-web applications using it [1].
Source: Baiju M
Zope 2
Zope 2 is a full-featured application server for building scalable
and secure web-applications. It is playing in the same league as J2EE
or Windows ASP/.NET based solutions. The primary focus of Zope 2 is not
on building simple web sites, but it supports building sites through
the web (TTW). Zope 2 is the primary choice for building web
applications in Python when you need out of the box functionality for
internationalization, unicode support, standardized access to
relational databases, an integrated search engine in combination with a
flexible programming environment.
Source: http://zope2.zope.org/about-zope-2/the-zope-eco-system
Zope-based applications and solutions
Plone
A powerful, flexible Content Management Solution that is easy to install, use and extend.
Plone lets non-technical people create and maintain information for a public website or an intranet using only a web browser. Plone is easy to understand and use — allowing users to be productive in just half an hour — yet offers a wealth of community-developed add-ons and extensibility to keep meeting your needs for years to come.
Blending the creativity and speed of open source with a technologically advanced Python back-end, Plone offers superior security without sacrificing power or extensibility.
The Plone community is an incredibly diverse group that bridges many types and sizes of organizations, many countries and languages, and everything from technical novices to hardcore programmers. Out of that diversity comes an attention to detail in code, function, user interface and ease of use that makes Plone one of the top 2% of open source projects worldwide. (Source: Ohloh)
Plone’s intellectual property and trademarks are protected by the non-profit Plone Foundation. This means that Plone’s future is not in the hands of any one person or company.
Thousands of websites across large and small businesses, education, government, non-profits, sciences, media and publishing are using Plone to solve their content management needs. This is supported by a global network of over 300 solution providers in more than 50 countries. Looking for a hosting provider to host your Plone site for you? You can find a list of providers and consultants on plone.net.
We are very proud to be known by the company we keep. Organizations as diverse as NASA, Oxfam, Amnesty International, Nokia, eBay, Novell, the State Universities of Pennsylvania and Utah, as well as the Brazilian and New Zealand governments — all use Plone.
Plone is open on many levels. It runs on Linux, Windows, Mac OS X, FreeBSD and Solaris — and offers a straightforward installation to get you up and running in minutes. It has been translated into more than 40 languages, and is developed with an unflinching emphasis on usability and standards compliance.
Need a CMS that integrates with Active Directory, Salesforce, LDAP, SQL, Web Services. LDAP or Oracle? Plone does. Need to be sure your website is accessible? Plone meets or exceeds US Government 508 and W3C’s WAI-AA standards.
Worried about security? As an open source product, a large number of developers frequently scrutinize the code for any potential security issues. This proactive approach is better than the wait-and-see approach in proprietary software that relies on keeping security issues a secret instead of resolving them outright.
Based on Python and the Zope libraries, Plone has a technological edge that has has helped it attain the best security track record of any major CMS (Source: CVE). In fact, security is a major reason why many CMS users are switching to Plone.
The market is full of open source content management systems, so it is important to do your homework before choosing one for your organization. Remember that a simple CMS may work out great to start with, but lead to problems with scaling or migration when you need more capability than it can provide. At the other end of the spectrum, a powerful CMS can be so difficult to learn and maintain that it never gains acceptance to users. Make sure the CMS you choose meets your needs today without compromising future growth.
We hope you’ll take the time to learn more about Plone and what it can do for you. We’ve created this site specifically as a gateway to information on how to get started with Plone, as well as information on development, solutions providers, events, news, and the wealth of product add-ons created by the community.
Silva
Silva is a powerful CMS for organizations that manage multiple or complex websites. Content is stored in clean and futureproof XML, independent of layout and presentation. Features include versioning, workflow system, integral visual editor, content reuse, sophisticated access control, multi-site management, extensive import/export facilities, fine-grained templating, and hi-res image storage and manipulation. Silva has an open source (BSD) license.
Many large organizations and universities use Silva; see our references page for a list.
Silva supports a separation between authors who create new content and editors who decide whether content actually gets published. It also allows delegation of editing the responsibilities for a section of a site to others. This avoids a single-person bottleneck without the loss of editorial control.
To assist in the publication process, Silva implements workflow where multiple versions of the same document are stored. A document may be published while a newer version can be edited simultaneously. Silva’s workflow supports email notification to streamline the production process.
Behind the scenes, Silva stores content in XML. This leads to several important advantages:
- The same content can be used in different media, such as the web, paper, or word processor content. Web publication of content is native to Silva, but Silva also has export filters to PDF and MS Word, and more can be built when the demand arises.
- The content is future proofed and not out of date as soon as you want to use a new system or present it in a different way.
- The structuring of the content facilitates more sophisticated searching and indexing.
Silva is extensible with new document types and other types of content objects.
Source: http://infrae.com/products/silva
~ Summary by Jan Smith

