<?xml version="1.0"?><!-- RSS generated by Radio UserLand v8.0.7 on Sat, 11 Jan 2003 19:25:49 GMT --><rss version="2.0">	<channel>		<title>Jeffrey P Shell: Zope</title>		<link>http://radio.weblogs.com/0106123/categories/zope/</link>		<description>Zope related topics.</description>		<copyright>Copyright 2003 Jeffrey P Shell</copyright>		<lastBuildDate>Sat, 11 Jan 2003 19:25:49 GMT</lastBuildDate>		<docs>http://backend.userland.com/rss</docs>		<generator>Radio UserLand v8.0.7</generator>		<managingEditor>jeffr@euc.cx</managingEditor>		<webMaster>infor@euc.cx</webMaster>		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 		<skipHours>			<hour>2</hour>			<hour>3</hour>			<hour>4</hour>			<hour>5</hour>			<hour>20</hour>			<hour>1</hour>			<hour>15</hour>			<hour>17</hour>			</skipHours>		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>		<ttl>60</ttl>		<item>			<title>Moving Toulouse</title>			<link>http://toulouse.amber.org/</link>			<description>Industrie Toulouse has moved to &lt;a href=&quot;http://toulouse.amber.org/&quot;&gt;A new home (toulouse.amber.org)&lt;/a&gt; and a new &lt;a href=&quot;http://www.movabletype.org/&quot;&gt;publishing system&lt;/a&gt;.  Most of the archives will be there soon.  The Radio site will remain up indefintely, but no new content will appear here.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2003/01/11.html#a268</guid>			<pubDate>Sat, 11 Jan 2003 19:24:27 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=268&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2003%2F01%2F11.html%23a268</comments>			</item>		<item>			<title>Aggregation versus Inheritance</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2003/01/09.html#a267</link>			<description>EuroPython had an &lt;a href=&quot;http://europython.zope.nl/interviews/entries/jim_fulton&quot;&gt;interview with Jim Fulton&lt;/a&gt; (I can&apos;t determine the date, but I&apos;m guessing some time within the past year), in which he gives a good summary of Zope 3&apos;s differences over Zope 2 (I&apos;ve been looking for such a summary):&lt;blockquote&gt;Zope 3 moves Zope from an inheritance-based framework to a component-based framework.  Complexity is managed by splitting responsabilities among  many cooperating components, rather than many cooperating mix-in classes. Components are connected using interfaces, which also provide component specification and documentation.Some other big ideas:&lt;ul&gt;&lt;li&gt;It should be possible to use existing Python objects in Zope with little or no change.&lt;/li&gt; &lt;li&gt;Applications can be customized by adding, changing, or removing components.&lt;/li&gt; &lt;li&gt;Site configuration is done by site-managers or deployment specialists without modifying code.&lt;/li&gt; &lt;li&gt;Many CMF technologies will be part of the core.&lt;/li&gt; &lt;li&gt;Acquisition and namespace lookup is wildly more explicit.&lt;/li&gt;&lt;/ul&gt; I could go on, but I won&apos;t.&lt;/blockquote&gt;&quot;Cooperating components instead of cooperating classes&quot; could still be seen as an ambiguous phrase.  I think developers who are steeped in component models and aggregation would understand it.  But what about those who are used to the static overbearing inheritance model?I guess it could be summed up as &quot;Zope 2 excepts you (you being an object in the Zope system) to provide it lots of information and functionality all by yourself.  Zope 3 looks for people to help you&quot;.In Zope 2, if you got annoyed that a particular didn&apos;t implement the obscure little method to display sizing information in the ZMI, there wasn&apos;t much you could do about it without monkey patching.In Zope 3, you write an adapter for that object that implements the &lt;em&gt;ISized&lt;/em&gt; interface, register the adapter, and voila!  One little object helping another.By developing services to query for adapters (saying &quot;I&apos;ve got Frank here, can anyone tell me how tall he is?&quot;) instead of expecting behavior directly from an object, new doors to interoperability and speciality open up. Susie pops over and says &quot;Why I can tell you, I&apos;ve got measuring tape right here!  He&apos;s 5 feet, 11 inches tall.&quot;  Of course, Frank can say &quot;I can tell you&quot; and report his tallness himself, but he&apos;s a busy man and knowing his height at all times just might not be something he needs to do on a daily basis.Of course, if Susie can be replaced with a robot or some other machine or person that can perform the same job (measure how tall people are), she can be replaced without bringing down the system.  Frank&apos;s genetic algorithm can&apos;t be replaced (easily), so if he&apos;s suddenly unable to report his height correctly, he&apos;s useless in this situation without someone to help him adapt.Hmm.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2003/01/09.html#a267</guid>			<pubDate>Thu, 09 Jan 2003 21:37:38 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=267&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2003%2F01%2F09.html%23a267</comments>			</item>		<item>			<title>Zope 3 reStructuredText Document 0.1</title>			<link>http://www.zope.org/Members/jshell/z3-restdocument/z3restdoc-01-release</link>			<description>&lt;p&gt;With Zope 3X alpha 1 out, I decided it was time to jump in again and see how it would be to write a new content object for it with associated components (adapters, views).  I&apos;ve tried to include comments in the files and README to document what I was doing as I was going along.&lt;/p&gt;&lt;p&gt;It can be downloaded &lt;a href=&quot;http://www.zope.org/Members/jshell/z3-restdocument&quot;&gt;here&lt;/a&gt;, and requires &lt;a href=&quot;http://docutils.sourceforge.net/&quot;&gt;a fairly recent docutils&lt;/a&gt; and of course &lt;a href=&quot;http://dev.zope.org/Zope3/Downloads&quot;&gt;Zope 3X Alpha 1&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The current release is intended to focus more on documenting how to write a new content component for Zope 3 than on being a smart reStructuredText client.  That functionality may come later.&lt;/p&gt;&lt;p&gt;I have some other &lt;a href=&quot;http://www.zopezen.org/Members/jshell/News_Item.2003-01-04.4803&quot;&gt;thoughts about the process&lt;/a&gt; posted on &lt;a href=&quot;http://www.zopezen.org/&quot;&gt;ZopeZen&lt;/a&gt;.&lt;/p&gt;</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2003/01/04.html#a263</guid>			<pubDate>Sat, 04 Jan 2003 18:53:11 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=263&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2003%2F01%2F04.html%23a263</comments>			</item>		<item>			<title>Big Alpha Releases for Zope and Python</title>			<link></link>			<description>&lt;p&gt;Two big alpha releases were made for the new year: &lt;a href=&quot;http://www.python.org/2.3/&quot;&gt;Python 2.3a1&lt;/a&gt; and &lt;a href=&quot;http://dev.zope.org/Zope3/Downloads&quot;&gt;Zope 3X a1&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Python 2.3 doesn&apos;t make any major changes to the language (unlike previous Python 2 series releases, which brought things like &lt;em&gt;list comprehensions&lt;/em&gt;, &lt;em&gt;generators&lt;/em&gt;, &lt;em&gt;nested scopes&lt;/em&gt;, &lt;em&gt;iterators&lt;/em&gt;, etc).  Andrew Kuchling, as always, &lt;a href=&quot;http://www.python.org/doc/2.3a1/whatsnew/&quot;&gt;covers the changes extensively&lt;/a&gt;.  Of interest are - ability to import from .zip files, &lt;strong&gt;universal newline support!&lt;/strong&gt;, a new logging package, a new Set datatype and default Boolean datatype.&lt;/p&gt;&lt;p&gt;Zope 3X (x for &quot;experimental&quot; - a final Zope 3 release without the &apos;X&apos; is expected to have some Zope 2 migration features) is a completely different beast from its ancestors.  Its primary focus is still the &lt;em&gt;Object Publishing&lt;/em&gt; mission that&apos;s been in place since the days of Bobo, but beneath the covers it is shockingly different from Zope&apos;s 1 and 2 before it.  &lt;/p&gt;&lt;p&gt;Zope 3 is also dubbed the &lt;em&gt;component architecture project&lt;/em&gt;.  Its design focuses on many interacting components with well-defined interfaces.  It&apos;s an aggregation heavy design, as opposed to the inheritance heavy design of Zope 2.  Adapters exist to take the burden off of objects for out-of-scope elements such as text indexing or sorting-by-size.  As the author of a particular object, you can implement those interfaces (ISearchableText, ISized) on the class itself, or as separate classes.  Code that requires searchable text or sizing information asks for an ISearchableText implementation for your class, and since that&apos;s the only interface that it&apos;s expecting to use, it doesn&apos;t matter if it gets an adapter or your class - it only matters that the ISearchableText interface is implemented correctly.  &lt;a href=&quot;http://www.elj.com/eiffel/dbc/&quot;&gt;Design by Contract&lt;/a&gt; finally makes a strong appearance in the Zope world.&lt;/p&gt;&lt;p&gt;Zope 3 should also score big on the &lt;em&gt;packaging and deployment&lt;/em&gt; front.  Zope 3 uses a new configuration language called &lt;strong&gt;ZCML&lt;/strong&gt;.  ZCML is used to register new components at load time, and to load in still further components.  It wrests control away from Python&apos;s import statements and need for special functions in __init__.py such as the common Zope 2 &lt;tt&gt;initialize(context)&lt;/tt&gt;.  As such, it can be not only more expressive, but allows control over the order in which items get initialized.  Under the mantra of &lt;em&gt;explicit is better than implicit&lt;/em&gt;, all new components have to be explicitly added (usually in the &lt;tt&gt;products.zcml&lt;/tt&gt; file).  A side effect of this is that heavily customized Zope distributions can be made.  Some such distributions exist now with &lt;a href=&quot;http://plone.org/&quot;&gt;Plone&lt;/a&gt; installers and &lt;a href=&quot;http://www.bizarsoftware.com.au/&quot;&gt;BizarShop&lt;/a&gt;.  Zope 3&apos;s customization and configuration capabilities should allow similar distributions to be made that don&apos;t look like Zope at all, while still tying in to all of the available features of Zope.&lt;/p&gt;&lt;p&gt;The combination of heavy Interface use combined with rich configuration options should mean that &lt;em&gt;any&lt;/em&gt; part of the system could be kicked out in place of a new one, as long as the expected interfaces are implemented.  This is a fundamental feature of component systems, and Zope 3 looks like it will live up to this feature.&lt;/p&gt;&lt;p&gt;Another big feature of Zope 3 is the proliferation of &lt;em&gt;View Components&lt;/em&gt;.  Views can be individual ZPT pages, attached to a particular content interface via ZCML.  But they can also be full-on components in their own right, usually as Python classes.  And they&apos;re not limited to HTML.  Other views may be written to correspond with the other publishing channels (ftp, xml-rpc, and others in the future).  I wrote a post back in September about my &lt;a href=&quot;http://radio.weblogs.com/0106123/categories/zope/2002/09/02.html&quot;&gt;early experiments augmenting other Zope 3 components&lt;/a&gt;, in which I include some example code making an XML-RPC view onto a Job Board component written by someone else.  My final paragraph in that post reads:&lt;blockquote&gt;And finally, Zope 3 should yield a usable scalable means of adapting the works of other developers into new solutions by providing better control of product/service/view configuration and overrides, such as adding a new XML-RPC API to someone elses bug tracking system without having to alter that bug tracking system, or use secret Python hacks to alter behaviour.&lt;/blockquote&gt;&lt;/p&gt;&lt;p&gt;A few other positive notes about Zope 3X a1.  The &quot;grand renaming&quot; went into effect during the final weeks of the beta.  This involved cleaning up the Python package hierarchy.  It also involved case-normalization of package and module names.  They are now all lowercase, like most other well-written Python packages/frameworks (distutils, &lt;a href=&quot;http://docutils.sourceforge.net/&quot;&gt;docutils&lt;/a&gt;, etc), which makes it easy to distinguish classes and other module exports from the modules themselves.  Zope 3 also uses Python 2.2 &quot;new-style-classes&quot; and gets rid of ExtensionClasses, since now you can write new extension types for Python in C and subclass them (which was the big point of ExtensionClasses).  Zope 3 also (finally) makes use of other long-standing Python technologies such as distutils.  &lt;/p&gt;&lt;p&gt;Now for the negative aspects.  Since this is an alpha of the Zope 3 &quot;experimental&quot; line, it&apos;s not surprising that there is little or no documentation.  The code structure is &lt;em&gt;significantly&lt;/em&gt; different from that of Zope 2.  It takes some time to find ones way around the code layout.  Most things are pretty clear though (a benefit of having Interfaces) when you do find them, but there&apos;s so much new technology and terminology here that even when you grasp the terminology, it&apos;s not obvious to an outsider how to put it all to work.&lt;/p&gt;&lt;p&gt;Zope 3 is heavily reliant on &lt;em&gt;Services&lt;/em&gt;, which is a good thing.  Services are like &lt;em&gt;Tools&lt;/em&gt; in the CMF - well known objects that provide a service to a global or local region.  Examples of services are Event Channels (yay!  Events!), or something like the &lt;em&gt;Error Log&lt;/em&gt; that showed up in Zope 2.6.  Other examples of Services are &lt;em&gt;Database Adapters&lt;/em&gt;.  In Zope 2, most service objects existed in the same namespace as all other objects.  Zope 3 manages them in special namespaces.  This allows content objects to be managed separately from service objects while still retaining placefulness.  There are numerous upsides to a service based architecture.  What&apos;s the downside?  The downside is there&apos;s significant &quot;what the...?!&quot; effect when first encountering Services and Configuration objects.  I&apos;m sure it will all make more sense as future Zope 3X development releases are made, but right now it&apos;s a proverbial kick in the head.&lt;/p&gt;&lt;p&gt;There are some other aspects of Zope 3 that I&apos;m likewarm to right now, mostly because they&apos;re difficult to fully comprehend how/when/where to use at the moment.  Zope 3 allows for automatic user interface generation to occur.  This was a feature of OS/2 (2.0+), and the defining motive of &lt;a href=&quot;http://www.nakedobjects.org/&quot;&gt;Naked Objects&lt;/a&gt;.  Zope 2 has a subset of this feature in its use of &lt;em&gt;properties&lt;/em&gt;.  What Zope 3 seems to have done is to marry Interfaces (software, not user) and &lt;a href=&quot;http://www.zope.org/Members/faassen/Formulator&quot;&gt;Formulator&lt;/a&gt; together.  In essence, this allows easy edit forms to be generated off of the objects interface description.  From the &apos;src/zope/app/browser/content/configure.zcml&apos; file, here&apos;s an example of how an editform is configured for a ZPT Page:&lt;pre&gt;  &amp;lt;browser:editform      schema=&quot;zope.app.content.zpt.IZPTPage&quot;      name=&quot;edit.html&quot;      menu=&quot;zmi_views&quot;       label=&quot;Edit a ZPT page&quot;      permission=&quot;zope.ManageContent&quot;      /&amp;gt;&lt;/pre&gt;And from the &lt;strong&gt;IZPTPage&lt;/strong&gt; interface:&lt;pre&gt;    source = zope.schema.Text(        title=u&quot;Source&quot;,        description=u&quot;&quot;&quot;The source of the page template.&quot;&quot;&quot;,        required=True)      expand = zope.schema.Bool(        title=u&quot;Expand macros&quot;,        )&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Whew!&lt;/em&gt;  That&apos;s about all I can cover for right now.  If I have time this weekend, I intend to write a new Content Component (probably a reStructuredText Document) to see how different it really is from developing a similar product for Zope 2 or the CMF.  I have no promises right now that it will get done this weekend, but it is something I&apos;ve been wanting to do.  Now that Zope 3X is at alpha1 stage, the fundamental structure should be fairly stable.&lt;/p&gt;</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2003/01/03.html#a262</guid>			<pubDate>Fri, 03 Jan 2003 22:22:33 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=262&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2003%2F01%2F03.html%23a262</comments>			</item>		<item>			<title>More Fiddling with Project Management</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/12/28.html#a261</link>			<description>It should come as no surprise that I&apos;m still fiddling with project management solutions via &quot;Zope&quot;. I&apos;ve started down a new path, but before I explain it, I want to explain the current situation.&lt;h3&gt;General Requirements&lt;/h3&gt;We&apos;re a very small organization (two people, with loose associations to other very small organizations). As such, we&apos;re constantly busy (thankfully) and don&apos;t have too much overhead to worry about in regards to project management. But having a to-do list of any sort is always helpful, and having a place to dump notes and flesh out ideas is always good too. Plus, we&apos;re decentralized - we work as much from home as we do from the office, and are often working from multiple machines in either location. Sometimes we need to communicate progress with each other, sometimes it&apos;s nice just to have a list for our own uses.Ideally, content (which could be proposals, notes, software configuration requirements, etc) and issues should be managed by the same system - or at the very least be close to each other. And projects need to be easy to add in to the system by either main user, from wherever they may be. And most of all - it should offer only just-enough project content management features.&lt;h3&gt;What we&apos;ve used&lt;/h3&gt;Last year, we experimented with a couple of home-grown systems. One was a Zope based SQL backed project / task / contact tracking system. Data went derelict rather quickly. I was working on a much more thorough CMF based system with detailed workflows, nested tasks, role assignment, and more. There were a few key features that were difficult to do to meet our requirements, particularly in the non-containment object relation area, an area where Zope has typically struggled (but should be dealt with in Zope 3).We gave the &lt;a href=&quot;http://roundup.sourceforge.net/&quot;&gt;Roundup&lt;/a&gt; (0.4.2) issue tracker a try. While fast, it was still a young product. Too much command line work was involved to set up a Roundup instance, and while there is a Zope-Roundup Gateway available, it didn&apos;t integrate too well with Zope based content. I really like Roundup and think it has a lot of potential, but it didn&apos;t satisfy our requirements.Ultimately, we landed in the &lt;a href=&quot;http://zwiki.org/&quot;&gt;ZWiki&lt;/a&gt; 0.7 + &lt;a href=&quot;http://www.zope.org/Members/klm/TrackerWiki/FrontPage&quot;&gt;Tracker&lt;/a&gt; situation. Each project was their own folder or wiki, and usually had a tracker in it. This approach succeeded on the simplicity category and has been used for almost half a year. But it suffers from a couple of problems. The first is that Tracker is an aging old beast. It&apos;s generally pretty thorough, but has some rough edges. It&apos;s no longer supported, and I&apos;ve heard claims that it doesn&apos;t work with the latest &quot;Zope&quot; release family (2.6.x).The second problem is that I&apos;m no big fan of Wiki&apos;s. I never have been. They&apos;ve been useful, but we don&apos;t need whatever supposed collaborative effects Wikis are supposed to have. I don&apos;t like Wiki names - they either end up looking funny (with words like OneDotOh or ZoPe) or kick in when you don&apos;t want them to. Now that I&apos;ve done some work with &lt;a href=&quot;http://docutils.sourceforge.net/#restructured-text&quot;&gt;reStructuredText&lt;/a&gt;, I&apos;ve come to loath working with Zope&apos;s normal StructuredText. It just doesn&apos;t work well with TextAreas. If you&apos;re used to Zope&apos;s StructuredText and have a &lt;a href=&quot;http://www.xemacs.org/&quot;&gt;good editor&lt;/a&gt; on your side, it&apos;s not &lt;em&gt;too&lt;/em&gt; bad. But StructuredText and DTML (outside of SQL methods and occasional &lt;em&gt;small&lt;/em&gt; non-HTML uses) are two Zope technologies I&apos;m happy to leave to the past. Finally, we needed a stronger content management system than a pool of individual wiki&apos;s provided.We did (briefly) try out ZWiki 0.12 with setting up the ZWiki based &lt;a href=&quot;http://zwiki.org/IssueTracker&quot;&gt;Issue Tracker&lt;/a&gt;, but it was a beast to set up and configure (loosing out on the &apos;easy-to-add-new-project&apos; requirement) and too dependant on DTML for me to debug and make work for us on short notice. I liked the integration of Issue Tracking with the Wiki (gaining points on the keeping-issues-close-to-content) but there was too much pain involved, and too much inolvement with the technologies I wanted to leave behind.And I know Wiki&apos;s really really work well for some, but I&apos;ve never really been able to get comfortable with the Wiki way (ask anyone that I used to work with). I&apos;ve been able to get by, but that&apos;s about it.&lt;h3&gt;The new attempt&lt;/h3&gt;Facing the problem of trying to support the Trackers onto post-Zope 2.5.1 software, and facing other issues that stemmed from the basic folder/wiki layout of the site (no intra-project search abilities, poor navigation), it was time to look for something new. That new thing is &lt;a href=&quot;http://plone.org/&quot;&gt;Plone&lt;/a&gt; - a realized content management system built upon Zope&apos;s &lt;a href=&quot;http://cmf.zope.org/&quot;&gt;CMF (Content Management Framework)&lt;/a&gt;. With my knowledge of the CMF (I used to be on the content management team at Zope Corp), I was able to start tweaking the system where I needed to - I made a &lt;em&gt;Project Folder&lt;/em&gt; content type to distinguish Projects from other content types without putting too much expectations on the content type. It can contain anything, like documents, links, events, and a CMF Collector (a weaker but still fairly usable descendant of the Tracker). I later designed a quick workflow for Projects so that their status would be more meaningful to allow distinction between active, pending, suspended, completed, and cancelled projects. The workflow has a few simple rules, but nothing distracting.CMFCollector is decent. It has some of its own rough edges, and is missing out on some of the nicer features of Tracker (mainly intra-issue explicit linking). But it has some nice new features, like the ability to automatically assign/accept a new issue. Its interface is a bit more streamlined, particularly in the &lt;a href=&quot;http://plone.org/collector/&quot;&gt;Plone&lt;/a&gt; skin. It uses a very simple plain text markup language it calls &lt;em&gt;WebText&lt;/em&gt;. It basically takes plain text, marks up URL&apos;s and citations/literal blocks (lines beginning with &apos;&gt;&apos; or white space).A downside to Plone is that it - for better or worse - just builds upon CMFDefault. And CMFDefault has very basic content objects, particularly the default Document, which is very monolithic. I partly blame myself for the design - I could have proposed a better solution back when I was on the team. In my vaporware compound document project, &lt;em&gt;FDoc&lt;/em&gt;, not only are the parts of a document componentized, but so are the &lt;em&gt;text handlers&lt;/em&gt;. A separate Handler Registry contains handler objects, which take a chunk of text and turn it into an HTML content body. This could be HTML (taking the content between the BODY tags), Structured Text, Plain Text, etc.So today, wanting reStructuredText support, I tried to think of how to deal with this.  I had a couple of options: either take the existing &lt;em&gt;FDoc&lt;/em&gt; work, which is half baked (the most complete work is in a customer specific project and hasn&apos;t been backported yet due to time constraints) and add a reStructuredText handler (and also make a Plone friendly user interface), or make a subclass of CMFDefault&apos;s Document class, add in the ability to manage reStructuredText somehow and make it a new Content Type or replace the Document document type (this too would involve some Plone UI work, but it would only be a tweak of the Document&apos;s edit form).  Neither situation was quite what I wanted - there were too many existing dependencies on the default CMF Document behavior, and I haven&apos;t had the time to &lt;em&gt;really&lt;/em&gt; learn how to make my own Plone UI pages work.  So, I decided to do a hybrid of my original ideas.  I made some new FDoc handlers that handled Zope&apos;s StructuredText and the reStructuredText formats.  Then I made a subclass of the CMFDefault Document and started wiring in knowledge of the handlers and handler registry (based on the FDoc &lt;em&gt;Text Part&lt;/em&gt; component, but made to match the default Document&apos;s interface).  Then, out of some act of devilry, I decided to monkey-patch document by doing some good old fashioned Pythonic class __dict__ comparisons and substitutions.  After a few tweaks to the document edit form to list the available text formats dynamically instead of statically, I had it working (aside from one infinite recursion bug my __dict__ tweaking introduced).So now, it&apos;s mostly working.  We have a decent looking project site that&apos;s navigation friendly.  It&apos;s easy to add new content and to decide its form and format with very little restriction.  And I&apos;m finally away from StructuredText (although it still exists as an option).  With other CMF and Plone options available from the likes of the &lt;a href=&quot;http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/collective/&quot;&gt;CMF Collective&lt;/a&gt;, there&apos;s a lot of potential expansion if required.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/12/28.html#a261</guid>			<pubDate>Sat, 28 Dec 2002 08:01:38 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=261&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F12%2F28.html%23a261</comments>			</item>		<item>			<title>Quicklinks Zope Product</title>			<link>http://www.zope.org/Members/peterbe/QuickLinks</link>			<description>&lt;a href=&quot;http://www.zope.org/Members/peterbe/&quot;&gt;Peter Bengtsson&lt;/a&gt; has a really cool &quot;Zope&quot; product, &lt;a href=&quot;http://www.zope.org/Members/peterbe/QuickLinks&quot;&gt;QuickLinks&lt;/a&gt;.  His product effectively adds a shortcut toolbar for creating new Zope objects.  It populates the same line of the ZMI as the &quot;Add List&quot; with icons representing different meta types.  Clicking on one of them goes to the add form for that object.  If you spend most of your time in the ZMI mousing through the add list to add the same set of objects (ie - folders, python scripts, SQL methods, and page templates) this is a great product.  Configuration is done with a new Control Panel object.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/12/10.html#a255</guid>			<pubDate>Tue, 10 Dec 2002 20:26:37 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=255&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F12%2F10.html%23a255</comments>			</item>		<item>			<title>State of the desktop?</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/12/10.html#a254</link>			<description>&lt;blockquote&gt;&lt;em&gt;&lt;a href=&quot;http://davenet.userland.com/2001/01/04/desktopWebsites&quot;&gt;The theme of today&apos;s conference was decentralization....&lt;/a&gt;&lt;br /&gt;The theme of today&apos;s conference was decentralization. The first time the term appeared in DaveNet was in the &lt;a href=&quot;http://davenet.userland.com/2001/01/04/desktopWebsites&quot;&gt;first piece of 2001&lt;/a&gt;. That&apos;s another DaveNet tradition, like the Thanksgiving essays. I try to make the first essay of each year somehow express the most important idea of the year-ahead. It&apos;s always a guess. Some years I nailed it, desktop websites &lt;i&gt;were&lt;/i&gt; the big idea of 2001, as we prepared Radio 8 for the market (it shipped in January 2002). And Werbach was right to pick it as the theme for the future in software-based technology. There&apos;s so much power on the desktops, both in the machine CPU and the human CPU, that isn&apos;t being well used in the centralized Internet architecture. [&lt;a href=&quot;http://www.scripting.com/&quot;&gt;Scripting News&lt;/a&gt;]&lt;/em&gt;&lt;/blockquote&gt;Pfeh to the desktops.  There&apos;s a lot of power in them, but I&apos;m positive I&apos;m not the only one using three machines throughout the day.  There&apos;s nothing worse than realizing that the data you need is held hostage at home or at work - wherever you&apos;re not.  There are plenty of times when I don&apos;t mind the separation - work&apos;s work, home&apos;s home.  But there are certainly things that go in between.I&apos;ve been a fairly happy subscriber to Apple&apos;s &lt;a href=&quot;http://www.mac.com/&quot;&gt;.mac&lt;/a&gt; services, using my iDisk to ferry a few common documents and preferences (standardizing the subscriptions on all my instances of &lt;a href=&quot;http://ranchero.com/software/netnewswire/&quot;&gt;NetNewsWire Lite&lt;/a&gt;, Chimera bookmarks, etc).  I&apos;m using Apple&apos;s &lt;a href=&quot;http://www.apple.com/isync/&quot;&gt;iSync Beta&lt;/a&gt; to keep two desktops, a laptop, and an iPod all synced up with the same address book and calendar data (I have a palm too, but I seldom use it any more).Microsoft&apos;s &quot;Active Desktop&quot; vision wasn&apos;t entirely wrong.  The implementation wasn&apos;t quite right, and definitely premature.  But the lines between the desktop, the local network, and the global network, are fading away.  &lt;a href=&quot;http://www.apple.com/macosx/jaguar/rendezvous.html&quot;&gt;Rendezvous&lt;/a&gt; makes local networking absolutely unbelievable in Mac OS X (well, it&apos;s believable to those who used the old AppleTalk, but it&apos;s remarkable in the internet age).  I don&apos;t know.  The desktop web site idea isn&apos;t too bad (I&apos;m using Radio right now), but I&apos;ll always prefer the &quot;Zope&quot; &lt;em&gt;&quot;Everything is done through the web&quot;&lt;/em&gt; model.  It&apos;s the comfort of knowing that fixes, updates, etc, can happen from anywhere, with pretty damn good security.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/12/10.html#a254</guid>			<pubDate>Tue, 10 Dec 2002 08:21:18 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=254&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F12%2F10.html%23a254</comments>			</item>		<item>			<title>JTracker - Another Zope Issue Tracker</title>			<link>http://www.dataflake.org/software/jtracker/</link>			<description>The always pragmatic Jens Vagelpohl has released &lt;a href=&quot;http://www.dataflake.org/software/jtracker/&quot;&gt;JTracker&lt;/a&gt;, a simplified issue tracker based on the classic Zope Tracker and CMF Collector, but python based and simplified.  It&apos;s what I&apos;ve been meaning to write but have never made the time to do it.As soon as I can make time to play with it, I&apos;ll post my thoughts.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/12/02.html#a249</guid>			<pubDate>Mon, 02 Dec 2002 16:30:46 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=249&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F12%2F02.html%23a249</comments>			</item>		<item>			<title>Zope 2.7 Project (re)initiated, and the joys of error_log</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/11/27.html#a246</link>			<description>It&apos;s gone through a couple of revisions already, but the real project plan for the next &quot;Zope&quot; release, &lt;a href=&quot;http://dev.zope.org/Wikis/DevSite/Projects/Zope2.7/FrontPage&quot;&gt;Zope 2.7&lt;/a&gt;, is now up on &lt;a href=&quot;http://dev.zope.org/&quot;&gt;dev.zope.org&lt;/a&gt;.  Among the list of &lt;a href=&quot;http://dev.zope.org/Wikis/DevSite/Projects/Zope2.7/ProposedFeatures&quot;&gt;Proposed Features&lt;/a&gt; is &lt;em&gt;Easier Configuration, Installation, and Management&lt;/em&gt;, a welcome addition.As for Zope 2.6, all &quot;Zope&quot; developers owe it to themselves to download it for one reason above all others - &lt;strong&gt;error_log&lt;/strong&gt;!  The new &lt;em&gt;error_log&lt;/em&gt; object gives detailed access to recent exceptions raised.  Not only is this beneficial during development, but it has great testing/deployment uses as well.  You can keep an eye on a deployed site to see if unhandled exceptions are happening, and where.  You can also get detailed technical exception reports during testing that a tester may not be able to report on their own.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/11/27.html#a246</guid>			<pubDate>Wed, 27 Nov 2002 15:31:14 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=246&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F11%2F27.html%23a246</comments>			</item>		<item>			<title>Links and Such</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/11/25.html#a243</link>			<description>I&apos;ve been absent for an unusually long time.  There&apos;s been a lot to write about, but family and work responsibilities have kept me occupied.  So, here&apos;s a few quick links and thoughts:There&apos;s some good reading (as always) in the December 2002 &lt;a href=&quot;http://www.harpers.org/&quot;&gt;Harper&apos;s&lt;/a&gt;.  The November 2002 issue also has some great articles, particularly about the U.N. Sanctions against Iraq, and leads off its &lt;a href=&quot;http://www.harpers.org/harpers-index/listing.php3&quot;&gt;Monthly Index&lt;/a&gt; with this: &lt;em&gt;Ratio of Japanese killed in 1945&apos;s U.S. atomic-bomb attacks to Iraqi children killed due to U.N. sanctions : 1:3&lt;/em&gt;.I was first made aware of the inhumanity of the ongoing sanctions through a &lt;a href=&quot;http://www.michaelmoore.com/&quot;&gt;Michael Moore&lt;/a&gt; show a couple of years ago, where they sold gas at discount prices with images of Saddam Hussein plastered all over the gas station &lt;em&gt;&quot;Who wants to buy gas from the whacky Iraqi?&quot;&lt;/em&gt;.  Lots of people showed up for the discount gas, and the money was used to smuggle food and supplies into Iraq.Speaking of Michael Moore, I finally saw &lt;a href=&quot;http://www.bowlingforcolumbine.com/&quot;&gt;Bowling for Columbine&lt;/a&gt; this weekend.  It was a good film (for however good a film on such a subject can be), but I felt there were a few flaws - namely the exclusion of inner city gun violence.  It may be that Moore is pitching his ideas to the masses in the suburbs in hopes that younger people in the suburban high schools will be awakened to these issues.    In any case, I recommend seeing the movie.  And I also recommend reading &lt;a href=&quot;http://www.prospect.org/webfeatures/2002/11/franke-ruta-g-11-22.html&quot;&gt;this critique on &quot;Moore&apos;s urban phobia&quot;&lt;/a&gt; from the liberal site/magazine &lt;a href=&quot;http://www.prospect.org/&quot;&gt;The American Prospect&lt;/a&gt;.On the technical side, there is an interesting page/discussion in the &quot;Zope 3&quot; wiki about &lt;a href=&quot;http://www.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/TryingToUnifiyWorkflowConcepts&quot;&gt;Trying to unify workflow concepts&lt;/a&gt;, primarily dealing with &lt;em&gt;Activity based Workflows&lt;/em&gt; and &lt;em&gt;Entity based Workflows&lt;/em&gt;.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/11/25.html#a243</guid>			<pubDate>Mon, 25 Nov 2002 16:59:42 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=243&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F11%2F25.html%23a243</comments>			</item>		<item>			<title>ZWiki Tracker.</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/11/14.html#a242</link>			<description>I try and try and try to like Wiki&apos;s, and I just don&apos;t.  &lt;a href=&quot;http://zwiki.org/&quot;&gt;ZWiki&lt;/a&gt; is a flagrant offender of my &quot;no alarms, no surprises&quot; preference.  Maybe it&apos;s because it&apos;s heavily dependant on the two other big &lt;tt&gt;{NA,NS}&lt;/tt&gt; offenders - StructuredText and DTML.  But, we&apos;re giving the latest ZWiki a try.  Why?  Because of the &lt;a href=&quot;http://zwiki.org/ZwikiTracker&quot;&gt;ZwikiTracker&lt;/a&gt;.  Yes, my search for the perfect &quot;Zope&quot; based issue tracker continues.The ZwikiTracker has some advantages:&lt;ul&gt;&lt;li&gt;Simple interface.&lt;/li&gt;&lt;li&gt;Integration with Wiki content (for better or worse).&lt;/li&gt;&lt;li&gt;Use of ZWiki features such as &lt;em&gt;Comments&lt;/em&gt; and &lt;em&gt;Subscribing&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt;I had hoped for some support for &lt;a href=&quot;http://docutils.sourceforge.net/rst.html&quot;&gt;reStructuredText&lt;/a&gt;, and barring that, I had hoped that reStructuredText integration with ZWiki would be relatively easy.  There are so many supported text formats, I thought/hoped that there was a modular system underneath the ZWiki code that would make adding another text format a straightforward effort.Nope.  A &lt;a href=&quot;http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/zwiki/zwiki/ZWikiPage.py?rev=0.283&amp;content-type=text/vnd.viewcvs-markup&quot;&gt;ZWikiPage&lt;/a&gt; is a very large monolithic object.  Extending it could not even be done easily with subclassing, because it would be very tricky to ensure that the subclassed ZWikiPage gets instantiated correctly.&lt;em&gt;sigh&lt;/em&gt;... Still so far from my goal for our internal project management systems.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/11/14.html#a242</guid>			<pubDate>Fri, 15 Nov 2002 06:31:18 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=242&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F11%2F14.html%23a242</comments>			</item>		<item>			<title>Problems with StructuredText</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/11/13.html#a240</link>			<description>I was going to write up my own list of issues I&apos;ve had with Zope&apos;s StructuredText (Classic and NG) implementation, but &lt;a href=&quot;http://docutils.sourceforge.net/spec/rst/problems.html&quot;&gt;this document&lt;/a&gt; sums it up nicely.My expectation of software is, to quote &lt;a href=&quot;http://www.radiohead.co.uk/&quot;&gt;Radiohead&lt;/a&gt;, &lt;em&gt;&quot;No alarms and no surprises.&quot;&lt;/em&gt;  &quot;Zope&quot; Page Templates live up to that mantra, as does &lt;a href=&quot;http://docutils.sourceforge.net/rst.hml&quot;&gt;reStructuredText&lt;/a&gt;, so far.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/11/13.html#a240</guid>			<pubDate>Wed, 13 Nov 2002 16:50:10 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=240&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F11%2F13.html%23a240</comments>			</item>		<item>			<title>reStructuredText First Impressions</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/10/30.html#a228</link>			<description>Today I started writing up user documentation for the project I&apos;m wrapping up.  It&apos;s the first time I&apos;ve used &lt;a href=&quot;http://docutils.sourceforge.net/rst.html&quot;&gt;reStructuredText&lt;/a&gt;, and I must say that I&apos;m liking it.  As far as structured text markup languages go, it&apos;s pretty comprehensive and not *too* obtrusive.  It&apos;s definitely good enough for most technical documentation needs, and is in fact a &lt;a href=&quot;http://www.python.org/peps/pep-0012.html&quot;&gt;PEP Formatting Standard&lt;/a&gt; (see also &lt;a href=&quot;http://www.python.org/peps/pep-0012.txt&quot;&gt;PEP 12 Source&lt;/a&gt;).  Other items of interest, particularly to Python programmers, are:&lt;ul&gt;  &lt;li&gt;&lt;a href=&quot;http://www.python.org/peps/pep-0256.html&quot;&gt;PEP 256&lt;/a&gt; &quot;Docstring Processing System Framework&quot; &lt;a href=&quot;http://www.python.org/peps/pep-0256.txt&quot;&gt;(src)&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://www.python.org/peps/pep-0257.html&quot;&gt;PEP 257&lt;/a&gt; &quot;Docstring Conventions&quot; &lt;a href=&quot;http://www.python.org/peps/pep-0257.txt&quot;&gt;(src)&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://www.python.org/peps/pep-0258.html&quot;&gt;PEP 258&lt;/a&gt; &quot;Docutils Design Specification&quot; &lt;a href=&quot;http://www.python.org/peps/pep-0258.txt&quot;&gt;(src)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I include the source links to show the relative cleanliness of the markup, which is the point of all &lt;em&gt;Structured Text&lt;/em&gt; formats.  &lt;em&gt;sigh&lt;/em&gt;  I thought I&apos;d have more to say, but I&apos;m really too tired.  So - quick wrap up: I was pretty productive with this stuff right off the bat.  Nice.For &quot;Zope&quot;, there is a &lt;a href=&quot;http://dev.zope.org/Wikis/DevSite/Proposals/ReStructuredTextIntegration&quot;&gt;proposal to integrate reStructuredText into Zope&lt;/a&gt;, hopefully for 2.7.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/10/30.html#a228</guid>			<pubDate>Thu, 31 Oct 2002 05:10:23 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=228&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F10%2F30.html%23a228</comments>			</item>		<item>			<title>Zope Stories</title>			<link>http://www.zopestories.com</link>			<description>&lt;a href=&quot;http://www.zopestories.com&quot;&gt;Zope Stories&lt;/a&gt;, another Zope weblog with some very good links and, well, stories.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/10/28.html#a226</guid>			<pubDate>Mon, 28 Oct 2002 15:15:24 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=226&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F10%2F28.html%23a226</comments>			</item>		<item>			<title>meta-whine</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/10/28.html#a224</link>			<description>From Chris McDonough&apos;s &lt;em&gt;Meta-Whine&lt;/em&gt;:&lt;blockquote&gt;With only few shining exceptions, these offers almost never pan out and the thing that they offered to do never actually gets done. It&apos;s as if people believe that by offering to do something, they&apos;ve actually done it.  [&lt;a href=&quot;http://www.zopezen.org/Members/chrism/News_Item.2002-10-28.2851&quot;&gt;Chris McDonough&lt;/a&gt;]&lt;/blockquote&gt;I have to plead guilty to this, with the most recent promises being a release of &quot;FDoc&quot;.  I learned my lesson long ago - fix it if I can, otherwise, stay quiet.  There is rarely enough time in the day to do real work and Open Source work, so why promise?  I don&apos;t live up to this all the time, but I do try.Speaking of which - it&apos;s time to get sparkly clean, shaven, and head to the office.  I have a big deadline this week, and I&apos;m sure there are plenty of new projects waiting to attack.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/10/28.html#a224</guid>			<pubDate>Mon, 28 Oct 2002 14:10:52 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=224&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F10%2F28.html%23a224</comments>			</item>		<item>			<title>FDoc</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/10/27.html#a223</link>			<description>I&apos;ve been asked recently about this &lt;strong&gt;FDoc&lt;/strong&gt; project I keep mentioning.  Today, I wrote a new document about it.&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://radio.weblogs.com/0106123/stories/2002/10/27/regardingFdoc.html&quot;&gt;Regarding FDoc&lt;/a&gt; -- this is the new document, and goes over some of the design ideas as and after they&apos;ve been put into use.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://radio.weblogs.com/0106123/outlines/compoundZopeDocuments.html&quot;&gt;Compound Zope Documents&lt;/a&gt; -- this is an older document, written a few months ago during some of the initial coding of the base framework and a default end-user implementation.&lt;/li&gt;&lt;/ul&gt;</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/10/27.html#a223</guid>			<pubDate>Sun, 27 Oct 2002 21:47:53 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=223&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F10%2F27.html%23a223</comments>			</item>		<item>			<title>Transitions in waiting.</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/10/22.html#a221</link>			<description>I&apos;m trying to transition back into posting.  But - what to say?  I&apos;ve been working hard during the day (and taking the pleasure of avoiding work when NOT at the office), where I&apos;m away from Radio.  I think it&apos;s time to move Radio Userland onto my iPod (and go - again! - through the pains of moving Radio) to keep it mobile (the path should stay the same, regardless of whether the iPod is attached to my workstation, my iBook (which is still going unused these days due to a SMC Wireless Barricade whose power adapter with strange requirements is missing in action), or my iMac.  Or, I can open Radio up to post to over a blogging API and host it on my always-on workstation.  I don&apos;t know.  I&apos;m never at the machine I want to be on when I have something interesting to say.  It may also be time to move to &lt;a href=&quot;http://www.movabletype.org/&quot;&gt;Movable Type&lt;/a&gt; or some other server side setup, of which Movable Type seems the most complete.  But then there&apos;s the issue of moving past posts in Radio to MT.  Or I could write up an &lt;strong&gt;FDoc&lt;/strong&gt; based solution for &quot;Zope&quot; and the CMF (FDoc is the pending product name for my compound document project that I&apos;ve been working on off and on over the past few months), but I don&apos;t have the time or will-to-care to do that much coding outside of work.  I have other things I&apos;m behind on, like wrapping up the &lt;a href=&quot;http://euc.cx/&quot;&gt;Eucci &amp;amp; Co.&lt;/a&gt; entry in &lt;a href=&quot;http://www.notype.com/&quot;&gt;No Type&lt;/a&gt;&apos;s  &lt;a href=&quot;http://www.notype.com/drones/artists/sine_fiction.html&quot;&gt;Sine Fiction&lt;/a&gt; series, and putting together the &lt;strong&gt;More Summer Dress Fire&lt;/strong&gt; release - I don&apos;t even know how big that one&apos;s going to be, and whether I should be seeking out putting it on CD, or getting a release on &lt;em&gt;No Type&lt;/em&gt;, some other online label, or continue to put it up at &lt;a href=&quot;http://euc.cx/&quot;&gt;Euc.cx&lt;/a&gt;.  And, ski season is coming up, and I really need to start bringing in more money to support my drinking habit (the &lt;a href=&quot;http://www.slccabanaclub.com/&quot;&gt;Cabana Club&lt;/a&gt; has become a second home to me now).  It&apos;s not that I drink heavily (well...), but that the &lt;a href=&quot;http://www.thebalvenie.com/&quot;&gt;good&lt;/a&gt; &lt;a href=&quot;http://www.highlandpark.co.uk/whisky&quot;&gt;Scotch&apos;s&lt;/a&gt;, the &lt;a href=&quot;http://www.greygoosevodka.com/&quot;&gt;good&lt;/a&gt; &lt;a href=&quot;http://www.ivodka.com/vodkaguide/belvedere.html&quot;&gt;vodka&apos;s&lt;/a&gt;, the &lt;a href=&quot;http://www.guinness.com/&quot;&gt;good&lt;/a&gt; &lt;a href=&quot;http://www.sapporousa.com/&quot;&gt;beers&lt;/a&gt;, etc.  And maybe a fine cigar or two.  And friends.  And then there&apos;s all those CD&apos;s to import from Japan, such as &lt;strong&gt;Pizzicato Five&lt;/strong&gt; and &lt;strong&gt;Yukari Fresh&lt;/strong&gt;, DVD box sets like &lt;strong&gt;The Godfather Series&lt;/strong&gt;, and the first three seasons of &lt;strong&gt;The Sopranos&lt;/strong&gt; while I sit and dream of a deluxe box set of ALL episodes of &lt;strong&gt;Homicide: Life on the Street&lt;/strong&gt;.  And did I mention &lt;a href=&quot;http://www.alta.com/&quot;&gt;S&lt;/a&gt;&lt;a href=&quot;http://www.snowbird.com/&quot;&gt;k&lt;/a&gt;&lt;a href=&quot;http://www.parkcitymountain.com/&quot;&gt;i&lt;/a&gt;&lt;a href=&quot;http://www.skibrighton.com/&quot;&gt;i&lt;/a&gt;&lt;a href=&quot;http://www.skisolitude.com/&quot;&gt;n&lt;/a&gt;&lt;a href=&quot;http://www.deervalley.com/winter/winterhome.asp&quot;&gt;g&lt;/a&gt;??&lt;em&gt;sigh&lt;/em&gt;And I didn&apos;t even talk about traveling.  Oh well, as long as I can continue to do &lt;em&gt;SOME&lt;/em&gt; of those, life will be good.  There are other aspirations as well.So somehow, &quot;Zope 3&quot; weekend experimenting is a little off the charts right now, but where I get a chance to work with it at the office, I will.  And of course, there will be reports here.In the meantime, &lt;a href=&quot;http://www.electrocd.com/cat.e/0201_IMNT.html&quot;&gt;buy this&lt;/a&gt; and &lt;a href=&quot;http://www.electrocd.com/cat.e/HZ3_THROAT.html&quot;&gt;this&lt;/a&gt; - finest packaging and noises.And in the mean-mean time - the democratic party is dead to me right now, and I&apos;m having a hard time even finding a stomach to cast a vote this year.  (there, now this post can land in the political category too).</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/10/22.html#a221</guid>			<pubDate>Wed, 23 Oct 2002 05:55:28 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=221&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F10%2F22.html%23a221</comments>			</item>		<item>			<title>Projecting What, Exactly?</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/09/19.html#a201</link>			<description>It&apos;s rough working on a project with little or no software design.  I&apos;m a little surprised by this, but after a year of being primarily independant or working with a very small company, it&apos;s been made very obvious.  We try to do something up front in some quick analysis sessions, and even do some agile modeling (of sorts) to sketch out table/object relationships.  But it&apos;s not long before the typical ruts happen - even the most agile of models can become difficult to update when you&apos;re effectively &lt;em&gt;an army of one&lt;/em&gt;, when you have no customer contact, and the real mastermind behind the project is extremely busy with their own projects.I can come up with a system out of my ass, but there&apos;s so much time being spent doing forced thinking - and most of it off the cuff and right into the application server.  Remarkably, most of it is turning out well - just slowly.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/09/19.html#a201</guid>			<pubDate>Thu, 19 Sep 2002 08:07:52 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=201&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F09%2F19.html%23a201</comments>			</item>		<item>			<title>A Zope 3 story - augmenting other components</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/09/02.html#a194</link>			<description>It&apos;s very late, so I&apos;ll try to make this quick and write up more later.  Today, I finally had enough free time in my coffers to download &quot;Python&quot; from CVS (aka - 2.3 pre-alpha) onto my old iMac, and augment that with &quot;Zope 3&quot; - the &lt;em&gt;ComponentArchitecture&lt;/em&gt; project.  Then I installed the simple but usable &lt;a href=&quot;http://cvs.zope.org/ZopeProducts/JobBoardEx/&quot;&gt;Job Board Example&lt;/a&gt;.  I soon noticed that said JobBoardExample was missing out on a couple of things - an editing interface, and an XML-RPC interface. One of the notions of Zope 3 is that it&apos;s supposed to be easier for developers to embrace and extend other components by being able to write new &quot;views&quot; for them.  So, I decided to write a JobEditView.  I made a new Product (esentially, a plain Python package) called JobBoardEditor, and filled it with a couple of files - &lt;tt&gt;EditJobView.py&lt;/tt&gt;, &lt;tt&gt;edit.pt&lt;/tt&gt; (the page template to edit a single job with), and &lt;tt&gt;configure.zcml&lt;/tt&gt;, the configuration file that ties it into the Zope system.  It wasn&apos;t long until I could go to a Job object and traverse to my new edit form, and then have the submit go to my &apos;edit&apos; method.  But, at this point, I&apos;m running into security issues that are beyond my measure to figure out, especially at 1:00 am with a beer headache. &quot;;-&gt;&quot;My other thing to try out was putting a simple XML-RPC interface on to the JobList.  This was particularly interesting to me as I&apos;ve found that while traditional &quot;Zope&quot; method calls should - in theory - work fine with something like XML-RPC, they seldom do.  Sometimes it&apos;s because too much HTML is returned from a call, but most of the time lately (for me at least), it&apos;s that I want the server to do some processing of the results before sending them out to the client, using the relatively simple data types afforded to XML-RPC.  As a result, I&apos;ve been adding in extra Python Scripts particularly for XML-RPC, and letting them work in the proper places either via acquisition or some other clever tricks.  It&apos;s not a bad system, but it&apos;s not exactly formalized or repeatable, since it&apos;s not in a formal Product.In Zope 3, this is different.  I wrote a simple XMLRPCView class.  &apos;View&apos; objects in Zope 3 have two state members - &apos;request&apos; (the incoming request object), and &apos;context&apos; - the object the View is applied against.  So, for me to add in the new functionality whereby I could just get a list of approved Job titles, I wrote the following Python file in my JobBoardEditor product:&lt;pre&gt;from Zope.Publisher.XMLRPC.XMLRPCView import XMLRPCViewfrom ZopeProducts.JobBoardEx.IJob import JobState class JobListXMLRPCView(XMLRPCView):    __implements__ = XMLRPCView.__implements__     def listJobTitles(self):        joblist = self.context        job_ids = joblist.query(state=JobState.Approved)        out = []        for jid in job_ids:            out.append(joblist[jid].summary)        return tuple(out)&lt;/pre&gt;Then, I added the following to &lt;code&gt;JobBoardEditor/configure.zcml&lt;/code&gt; (after adding &lt;code&gt;xmlns:xmlrpc=&apos;&lt;a href=&quot;http://namespaces.zope.org/xmlrpc&quot;&gt;http://namespaces.zope.org/xmlrpc&lt;/a&gt;&apos;&lt;/code&gt; to the head zopeConfigure element):&lt;pre&gt;&amp;lt;xmlrpc:view    name=&quot;joblistmethods&quot;    for=&quot;ZopeProducts.JobBoardEx.IJobList.&quot;    factory=&quot;.JobListXMLRPCView.&quot; /&amp;gt;&lt;/pre&gt;With this configuration statement, I&apos;ve added a new View to be published on the XMLRPC channel (which in Zope 3 runs on a different port than normal HTTP requests, which is probably wise) for objects that implement the IJobList interface.  I was able to do all of this outside of the JobBoardEx product.  I just had to ensure that the Product was added in &lt;em&gt;after&lt;/em&gt; JobBoardEx by using the site&apos;s &lt;em&gt;products.zcml&lt;/em&gt; file to affect the ordering.After restarting Zope 3 (which is a very slow restart on this machine), I was able to do this:&lt;pre&gt;Py$ s = Server(&apos;&lt;a href=&quot;http://localhost:8281/zoo/joblistmethods&quot;&gt;http://localhost:8281/zoo/joblistmethods&lt;/a&gt;&apos;)Py$ s.listJobTitles()[&apos;test test test&apos;]&lt;/pre&gt;I actually had created two jobs through the web interface, but had only approved one.  So I ducked in to the web interface to approve the other job, and then made the call again:&lt;pre&gt;Py$ s.listJobTitles()[&apos;test test test&apos;, &apos;the other job&apos;]&lt;/pre&gt;So, what are some benefits of this?  One that comes to mind is issue trackers.  Earlier in the day, I was writing a Python script to farm through some Tracker data and format it nicely for XML-RPC, with the intent of writing a simple AppleScript Studio application to list pending/accepted Tracker issues.  I did this informally, dropping a Python Script into the folder above a particular tracker.  Ultimately, it didn&apos;t work - and I think a lot of the blame goes on XML-RPC&apos;s utter disregard for semi-proper security.  Since Zope&apos;s always published objects on the web with regards to web security standards (or embarrasments, depending on your view) such as &apos;Basic Auth&apos;, it&apos;s had problems with the &quot;security by passing in arguments&quot; design of many XML-RPC API&apos;s.  But the point I was really going for was packaging.  Even if the Tracker Issue finding Python Script had worked over XML-RPC, now I have to find other places to put it by copying and pasting it, ultimately adding another name onto an ever growing namespace.With Zope 3, however, I could write an XML-RPC view particularly for the application I was designing as a normal Python component, and install and configure it as necessary (and hopefully that configuration work will be better than copying and pasting plain Python Script code).  I can name it specially, essentially adding a new namespace for my application.  I can distribute it to other users fairly easily.Another example would be implementing the Blogger API not as a new weblog product for Zope, but as a view/adapter component that publishes on the XML-RPC channel, and communicates with other Zope components, either built in ones or third party.In summary - my first tangible Zope 3 experience in quite some time has been hopeful and helpful.  There&apos;s still a long way to go, but the kernel is shaping up nicely.  The pattern driven / &quot;extreme programming&quot; sprint driven development has yielded a decent - but still shifting - code base that should be stronger and simpler than Zope 2.  Sometimes, there are enough levels of indirection in Zope 3 to make it look more complex, but so far most code has been easier to follow and trace than Zope 2 (although there are a number of empty folders/packages that probably need some brute force removing from CVS) - at least, it&apos;s usually easier to tell what&apos;s going on (and even this has an at least - at least, once you start learning the new paradigm).  Zope&apos;s ancester, Bobo (the kernel on which Zope is still based), was all about abstracting the means of publishing an object on the web away from the object itself.  Bobo, and then Principia / Zope 1.x, built upon this, but primarily in a single-UI / single protocol type way.  It&apos;s obvious today that there are many ways of looking at things on the web, including never actually using the web itself.  Zope 3 brings us back to the notion of an &lt;em&gt;object publisher&lt;/em&gt; being able to serve up objects on different protocols.  Zope 2 offers this today, but there is great difficulty in making WebDAV, normal HTTP, FTP, and XML-RPC all live harmoniously in the current design.And finally, Zope 3 should yield a usable scalable means of adapting the works of other developers into new solutions by providing better control of product/service/view configuration and overrides, such as adding a new XML-RPC API to someone elses bug tracking system without having to alter that bug tracking system, or use secret Python hacks to alter behaviour.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/09/02.html#a194</guid>			<pubDate>Mon, 02 Sep 2002 08:47:43 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=194&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F09%2F02.html%23a194</comments>			</item>		<item>			<title>Mac OS X 10.2&apos;s FTP and WebDAV issues with Zope</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/08/31.html#a193</link>			<description>&lt;a href=&quot;http://www.macosxhints.com/&quot;&gt;[Mac OS X Hints]&lt;/a&gt;: &lt;a href=&quot;http://www.macosxhints.com/article.php?story=20020831094305252&quot;&gt;Avoid Finder FTP services in 10.2&lt;/a&gt;.  Sadly, they&apos;re right.  FTP Services in the Finder are really sub-par, similar to where WebDAV Services were in Mac OS X 10.0.  Even if the FTP Services work, I&apos;ve had issues with file permissions.  I was very happy to mount a Zope server via FTP, go into a Python Script object, and open it up very quickly in Apple&apos;s simple TextEdit editor.  I made some changes, and tried to save, only to get permission warning after permission warning, with no changes saved.So I tried &lt;a href=&quot;http://www.webdav.org/&quot;&gt;WebDAV&lt;/a&gt; editing of Zope objects from the Finder.  I was able to open, edit, and save a file, only to go to the &quot;Zope&quot; server&apos;s management screens to see that the SQL Method I was trying to edit had turned into a plain File object.  Looking at the Undo Log (Zope&apos;s default object database keeps historical transactions that can be rolled back), I noticed that the save command had resulted in a page full of WebDAV operations - and that I had not actually saved to the old object in Zope, but that Mac OS X&apos;s WebDAV &apos;File System&apos; support had renamed the old object, put the new one in as a fresh upload, and then removed the original.  As such, Zope had no clue what the new incoming data should be, so it simply made a generic File object.  Fortunately, I was able to use Zope&apos;s &lt;em&gt;undo&lt;/em&gt; capabilities to get my original SQL Method back in place, and I went back to the old standby of editing in the TextArea or via XEmacs&apos; FTP support.&lt;em&gt;sigh&lt;/em&gt;.  Hopefully a nearby update to Mac OS 10.2 will fix the FTP support so that the upper layers of the OS don&apos;t freeze up.  And it would be especially nice if the file permissions problem went away too.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/08/31.html#a193</guid>			<pubDate>Sun, 01 Sep 2002 02:39:15 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=193&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F08%2F31.html%23a193</comments>			</item>		<item>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/08/22.html#a187</link>			<description>&lt;a href=&quot;http://wiki.zope.jp/ZTUtilsMakeQuery&quot;&gt;A Japanese Summary&lt;/a&gt; of yesterdays post, &quot;ZTUtils.make_query&quot;.  It looks beautiful in &lt;a href=&quot;http://chimera.mozdev.org/&quot;&gt;Chimera 0.4&lt;/a&gt;.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/08/22.html#a187</guid>			<pubDate>Thu, 22 Aug 2002 14:47:47 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=187&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F08%2F22.html%23a187</comments>			</item>		<item>			<title>ZTUtils.make_query</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/08/21.html#a186</link>			<description>Part of the overall Zope Page Templates system is a package called &lt;em&gt;ZTUtils&lt;/em&gt;.  ZTUtils contains a number of useful functions and objects for Page Template and Python Script usage.  Among other things, it contains a range of items for generating and dealing with trees (in replacement of the &lt;em&gt;dtml-tree&lt;/em&gt; tag), batching, and assorted smaller helpers.My favorite helper that I use in both Templates and Scripts is &lt;em&gt;make_query&lt;/em&gt;.  It does what its name says - it builds a query string.  But it&apos;s more than that - it also properly marshals ZPublisher types, does url quoting, and more.  So, gone are the days of building URL&apos;s like this:&lt;pre&gt;  RESPONSE.redirect(&apos;page.pt?message=All+very+well+then&apos;)&lt;/pre&gt;And in are the days of:&lt;pre&gt;  from ZTUtils import make_query  query = make_query(message=&apos;All very well then&apos;)  RESPONSE.redirect(&apos;page.pt?%s&apos; % query)&lt;/pre&gt;While it doesn&apos;t look terribly impressive, it&apos;s when query parameters start to build up that it&apos;s the most useful.  And the intent is clearer.  A page template example, based on working code:&lt;pre&gt;  &amp;lt;ul tal:define=&quot;ztu modules/ZTUtils; MQ python:ztu.make_query&quot;&amp;gt;    &amp;lt;li&amp;gt;     &amp;lt;a tal:attributes=&quot;href python:&apos;./force.py?%s&apos; % MQ(item_id=item.id,status=4)&quot;     &amp;gt;set all to passed&amp;lt;/a&amp;gt;  &amp;lt;/ul&amp;gt;&lt;/pre&gt;When the url is generated, it comes out as:&lt;pre&gt;  ./force.py?item_id=IXL0102&amp;amp;status:int=4&lt;/pre&gt;</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/08/21.html#a186</guid>			<pubDate>Wed, 21 Aug 2002 15:50:42 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=186&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F08%2F21.html%23a186</comments>			</item>		<item>			<title>Page Template Followup</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/08/20.html#a185</link>			<description>A couple of months back, I wrote up a series of posts on &quot;Zope&quot; Page Templates.  There was &quot;Zope Page Template Joys&quot;, &quot;More Page Templates (a buttal of sorts?)&quot;, and a screenshot of &quot;GoLive Editing in QuickEdit Mode&quot;.As a quick follow-up, I just have to say that with certain exceptions*, I&apos;m never going back to DTML again.  With or without a graphic HTML designer, Page Templates are just a much cleaner way to do dynamic pages.&lt;em&gt;* The exceptions are for when dealing with non-HTML/XML dynamic content.  Besides SQL Methods (which have special DTML tags that are actually a delight to use), this includes JavaScript and Style Sheets that need dynamic code.  Most of the time this tends to be JavaScript code snippets that need absolute URL&apos;s (a common Zope-ism), including navigation bars with heaps of rollovers.&lt;/em&gt;</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/08/20.html#a185</guid>			<pubDate>Tue, 20 Aug 2002 15:56:16 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=185&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F08%2F20.html%23a185</comments>			</item>		<item>			<title>Page-Load Handlers for Page Templates</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/08/09.html#a169</link>			<description>I&apos;ve been doing a lot of &quot;Zope&quot; and &quot;CMF&quot; work lately, wrapping up a couple of projects and tinkering around with our own internal project site (hence all the recent interest in Bug/Issue Trackers, of which I still don&apos;t have a satisfactory conclusion about).  There&apos;s not much to say except for a fair amount of praise.  Zope 2.5.1 is a pretty solid release, and the recent &lt;em&gt;new technologies&lt;/em&gt; that have been added to Zope, such as Page Templates, Python Scripts, and long-overdue Session management are pretty much done right.  I&apos;m not without a few complaints / desires.  The one that really caught my mind today (from an annoyance that I had to bully through under tight deadline a month and a half ago) is this:&lt;h4&gt;Page-Load Handlers for Page Templates&lt;/h4&gt; On one recent project, I had to deal with session timeout situations or situations where a user visited a page directly with no session data (their user id or shopping cart contents).  The solution that worked out best for me was to just allow certain errors to happen (KeyErrors, etc), and catch that in &lt;em&gt;standard_error_message&lt;/em&gt; and report it as &quot;hmm, your session has most likely expired.&lt;/em&gt;.  Unfortunately, this could mask other errors in the system - testing found most of them, and a &quot;session timeout&quot; is a friendlier error message than most, but I&apos;m still uncomfortable for the situations it may be untrue in.  In DTML, it was pretty easy to add a couple of lines of code to catch the situation and raise a redirect error.  In Page Templates, it&apos;s a bit trickier.  And uglier.  &lt;a href=&quot;http://www.asp.net/&quot;&gt;ASP.NET&lt;/a&gt; has a &apos;Page_Load&apos; event handler a developer could write.  It can be used to prepare data for a Page, or to do preconditions.  I think that Page Templates might benefit from a similar solution - add a &apos;Page Load Handler&apos; field that is a TALES expression of its own.  I see a fair amount of page templates that weigh themselves down with excessive TALES &apos;define&apos; expressions at or near the top of a document, sometimes with funky boolean logic to try to prepare data for use later on.  Attaching a Page_Load handler that could return data to add to the TALES &lt;em&gt;options&lt;/em&gt; context, or return a substitute page in advent of some logic succeeding/failing (ie - a session timeout) could be quite advantageous.  It could also benefit situations where Response headers need to be altered.  And finally - it would help the separation of Template Logic (aka &quot;display logic&quot;) from some of the more programmatic logic that still seeps in to Page Templates from time to time.  It&apos;s just a thought.  There are ways around having such a handler built in, but the ones I&apos;ve toyed with have proven to be fallible or tricky to maintain.</description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/08/09.html#a169</guid>			<pubDate>Sat, 10 Aug 2002 04:39:58 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=169&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F08%2F09.html%23a169</comments>			</item>		<item>			<title>Another Zope Issue Tracker</title>			<link>http://radio.weblogs.com/0106123/categories/zope/2002/07/26.html#a161</link>			<description>I found this &lt;a href=&quot;http://www.zope.org/Members/peterbe/IssueTrackerProduct&quot;&gt;Issue Tracker&lt;/a&gt; yesterday while looking at &lt;a href=&quot;http://www.zwiki.org/&quot;&gt;ZWiki.org&lt;/a&gt; for ZWiki updates.My quest for a good issue tracker is still frustrating.  &lt;a href=&quot;http://www.zope.org/Members/klm/TrackerWiki/FrontPage&quot;&gt;Tracker&lt;/a&gt; still comes closest to what I seem to want - something with detail and workflow for team use, but not too difficult for a non-tech person to submit an issue.But I also like the simplicity of &lt;a href=&quot;http://www.ranchero.com/bugs/&quot;&gt;this bug tracker&lt;/a&gt; by &lt;a href=&quot;http://www.inessential.com/&quot;&gt;Brent Simmons&lt;/a&gt;.  I wonder if I might just end up writing my own that&apos;s closer to this.Personally, I didn&apos;t mind &quot;Roundup&quot; as a bug tracker.  It was fast, and the other developer and I that used it during the &lt;em&gt;transition phase&lt;/em&gt; of &lt;a href=&quot;http://www.24tix.com/&quot;&gt;24Tix&lt;/a&gt; 1.0 were pretty succesful with it.  But there were some things that I ultimately had too much issue with:&lt;ol&gt;&lt;li&gt;No indication that a post-install schema change was possible.  I wanted to add in a couple of fields, such as &lt;em&gt;Expected Version&lt;/em&gt; and &lt;em&gt;References&lt;/em&gt;, to an already running database.  I know now that this is in fact doable.&lt;/li&gt;&lt;li&gt;Configuration and setup of new instances too difficult.  Actually, they&apos;ve done a decent job of this, but really getting Roundup installed requires better Unix familiarity than I have - particularly things like setting up a dedicated Roundup user/group.  I&apos;m primarily a developer, not an administrator, and the guy who runs the administrator duties never had time to help me here.  This could be a significant issue if I needed to go through him every time I needed to set up a new instance.  In Zope, one just adds a new Tracker (Or CMF Collector, or IssueTracker, or what have you).  It&apos;s a domain I&apos;m personally more familiar with, so I&apos;m going to stay there for the time being.&lt;/li&gt;&lt;li&gt;Difficult to integrate with other Project artifacts.  With &quot;Roundup&quot;, the issue tracking database was off in its own area, even when using ZRoundup (which is basically a small gateway between Zope and the normal Roundup CGI application).  Thus, a few structural and navigational elements I was using in the look and feel of our very basic Projects site would get lost.&lt;/li&gt;&lt;/ol&gt;Basically, I&apos;ve come to the conclusion that I&apos;m too steeped in &quot;Zope&quot; for anything else to be useful on the time tables that I have.  &lt;em&gt;Tracker&lt;/em&gt; is nice now that it&apos;s running, but there are still small gotchas and rough areas.Right now, our Project Management site is a loose collection of folders, letting the person responsible for a certain project to decide how they want to track artifacts.  Most of my projects use a combination of &lt;a href=&quot;http://zwiki.org/&quot;&gt;ZWiki&lt;/a&gt; and &lt;a href=&quot;http://www.zope.org/Members/klm/TrackerWiki/FrontPage&quot;&gt;Tracker&lt;/a&gt;, to some degree of success.  It&apos;s lightweight and easy to get up and running for a new project, and I&apos;ve had success with this combination before.As things grow, however, real content management &lt;em&gt;might&lt;/em&gt; be needed.  Perhaps when CMF hits 1.3 and &lt;a href=&quot;http://www.plone.org/&quot;&gt;Plone&lt;/a&gt; hits 1.0, I&apos;ll reconsider CMF + CMFCollector.  But the solution we have now works decently. </description>			<guid>http://radio.weblogs.com/0106123/categories/zope/2002/07/26.html#a161</guid>			<pubDate>Fri, 26 Jul 2002 15:20:53 GMT</pubDate>			<comments>http://radiocomments.userland.com/comments?u=106123&amp;amp;p=161&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106123%2F2002%2F07%2F26.html%23a161</comments>			</item>		</channel>	</rss>