Zope: Content Management Framework
Total Page:16
File Type:pdf, Size:1020Kb
Zope: Content Management Framework An internship report submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in APPLIED COMPUTER SCIENCE By Ramakrishna Reddy Enugala Matriculation # 1338250 MS in Applied Computer Science [email protected] Internship done at Chair of Computer Architecture Institute of Computer Science, Albert Ludwigs University, Georges Köhler Allee, Gebäude 51 D-79110 Freiburg im Breisgau Germany Introduction I have done my internship in The Chair of Computer Architecture. The Duration of my internship was 10 weeks, beginning on 5th of August and lasted up to 12th October, 2002. During this period I was working under the guidance of Prof. Dr. Bernd Becker and Dipl.-Inf. Marc Herbstritt. My task during this period was to get familiar with ZOPE and to verify whether or not the features provided by ZOPE satisfy the needs of the Chair of Computer Architecture to setup a Content management System (CMS). In order to accomplish this task I developed a beta site( on the local server) using ZOPE to test whether or not it meets our requirements. Desirable changes in CMS(Implementing the dynamic menu structure, etc.) were done using PYTHON programming language. Enterprises today have lot of content to deal with. This includes information generated by different departments, divisions and research facilities, corporate policies and procedures, product overviews and presentations, press releases, etc. A good Content Management System must make it possible for teams or individuals in varied roles to collaboratively add, edit and delete content. Some of the basic functionalities that cover this are - role based security schemes, content syndication, catalogs, indexing, searching, and workflow. Content Management System Content Management System is to manage the content of the website, either in the form of text, image, animation, file etc. What it means by managing is that it enables the non-technical people to manage the content of the website and they should not have to know anything beyond viewing, typing and clicking. It offers more than just a tool to manage content. It delivers a comprehensive set of solution that will enable the non-technical person to control website easily and efficiently. Zope Zope is a open source web application server, written in Python. It is a scalable, stable, powerful system that includes an object database, a web server and several templating languages. Zope is developed and supported primarily by Zope Corporation, but also by many developers worldwide Python Python is a powerful, interpreted, interactive, object-oriented programming language. Python is open source and can run on almost any platform or system. Zope is written primarily in Python, with some optimisations in C. Content Management Framework (CMF) The Content Management Framework (CMF) is an application that contains a series of tools for Zope. These tools form a framework that provide many of the key services a Content Management System would need. The CMF can be used as a standalone product, or in Plone's case, built on top of. The CMF provides core tools like Workflow, Personalisation and Cataloguing. The CMF development is lead by Zope Corporation and is an open source product that benefits from the input and hard work of many developers around the world. Plone Plone is a free, open source Content Management System. The focus of Plone is to provide value at every level of an organization. It comes with a workflow engine, pre-configured security and roles, a set of content types and multi-lingual support. There are many developers, writers and testers from all over the world, contributing to Plone everyday. Plone is based on the Content Management Framework. Following in this document are the detailed features present in ZOPE which I have gone through during the internship period. Zope: Content Management Framework Zope is often labelled a web application server, but its main strength and organizing principle stems directly from its name - Z Object Publishing Environment. Centred around the Python scripting language, Zope’s main reason for existence is to publish "objects" - which can be plain pages, structured content or whatever else we can put on the Web. Zope didn't seem robust enough to compete with Java or Vignette for enterprise applications, and wasn't simple enough to take the place of PHP for throw-away mini-applications. The core product, was built by talented programmers working with consistent web design philosophies, including: • everything should be an object • objects should be manageable through the web • objects should be able to easily inherit properties and methods from each other A large and dedicated user community has sprung up around Zope, providing support, guidance, and extensions in the form of "products" (essentially a collection of Zope classes that work together). This is generally a benefit, but it can be difficult to penetrate the morass as a beginner. As we might expect, there is variation in the extent to which the original design principles are understood and upheld, both in documentation and development. There’s good stuff in there, but it takes digging and community support to find. Zope is neither strictly commercial nor open source; the broader Zope code base exists in several states at once: • An open source code release that is a publicly available server we can download from www.zope.org and install freely on our own machine. • Open source extensions ("products") contributed by developers, both employees of the Zope Corporation and third parties. • Commercial extensions (both "products" and other plugins) developed by the Zope Corporation, such as the ZEO clustering plug in, which enables several distributed ZServers to act as one. Zope the Product has been released into open source by Zope the Corporation (a US-based consulting firm formerly known as Digital Creations). the core product is free, Zope Corp. services are commercial, and there are a large number of privately developed object classes that can come with a commercial consulting contract. On the one hand, since Zope is open source, we can address problems ourselves. On the other hand, Python developers are still scarce in the marketplace, so we may have to rely on public Product releases (which generally seem to be well supported by their authors). The Python development experience has its own ups and downs. Python is not a hard language to pick up - it’s elegant, not particularly hung up on syntax, and decent documentation abounds. However, hardcore Python programmers tend to be among the most zealous -- topping even Perl gurus for platform dedication. Therefore, Python tends to be a very self-contained universe. The lack of good Zope documentation is a problem. In the online docs, and even in the ZWACK (Zope Web Application Construction Kit) book, the people explaining Zope can't seem to decide if it's about hardcore development or rapid prototyping without programming. This indecision makes the documentation situation troublesome, since there is no concise, centralized explanation of many of the features. Most of the documentation that's missing is that critical next level where we understand the basics, but aren't sure where to go next, because most of what exists is of one of two flavours: 1) "I’m new to Zope but here’s what I love about it" and 2) "I’m a Zope expert; here’s a highly detailed analysis of one complicated part that we won’t understand unless we’re also an expert." the problem is that there are very straightforward questions, the answers should be easy to find (particularly in the FAQs, which are woefully inadequate), and they often weren't. Installation and Configuration Installing the server can be trivial or complicated, depending on what configuration we want and what else we need to integrate with it. If we only want to use the ZServer (a python-based free webserver bundled with Zope), installation is as simple as unpacking the distribution, running the install script or Windows Installer, and starting the server. Installing Zope with an existing webserver is trickier, and requires some wrangling to get everything working. It also requires some up-front planning about where we want to do authentication - in the webserver or in Zope. there is no common authentication/authorization mechanism for the webserver authentication configuration. That is, if we want to have users that have permissions in Zope, and we also want to have the webserver authenticate them, we need to maintain two separate lists. With that exception, once we get everything hooked up, it seems to work fine, with the caveat that we don’t get Zserver’s additional FTP and WebDAV functionality if we are fronting our system with another webserver. In practice, we'll never use a Zope installation out of the box. There are several products which we'll want to install immediately, since they provide functionality that will probably eventually end up in the core product in future versions. Zope is a product continually under development by a dedicated and vocal community, so expect this to always be the case. Zope is a mostly self-contained web publishing environment in which every item - document, image, binary file, folder, whatever - is a first-class object derived from a base object class. Instead of storing its basic documents in the file system or relational database (although developers can access both of these with freely available objects), Zope puts everything in its Zope Object Database (ZODB). This way, every entity in the system can have properties and methods, security settings, and managed transaction support (including rollback). Objects and Zope Many of the built-in objects are simple - they represent files or documents. The basic "page" object type is currently a "DTML" document.