At the Forge - CMF Types
The final statement in the above version of initialize(), as you can see, is similar to the final statement in the version of initialize() from the sample MyProduct(), demonstrating that CMF types are Zope products, only with some extra hooks included.
This article concludes our look at Zope as a platform for content management, which began with Plone and concluded with CMF and CMF types. Now that we've looked at CMF in a bit more detail, let's consider whether it is worth using for projects that require a CMS.
The good news is that CMF is a powerful and flexible system. In the hands of a skilled and knowledgeable developer, CMF makes it possible to produce a custom CMS with lower cost and greater flexibility than the proprietary systems now on the market. The fact that everything is built on top of Zope, which is designed for rapid development, makes it quick and easy to create new types, modify templates and develop functionality.
But CMF, like much open-source software, suffers from a terrible lack of up-to-date and useful documentation. I'm sure that one of the reasons for the success of the Plone CMS is the excellent documentation that comes with Plone.
So if you're going to use CMF, be ready and willing to read through a great deal of Python code, to experiment quite a bit and to ask other CMF developers for help. Given the central role that CMF already is playing in the Zope world already, I expect that the amount and quality of CMF documentation will continue to increase. But until it does, working with CMF will require patience, reading the source code and a lot of trial and error.
The current state of the CMF is such that I would be somewhat hesitant to use it for anything but the largest and most complex content management systems. That said, the flexibility and power of the CMF is designed to solve problems of precisely this magnitude. In short, as inappropriate as CMF might be for small jobs, it probably is quite appropriate for large ones. And as time goes on, I expect CMF to play an increasingly prominent role in the world of open-source content management, providing a framework for the rapid development of custom CMS software.
Zope's CMF is an impressive framework for building a custom CMS. I have no doubt that CMF makes it easy to create a CMS, at a significantly lower cost and with far less effort than would be the case with a full-fledged proprietary solution. That said, CMF still is not quite ready for prime time for anyone who is not intimately familiar with it or willing to spend a great deal of time learning it. I would argue that Plone has pushed CMF into the spotlight, and the fact that Zope 3 will be largely or completely merged with CMF means there is now greater incentive at Zope Corporation to make CMF more impressive and better-documented than was previously the case.
If you have a fair amount of programming experience with Python and Zope, you almost certainly can use CMF to create your own custom types as Zope products—and with those, create impressive, interesting sites for yourself and your clients. However, until the type-creation system becomes easier to understand, CMF will not get the attention it deserves from outside the Zope community. Creating Zope products is no longer the black art that it used to be, and I expect that creating CMF types will be treated similarly in the near future.
Next month, we will shift gears dramatically, looking at another open-source CMS known as Bricolage. Bricolage, which uses Mason, mod_perl and PostgreSQL, has gained a great deal of ground in the past year, and it is an increasingly prominent player in the open-source CMS community.
The home page for Zope CMF is cmf.zope.org. I not only found the site difficult to navigate, but I could not easily find good, useful information on CMF.
The best introduction to CMF types I found was not actually on the CMF site but on the Plone site, at www.plone.org. For example, the document at plone.org/documentation/CMFTypesBook/backtalk_book_view is the CMF Types Book, which is both readable and contains examples. Chapter 8 of The Plone Book also contains some good information about CMF types, at plone.org/documentation/book/8.
As always, ZopeLabs, at www.zopelabs.com, has a good amount of sample code and minitutorials describing how to accomplish certain tasks in CMF.
Finally, if you are interested in creating new types for CMF, consider Archetypes, a SourceForge project designed to make it easier for people to create new CMF types. And indeed, the CMF Collective is a SourceForge project containing a number of CMF types that might interest you. Be sure to look through the CVS repository, rather than depending on the files and types that have been made available on SourceForge.
Reuven M. Lerner (email@example.com) is a consultant specializing in open-source Web/database technologies. He and his wife, Shira, recently celebrated the birth of their second daughter, Shikma Bruria. Reuven's book Core Perl was published by Prentice Hall in early 2002, and a second book about open-source Web technologies will be published by Apress in 2003.
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Doing for User Space What We Did for Kernel Space
- SuperTuxKart 0.9.2 Released
- Google's SwiftShader Released
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide