<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Zope vs Django &#8211; Here&#8217;s some gasoline to put out the fire</title>
	<atom:link href="http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/</link>
	<description>software development and testing</description>
	<lastBuildDate>Thu, 24 Apr 2008 12:51:01 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Roy Mathew</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-621</link>
		<dc:creator>Roy Mathew</dc:creator>
		<pubDate>Sun, 28 May 2006 13:00:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-621</guid>
		<description>Holger, I have to say that your post offers one of the best takes on why one should use z3. I would only add that the learning curve is steep, at least for me.. don&#039;t expect to be productive in a few days. But, it is WORTH it.</description>
		<content:encoded><![CDATA[<p>Holger, I have to say that your post offers one of the best takes on why one should use z3. I would only add that the learning curve is steep, at least for me.. don&#8217;t expect to be productive in a few days. But, it is WORTH it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max The IT pro</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-335</link>
		<dc:creator>Max The IT pro</dc:creator>
		<pubDate>Sat, 11 Feb 2006 09:03:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-335</guid>
		<description>Excellent post Holger!
I&#039;ve been looking at web frameworks for a while and now you&#039;ve piqued my interest in Zope 3. I had already made up my mind to skip its 2.0 incarnation.
I&#039;ll also post a blog entry soon about your post once I get some time. :-)

Max in Kenya
====</description>
		<content:encoded><![CDATA[<p>Excellent post Holger!<br />
I&#8217;ve been looking at web frameworks for a while and now you&#8217;ve piqued my interest in Zope 3. I had already made up my mind to skip its 2.0 incarnation.<br />
I&#8217;ll also post a blog entry soon about your post once I get some time. :-)</p>
<h1>Max in Kenya</h1>
]]></content:encoded>
	</item>
	<item>
		<title>By: Viva La Chipperfish &#187; Ask Google: Python Web Framework Statistics</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-328</link>
		<dc:creator>Viva La Chipperfish &#187; Ask Google: Python Web Framework Statistics</dc:creator>
		<pubDate>Thu, 09 Feb 2006 14:23:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-328</guid>
		<description>[...] rite Your Own Web Framework&#8221; 	&#8220;Zope, flames and the Koolaid remark&#8221; 	And this great comment sent to me on why Zope 3 deserves a seat at the table. 	Peace, Love, and Pytho [...]</description>
		<content:encoded><![CDATA[<p>[...] rite Your Own Web Framework&#8221;    &#8220;Zope, flames and the Koolaid remark&#8221;   And this great comment sent to me on why Zope 3 deserves a seat at the table.   Peace, Love, and Pytho [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Huggins</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-326</link>
		<dc:creator>Jason Huggins</dc:creator>
		<pubDate>Thu, 09 Feb 2006 00:04:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-326</guid>
		<description>Holger, You&#039;ve pretty much answered every question/complaint I could possibly think of.  :-) Comments like yours will go a long, long, long way to bringing frustrated folks like me back into the fold.
And, yes, I&#039;m starting to understand that there&#039;s still some learnin&#039; involved with a touch of Kool-aid required, but now its for completely different (and quite possibly) good reasons.

Thank you so very much for writing!

- Jason

P.S. Didn&#039;t know that about Ubuntu, &#039;tis my favorite Linux, too.</description>
		<content:encoded><![CDATA[<p>Holger, You&#8217;ve pretty much answered every question/complaint I could possibly think of.  :-) Comments like yours will go a long, long, long way to bringing frustrated folks like me back into the fold.<br />
And, yes, I&#8217;m starting to understand that there&#8217;s still some learnin&#8217; involved with a touch of Kool-aid required, but now its for completely different (and quite possibly) good reasons.</p>
<p>Thank you so very much for writing!</p>
<ul>
<li>Jason</li>
</ul>
<p>P.S. Didn&#8217;t know that about Ubuntu, &#8217;tis my favorite Linux, too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Holger Froebe</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-325</link>
		<dc:creator>Holger Froebe</dc:creator>
		<pubDate>Wed, 08 Feb 2006 22:13:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-325</guid>
		<description>Ah, and I forgot - the collaborative development
of my favourite Linux distro (Ubuntu)
is managed by a Zope3-Application -
see http://launchpad.net ...

or the shiny Z3-based Schooltool if you want
to manage ressources and calendars ...
see http://www.schooltool.org

Zope3 is really smoking ;-)</description>
		<content:encoded><![CDATA[<p>Ah, and I forgot &#8211; the collaborative development<br />
of my favourite Linux distro (Ubuntu)<br />
is managed by a Zope3-Application -<br />
see <a href="http://launchpad.net" rel="nofollow">http://launchpad.net</a> &#8230;</p>
<p>or the shiny Z3-based Schooltool if you want<br />
to manage ressources and calendars &#8230;<br />
see <a href="http://www.schooltool.org" rel="nofollow">http://www.schooltool.org</a></p>
<p>Zope3 is really smoking ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Holger Froebe</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-324</link>
		<dc:creator>Holger Froebe</dc:creator>
		<pubDate>Wed, 08 Feb 2006 21:32:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-324</guid>
		<description>Hello Jason,

when I read your post, I smiled a little. 
Because I was in a similar situation in January/February
2005. Let me introduce: My name is Holger
Froebe, I work for the IT of a university hospital
here in Germany (does this count for enterprise
requirements? I hope so.) - sorry for my crude
english. 

.........and now for something completely different ..........

We had some web-applications written in plone and 
wanted to extend this stuff throughout the company 
which failed via some of the reasons 
(Integration of Oracle/User management) which you adressed 
in your rant. The main goal of this extension project
was to ensure integrity of data stemming from
different sources (mainly Legacy systems, like SAP,
Oracle, stuff from File/FTP server, MySQL, SQLServer -
the whole spectrum ;-) 

Why did we fail ?
First let me get one point clear: I think Plone has 
its strenghts and merits and if you stay close to 
the main street of its framework layout and its
original intention (see below), you can get very
satisfactory results - see Oxfam, Ebay-Developer Plattform,
Motorola and a lot of other impressive projects. 

But if you look at its history, you see a pattern:
Plone started as a replacement for the User Interface of 
the Content Management Framework (CMF) of Zope2. But
over the years more and more architectural
stuff slipped into the original Skin Package - which
suddenly became a framework of its own. 
It started as one package - now
you have 13 (or so) Zope packages which constitutes Plone.
And this software stack got bigger with ev&#039;ry release: There
is python, then comes zope, then plone, then put archetypes and
on top of it ArchetypesContentTypes. To add it, all this
stuff has strong inner dependencies. 
So with all those dependencies
Plone slowly drifted away from its original goal (getting a more usable
+ visually appealing UI for Zope-CMF) and now does a lot of stuff 
which should be done better deep down
in the software stack - may it be a pure python library
or a standard Zope Component/Product. 
And that - to my totally personal mind - was the reason we failed
with a complex enterprise scenario. 
If you&#039;re interested in this point of view,
I&#039;ll recommend you Chris Withers insightful talk 
&quot;Plone rocks my world&quot; - http://www.simplistix.co.uk/presentations

.........and now for something completely different ..........

But - What was the solution ?

We tried different approaches, but stayed
closely in well-known Python territory and rounded up
the usual suspects: TurboGears, Django, Zope3, to name
the most prominent. 

And the winner was ... Zope3 (now its time
to put on my fireproof suit, right ;-)

We started to work with it in Spring 2005 - 
and we never looked back. 


Man, this is such an amazing piece of software !
For me it&#039;s like a piece of art ;-) 
Everyday I work with it I&#039;m getting more  
enthusiastic about it. 


Zope3 is build on some values which in my mind 
really counts if you want to build an enterprise system:

- Quality
- Dynamics + Extensibility
- Flexibility
- Reuse, reuse and reuse again ;-) 
- Clear and concise separation of concerns
- Focus on core competencies 
  = Avoid the Not-invented-here-syndrom 
    + integrate proven solutions from outside your world 

Zop3 is not the monolithic big framework like many
other appservers today, but a collection of loosely
coupled pieces where every piece has a clear and defined
responsibility and quality. There are a some 
thousand tests to ensure the last one. You can use nearly every
of this little pieces (Zopies call them &quot;components&quot;)
outside Zope. This separation of concerns to the extreme
leads in a fast way to locate, isolate and remove errors - 
that really saved some of my days in the last few months.

At the same time the Zope3-Guys build via ruthless refactoring a framework 
which brings Zope-World closer to Python standard world 
(stuff like WSGI, relational Database connectivity etc. - see
below). 

Heck, you can even use Zope-Code for a client 
app which doesn&#039;t know anything Persistency or ZODB. 
Yes, it&#039;s true: You can write pure desktop applications 
using Zope-Code without caring about ZODB - Example:
The CCPublisher2 rewrite of the CreativeCommons-Project,
see http://svn.berlios.de/svnroot/repos/cctools/publisher/trunk
or http://wiki.python.org/moin/PyCon2006/Talks#48
Or you want to use a collaborative tool for groups with
instant + slick visual feeling - try Bebop which strongly
relies on Zope3-Technologies on server AND client side. 


.......and now for something completely different .....


The Zope3-Team discussed very thoroughly: What are the
core competencies of Zope and what not ?
For example: Zope2 had its own webserver - ZServer. 
But why write and maintain such a beast when there
is something better in Python-World ?
So the Zope3-Guys integrated Twisted and 
got best of both worlds. 


... and now for something completely different ...

Relational Databases and Zope3

You described very well in your rant the problems with Oracle.
This was nearly 100% identical to our experience,
so my smile from the beginning of this post
comes a little bit from the pain I left behind me. 

With Zope3 there are two approaches:

a) Use cxOracleDA-adapter (http://svn.zope.org/cxoracleda/)
   Looking at this source code I was amazed how easy and
   straightforward it is to integrate a well-known and proven
   python-Standard DB-Adapter into Zope3-world. 
   The same pattern again: Take a proven quality piece 
   of software from standard python world, put on a small wrapper 
   and - whoa - use it right away in Zope3. 
   
   Well, and then you could put sql-expressions into your templates
   via sql-expressions (uhm, not really recommended ;-) or use
   your zsql-scripts from Zope2. 
   
   But then we thought there should be a better solution, 
   which breathes the spirit of Zope3 ... which led us to 

b) an OR-Mapper-Solution

   We tried SQLObject first, since it had a &quot;native&quot; Zope3-Integration
   via sqlos. But Oracle connectivity is not one of the main targets
   of SQLObject, despite there is a Oracle-SQL-Object-0.6.1-branch
   in the repository.
   
   PyDo2 from the Skunkweb-Project looked really promising, but
   we had to put the name of the table into the class-definition,
   so this was not flexible enough. Despite Oracle-Connectivity
   was OK. 
   
   So we ended up with the best (shameless marketing) 
   enterprise ORM in python-world: SQLAlchemy (http://www.sqlalchemy.org)
   Yes, there&#039;s no official download and the developers
   say there&#039;s only Version 0.9.1 - but it&#039;s pretty close to final 1.0
   and it really suits our needs. 
   
   The great difference between SQLAlchemy and the rest of the bunch
   is that other ORM-Mappers try to fit relational databases by all means
   into Object-World. But a relational DB is no misled ObjectStore and
   the whole analogy breaks more and more down with 
   - larger databases
   - transactional aspects
   - complex datasets/queries over many tables.
   
   SQLAlchemy has the same philosophy as Z3 in 
   - extreme separation of concerns and 
   - integration of standard DB Adapters
   - high quality of code + easy readability
     (anybody said &quot;pythonic&quot; ;-)
   - good quality of documentation   

   SQLAlchemy treats a Class as a Class, a RDB as a RDB, and 
   (you guessed it, right?) a RDB Table as a 
   RDB Table and connects them via mappers, which can easily
   enriched with some standard methods/queries provided by
   the framework. 
   It makes heavy use of the new dynamics aspects enriching
   Python with the last few releases in the 2.x-line. 
   
   With SQLAlchemy I could drop the lines of code of my sql-related
   stuff somewhere around 20-30%. And I REALLY like the approach
   of &quot;Writing less code&quot;. Doing all my RDB-Stuff in python
   is an extra-Bonus (OK, to be honest - some complex queries
   survived, but I think this is only a matter of time, since
   they vanish ;-)


So you&#039;re not alone in Zope3-Oracle-World. To
cite the glorious A. A. Milne &quot;And then there were three&quot;
(and maybe even more, if someone answers this post ;-) 

... and now for something completely different ...

LDAP-Integration

  Zope3 is very concise about Authentication via 
  so-called PAU&#039;s - Pluggable Authentication Utilities. 
  You could easily plug together Authentication sources
  with different Authentication methods - its as easy
  as plug your lego-stones together. 
  
  Like in RDB-World: First you define an Adapter to your
  Datasource - lets call it LDAP-Adapter, right - 
  which defines and holds the connection to your 
  external LDAP-Source (http://svn.zope.org/ldapadapter/).
  That way, you could even use more than one LDAP-Source 
  in your Application. 
  
  Then you have another clearly defined LDAP-PAS (http://svn.zope.org/ldappas/).
  which does the authentication against this Adapter. 
  
  And the whole beast (you guessed it again, right?) is a small,
  well-defined wrapper around python-ldap. Plus 
  it&#039;s easy to read and fast to understand (my 2 cents). 
  It&#039;s like dejavu all over again ;-) 
  
  Hint: I just played around with this LDAP-stuff and never 
  tested that in our production environment,
  but I have great confidence from my previous experiences
  with Zope3 that it should be working relatively seamless.

... and now for something completely different ... 

ZCML

  Well, everybody beats on ZCML, since its such an easy
  target - &quot;Hey, it&#039;s XML - that&#039;s bad. We don&#039;t want
  to use XML (for whatever ideological reason), so 
  Zope3 must be something ill-constructed&quot;
  
  If you ask me about my feelings about ZCML, I would
  not try to convince you it was made in heaven and tell you
  that you are too blind to see the light ;-)
  
  But - as often in life: truth lies somewhere in
  between the extremes. My 2 cents: 
  
  1. I share your feelings about not direct
     debugging ZCML, despite the fact that Zope3.2 brings
     very concise error-tracebacks. 
     
  2. The Zope3-Guys are aware of the problems users have with
     ZCML. They try REALLY hard to bring as much ZCML back
     to python as possible - see 
     http://www.z3lab.org/sections/blogs/philipp-weitershausen/2005_12_14_zcml-needs-to-do-less
     for a thorough discussion from one of the core developers
     of Zope3. Looking from Zope3.0 to Zope3.2 (the current release) some
     stuff vanished from ZCML, so those guys do their homework
     and will do it even more on the upcoming Zope3.3 release. 

  3. The best thing at the end (now Z3-Team will really beat me ;-): 
     You can write up and use 
     ALL (right, ALL) ZCML-directives right away as python-code, if you don&#039;t 
     XML. 
     And yes, this is even documented (call me old-fashioned, 
     but I read docs first). You may say, that there are such
     a huge amount of README&#039;s and other .txt-stuff spread
     over the whole Zope-Project, that its not easy to get into it.
     But Zope3 provides you with a toolscript
     called &quot;static-apidoc&quot; which gives you a clear, concise
     overview of the whole documentation as a static website. 
     
     Now if you look at the README under zope/component or 
     at the static-apidoc unter &quot;Component Architecture&quot;
     you find methods like provideAdapter, provideUtility,
     which do - surprise, surprise - the equivalent of 
     ZCML-alternatives. Or look at zope/component/site.py
     or zope/configuration
     
     You want to see this in action ? Look at this
     2-part-example of a simple Z3-object publishing system
     without any piece of ZCML:

     Part I: The Zope Component Architecture - 
     Interfaces, Adaptation, and Duck Typing 
     http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html

     Part II: The Zope Component Architecture - 
     One Way To Do It All 
     http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html

     Browsing through the docs, you can find the other
     replacements in a straightforward way (or you debug
     the xmlconfig-stuff from zope/configuration, which
     gives you the corresponding callables for ZCML)
     
     If that&#039;s too tough and time-consuming - no problem,
     ask on the Zope3-Users mailinglist. Those guys are
     REALLY helpful to get you into Z3-world. 

... and now for something completely different ..

Kool-Aid and the magic world of interfaces and adapters
        
Speaking with developers about Zope3 you often hear 
that interfaces and adapters are too much magic and 
they have to drink so much Kool-Aid to understand them. 
I won&#039;t put this here into a lengthy pro-con-discussion 
of these concepts, since I&#039;m not really a core developer, 
but more an application developer/maintainer. 


But to tell you my story:

It took me a while to GET the main ideas/principles 
behind this stuff - to be honest,
2 days of intensive, dedicated work and 5 litres of H2O. 
After one week of working with Zope3 I was more productive than
before. Plus I had learned a lot of new stuff about programming
in a quality way. Yes, dealing with Zope3 has made
me a better programmer - even if I never should do anymore project
with it ;-( 

Plus it helped me to get my things done better + faster.

Well, that&#039;s Kool-Aid I really like !


    
I wont&#039;t say this world of interfaces and adapters
is the easiest to understand. But again: 
There are a good amount of play-around-with-it-tutorials/docs/books 
around which take you into Zope3-World. Just give it a try !

Want some examples? Want some simple apps to play around with?


Well, it was never easier than with Zope3 - see yourself


Here&#039;s some easy stuff which you can work through in less than 1 hour
(well, the last example takes you longer ;-) 
    
a) &quot;Zope3 in 30 minutes&quot; - at 
   http://zissue.berlios.de/z3/Zope3In30Minutes.html
   showing you step by step how to build your first 
   simple Z3-application to collect your bookmarks on a server

       
b) Did I mention the magnificent Jeff Shell ? His blog
   griddlenoise.blogspot.com is a rich and really insightful source
   for getting into Zope3 -  plus it&#039;s really fun to read. 

   In his archives you find this funky little thing

   http://euc.cx/toulouse/archives/simple_todo_application/
   (alternative http://worldcookery.com/files/jeffshell-todo/ )

   where Jeff tells you how to build a Rails-like ToDo-Application
   in some simple steps. In every step he shows you what
   to do and why he thinks this implementation is carefully
   thought out in Zope3 and what is the reason they did it this
   and no other way.

c) Want a fresh new zope3-site without understandig &quot;all the magic&quot;
   inside? Choose life - choose the z3 project starter 
   http://www.zope.org/Members/adytumsolutions/z3project_starter/z3project_starter_released
   Answer a few simple questions and you have a project skeleton
   to play around with without deeply understanding all this &quot;kool-aid&quot; upfront. 
          
d) Philipp von Weitershausens Website/Book about Zope3 - 
   http://worldcookery.com 
   

You will find more of this tutorials on Phillips website under
http://worldcookery.com/appetizers. 
    
And this is not the end. New stuff is landing every day
in Zope3-space - like this little gem about events/notifications 
and how they help you handle complex application
architectures: 
    
http://remarkablysimple.blogspot.com/
    
Or you look at www.z3lab.org where you can get a peek
of the Zope3-ECM-Initiative and so on so on ...
    
So, my advice to you: Fire on feedster.com, type in Zope3 ...
and you&#039;ll find a lot more of this diamonds. 
       

I made the experience that most of the complaints about
Kool-Aid come from developers who specialized in certain
frameworks/habits and now had difficulties to extend 
their mindset since they had to leave known territory. 
They struggled with Zope3, found some hurdles and then gave up, 
since &quot;there&#039;s so much kool-aid&quot;. 

I was surprised to find out that absolute newbies to programming 
get productive with Zope3 very fast and easily - 
maybe since they are not fixed on certain stuff. 
    
I mean, sometimes I don&#039;t get it: People want to write programs
for real complex enterprise scenarios, but at the same
time tell me it&#039;s too hard to spend a few hours to play with some toy examples
and read some docs and play with the marvellous python command prompt 
trying to push their brain into a new direction. 

    
Believe me: This whole interface-adapter-pattern definitely helps 
you in bigger/complex projects evolving over time. 
Remember Fred Brooks Mythical Man-Month, which made so many of us aware
that change of requirements is inherent in any software project - 
even if the whole system is in production use.

Zope3 has not ALL, but a lot of REALLY GOOD answers 
to this situation every developer faces from time to time ;-) 


... and now for something completely different ..

Querying the ZODB from outside applications
        
I&#039;m convinced that it should be easy and I know
that the guys in the Bebop-Project did some stuff
in this direction, But I&#039;m no expert in that, 
since relational databases
constitutes more of my work. If you want to
have a profound answer on this - push it
on the Zope3-Users-Mailinglist (sorry, that
wasn&#039;t a sufficient answer, right?). Those
helpful souls there will really show you
the best and easiest way to do it.
  
..... and now for something completely different ....

Coming back to your Plone-dissatisfaction

I don&#039;t want to tell you that Plone is bad. Or Plone
sucks. Or stuff like that. For me it&#039;s the right tool
for the projects it was made of - usable portal solutions
for medium size. The same holds for Django which
is also OK, if I want to make a fast RDBMS-UI-App. 

The good thing is: For different work tasks there
are different tools in my toolchest. It&#039;s my
responsibility to choose the right one for
every new project, but it leaves me with a 
warm safe feeling that the toolbelt is filled 
with such good quality stuff.

And the good news is just around the corner:
Plone and Zope3-World are converging - approaching
each other with every day. Now what does that mean?

Since I worked with plone it was easy to find my
way in Zope3-World. Zope3 tried to learn from
the Zope2 AND the plone lessons and put a lot of
the best breed of Plone (which constituted at the 
same time those hard-to-manage architectural overhead) 
back to the core of the framework. Well, this
is not totally right, since there is no such thing 
as a monolithic core of Zope3-framework - the greatest lesson
learned from the problems with complex Zope2-projects.
Which is the best news of all ;-) 

Know Archetypes ? There is schema-driven content-types
with form generation (zope.formlib)

Know Skins and Layers ? Use them right away in Zope3

Know Portlets ? Generalized to Viewlets and managed via ViewletManagers.

RessourceRegistries? Now known as RessoureLibrary. 

... and so on ... and so on ...

But at the same time the Plone guys push their stuff
more and more towards the proven Z3-technologies - 
and by handing over Z3 the framework responsibilities 
the Plone community again can concentrate on being
the big shot at their homeground - 
to provide you with the &quot;MacOS of CMSes&quot;
(well at least that&#039;s what Limi told me ;-)

I also appreciate the other web frameworks
in Python world - and I&#039;m happy to see that
there will be a &quot;WebFramework&quot;-Track during
Europython this year where zopies, djangistas
and turbogearianos and all those funky-stuffistas
will get into fruitful
discussions about solutions. I&#039;m really
looking forward to this meeting since
we can learn a lot from each other
if we leave our minds open for the NEW. 


.... and now for something completely different ....

There is so much more to say about this marvellous
piece of software (like the integration 
of other templating languages like meld or clarity
or the integration of standards like Java-like Portlet-Stuff or
WFMC - the Workflow-Coalition - and and and) 
but let me come to an end, since it&#039;s really late
and I need some sleep: 

I work for 20 years with software and applications.
Zope3 is one of the most professionall, mature
and qualitative outstanding frameworks I saw.

It&#039;s really fun to work with, if you have a sense for
lasting quality solutions, if you want to be
proud of the stuff you created. 


Thanx for your patience + Good night,

Holger @ Germany 


PS: If you&#039;ve got any specific question about Zope3,
drop me a not at booradley@web.de. Or visit some
of the links in my rant. Or subscribe
to the Zope3-User-Newsgroups and ask your questions.
This world is really full of possibilities ;-)</description>
		<content:encoded><![CDATA[<p>Hello Jason,</p>
<p>when I read your post, I smiled a little.<br />
Because I was in a similar situation in January/February<br />
2005. Let me introduce: My name is Holger<br />
Froebe, I work for the IT of a university hospital<br />
here in Germany (does this count for enterprise<br />
requirements? I hope so.) &#8211; sorry for my crude<br />
english. </p>
<p>&#8230;&#8230;&#8230;and now for something completely different &#8230;&#8230;&#8230;.</p>
<p>We had some web-applications written in plone and<br />
wanted to extend this stuff throughout the company<br />
which failed via some of the reasons<br />
(Integration of Oracle/User management) which you adressed<br />
in your rant. The main goal of this extension project<br />
was to ensure integrity of data stemming from<br />
different sources (mainly Legacy systems, like SAP,<br />
Oracle, stuff from File/FTP server, MySQL, SQLServer -<br />
the whole spectrum ;-) </p>
<p>Why did we fail ?<br />
First let me get one point clear: I think Plone has<br />
its strenghts and merits and if you stay close to<br />
the main street of its framework layout and its<br />
original intention (see below), you can get very<br />
satisfactory results &#8211; see Oxfam, Ebay-Developer Plattform,<br />
Motorola and a lot of other impressive projects. </p>
<p>But if you look at its history, you see a pattern:<br />
Plone started as a replacement for the User Interface of<br />
the Content Management Framework (CMF) of Zope2. But<br />
over the years more and more architectural<br />
stuff slipped into the original Skin Package &#8211; which<br />
suddenly became a framework of its own.<br />
It started as one package &#8211; now<br />
you have 13 (or so) Zope packages which constitutes Plone.<br />
And this software stack got bigger with ev&#8217;ry release: There<br />
is python, then comes zope, then plone, then put archetypes and<br />
on top of it ArchetypesContentTypes. To add it, all this<br />
stuff has strong inner dependencies.<br />
So with all those dependencies<br />
Plone slowly drifted away from its original goal (getting a more usable<br />
+ visually appealing UI for Zope-CMF) and now does a lot of stuff<br />
which should be done better deep down<br />
in the software stack &#8211; may it be a pure python library<br />
or a standard Zope Component/Product.<br />
And that &#8211; to my totally personal mind &#8211; was the reason we failed<br />
with a complex enterprise scenario.<br />
If you&#8217;re interested in this point of view,<br />
I&#8217;ll recommend you Chris Withers insightful talk<br />
&#8220;Plone rocks my world&#8221; &#8211; <a href="http://www.simplistix.co.uk/presentations" rel="nofollow">http://www.simplistix.co.uk/presentations</a></p>
<p>&#8230;&#8230;&#8230;and now for something completely different &#8230;&#8230;&#8230;.</p>
<p>But &#8211; What was the solution ?</p>
<p>We tried different approaches, but stayed<br />
closely in well-known Python territory and rounded up<br />
the usual suspects: TurboGears, Django, Zope3, to name<br />
the most prominent. </p>
<p>And the winner was &#8230; Zope3 (now its time<br />
to put on my fireproof suit, right ;-)</p>
<p>We started to work with it in Spring 2005 &#8211;<br />
and we never looked back. </p>
<p>Man, this is such an amazing piece of software !<br />
For me it&#8217;s like a piece of art ;-)<br />
Everyday I work with it I&#8217;m getting more<br />
enthusiastic about it. </p>
<p>Zope3 is build on some values which in my mind<br />
really counts if you want to build an enterprise system:</p>
<ul>
<li>Quality</li>
<li>Dynamics + Extensibility</li>
<li>Flexibility</li>
<li>Reuse, reuse and reuse again ;-) </li>
<li>Clear and concise separation of concerns</li>
<li>Focus on core competencies<br />
= Avoid the Not-invented-here-syndrom </p>
<ul>
<li>integrate proven solutions from outside your world </li>
</ul>
</li>
</ul>
<p>Zop3 is not the monolithic big framework like many<br />
other appservers today, but a collection of loosely<br />
coupled pieces where every piece has a clear and defined<br />
responsibility and quality. There are a some<br />
thousand tests to ensure the last one. You can use nearly every<br />
of this little pieces (Zopies call them &#8220;components&#8221;)<br />
outside Zope. This separation of concerns to the extreme<br />
leads in a fast way to locate, isolate and remove errors &#8211;<br />
that really saved some of my days in the last few months.</p>
<p>At the same time the Zope3-Guys build via ruthless refactoring a framework<br />
which brings Zope-World closer to Python standard world<br />
(stuff like WSGI, relational Database connectivity etc. &#8211; see<br />
below). </p>
<p>Heck, you can even use Zope-Code for a client<br />
app which doesn&#8217;t know anything Persistency or ZODB.<br />
Yes, it&#8217;s true: You can write pure desktop applications<br />
using Zope-Code without caring about ZODB &#8211; Example:<br />
The CCPublisher2 rewrite of the CreativeCommons-Project,<br />
see <a href="http://svn.berlios.de/svnroot/repos/cctools/publisher/trunk" rel="nofollow">http://svn.berlios.de/svnroot/repos/cctools/publisher/trunk</a><br />
or <a href="http://wiki.python.org/moin/PyCon2006/Talks#48" rel="nofollow">http://wiki.python.org/moin/PyCon2006/Talks#48</a><br />
Or you want to use a collaborative tool for groups with<br />
instant + slick visual feeling &#8211; try Bebop which strongly<br />
relies on Zope3-Technologies on server AND client side. </p>
<p>&#8230;&#8230;.and now for something completely different &#8230;..</p>
<p>The Zope3-Team discussed very thoroughly: What are the<br />
core competencies of Zope and what not ?<br />
For example: Zope2 had its own webserver &#8211; ZServer.<br />
But why write and maintain such a beast when there<br />
is something better in Python-World ?<br />
So the Zope3-Guys integrated Twisted and<br />
got best of both worlds. </p>
<p>&#8230; and now for something completely different &#8230;</p>
<p>Relational Databases and Zope3</p>
<p>You described very well in your rant the problems with Oracle.<br />
This was nearly 100% identical to our experience,<br />
so my smile from the beginning of this post<br />
comes a little bit from the pain I left behind me. </p>
<p>With Zope3 there are two approaches:</p>
<p>a) Use cxOracleDA-adapter (<a href="http://svn.zope.org/cxoracleda/" rel="nofollow">http://svn.zope.org/cxoracleda/</a>)<br />
   Looking at this source code I was amazed how easy and<br />
   straightforward it is to integrate a well-known and proven<br />
   python-Standard DB-Adapter into Zope3-world.<br />
   The same pattern again: Take a proven quality piece<br />
   of software from standard python world, put on a small wrapper<br />
   and &#8211; whoa &#8211; use it right away in Zope3. </p>
<p>Well, and then you could put sql-expressions into your templates<br />
   via sql-expressions (uhm, not really recommended ;-) or use<br />
   your zsql-scripts from Zope2. </p>
<p>But then we thought there should be a better solution,<br />
   which breathes the spirit of Zope3 &#8230; which led us to </p>
<p>b) an OR-Mapper-Solution</p>
<p>We tried SQLObject first, since it had a &#8220;native&#8221; Zope3-Integration<br />
   via sqlos. But Oracle connectivity is not one of the main targets<br />
   of SQLObject, despite there is a Oracle-SQL-Object-0.6.1-branch<br />
   in the repository.</p>
<p>PyDo2 from the Skunkweb-Project looked really promising, but<br />
   we had to put the name of the table into the class-definition,<br />
   so this was not flexible enough. Despite Oracle-Connectivity<br />
   was OK. </p>
<p>So we ended up with the best (shameless marketing)<br />
   enterprise ORM in python-world: SQLAlchemy (<a href="http://www.sqlalchemy.org" rel="nofollow">http://www.sqlalchemy.org</a>)<br />
   Yes, there&#8217;s no official download and the developers<br />
   say there&#8217;s only Version 0.9.1 &#8211; but it&#8217;s pretty close to final 1.0<br />
   and it really suits our needs. </p>
<p>The great difference between SQLAlchemy and the rest of the bunch<br />
   is that other ORM-Mappers try to fit relational databases by all means<br />
   into Object-World. But a relational DB is no misled ObjectStore and<br />
   the whole analogy breaks more and more down with<br />
   &#8211; larger databases<br />
   &#8211; transactional aspects<br />
   &#8211; complex datasets/queries over many tables.</p>
<p>SQLAlchemy has the same philosophy as Z3 in<br />
   &#8211; extreme separation of concerns and<br />
   &#8211; integration of standard DB Adapters<br />
   &#8211; high quality of code + easy readability<br />
     (anybody said &#8220;pythonic&#8221; ;-)<br />
   &#8211; good quality of documentation   </p>
<p>SQLAlchemy treats a Class as a Class, a RDB as a RDB, and<br />
   (you guessed it, right?) a RDB Table as a<br />
   RDB Table and connects them via mappers, which can easily<br />
   enriched with some standard methods/queries provided by<br />
   the framework.<br />
   It makes heavy use of the new dynamics aspects enriching<br />
   Python with the last few releases in the 2.x-line. </p>
<p>With SQLAlchemy I could drop the lines of code of my sql-related<br />
   stuff somewhere around 20-30%. And I REALLY like the approach<br />
   of &#8220;Writing less code&#8221;. Doing all my RDB-Stuff in python<br />
   is an extra-Bonus (OK, to be honest &#8211; some complex queries<br />
   survived, but I think this is only a matter of time, since<br />
   they vanish ;-)</p>
<p>So you&#8217;re not alone in Zope3-Oracle-World. To<br />
cite the glorious A. A. Milne &#8220;And then there were three&#8221;<br />
(and maybe even more, if someone answers this post ;-) </p>
<p>&#8230; and now for something completely different &#8230;</p>
<p>LDAP-Integration</p>
<p>Zope3 is very concise about Authentication via<br />
  so-called PAU&#8217;s &#8211; Pluggable Authentication Utilities.<br />
  You could easily plug together Authentication sources<br />
  with different Authentication methods &#8211; its as easy<br />
  as plug your lego-stones together. </p>
<p>Like in RDB-World: First you define an Adapter to your<br />
  Datasource &#8211; lets call it LDAP-Adapter, right &#8211;<br />
  which defines and holds the connection to your<br />
  external LDAP-Source (<a href="http://svn.zope.org/ldapadapter/" rel="nofollow">http://svn.zope.org/ldapadapter/</a>).<br />
  That way, you could even use more than one LDAP-Source<br />
  in your Application. </p>
<p>Then you have another clearly defined LDAP-PAS (<a href="http://svn.zope.org/ldappas/" rel="nofollow">http://svn.zope.org/ldappas/</a>).<br />
  which does the authentication against this Adapter. </p>
<p>And the whole beast (you guessed it again, right?) is a small,<br />
  well-defined wrapper around python-ldap. Plus<br />
  it&#8217;s easy to read and fast to understand (my 2 cents).<br />
  It&#8217;s like dejavu all over again ;-) </p>
<p>Hint: I just played around with this LDAP-stuff and never<br />
  tested that in our production environment,<br />
  but I have great confidence from my previous experiences<br />
  with Zope3 that it should be working relatively seamless.</p>
<p>&#8230; and now for something completely different &#8230; </p>
<p>ZCML</p>
<p>Well, everybody beats on ZCML, since its such an easy<br />
  target &#8211; &#8220;Hey, it&#8217;s XML &#8211; that&#8217;s bad. We don&#8217;t want<br />
  to use XML (for whatever ideological reason), so<br />
  Zope3 must be something ill-constructed&#8221;</p>
<p>If you ask me about my feelings about ZCML, I would<br />
  not try to convince you it was made in heaven and tell you<br />
  that you are too blind to see the light ;-)</p>
<p>But &#8211; as often in life: truth lies somewhere in<br />
  between the extremes. My 2 cents: </p>
<ol>
<li>
<p>I share your feelings about not direct<br />
 debugging ZCML, despite the fact that Zope3.2 brings<br />
 very concise error-tracebacks. </p>
</li>
<li>
<p>The Zope3-Guys are aware of the problems users have with<br />
 ZCML. They try REALLY hard to bring as much ZCML back<br />
 to python as possible &#8211; see<br />
 <a href="http://www.z3lab.org/sections/blogs/philipp-weitershausen/2005" rel="nofollow">http://www.z3lab.org/sections/blogs/philipp-weitershausen/2005</a><em>12</em>14_zcml-needs-to-do-less<br />
 for a thorough discussion from one of the core developers<br />
 of Zope3. Looking from Zope3.0 to Zope3.2 (the current release) some<br />
 stuff vanished from ZCML, so those guys do their homework<br />
 and will do it even more on the upcoming Zope3.3 release. </p>
</li>
<li>
<p>The best thing at the end (now Z3-Team will really beat me ;-):<br />
 You can write up and use<br />
 ALL (right, ALL) ZCML-directives right away as python-code, if you don&#8217;t<br />
 XML.<br />
 And yes, this is even documented (call me old-fashioned,<br />
 but I read docs first). You may say, that there are such<br />
 a huge amount of README&#8217;s and other .txt-stuff spread<br />
 over the whole Zope-Project, that its not easy to get into it.<br />
 But Zope3 provides you with a toolscript<br />
 called &#8220;static-apidoc&#8221; which gives you a clear, concise<br />
 overview of the whole documentation as a static website. </p>
<p>Now if you look at the README under zope/component or<br />
 at the static-apidoc unter &#8220;Component Architecture&#8221;<br />
 you find methods like provideAdapter, provideUtility,<br />
 which do &#8211; surprise, surprise &#8211; the equivalent of<br />
 ZCML-alternatives. Or look at zope/component/site.py<br />
 or zope/configuration</p>
<p>You want to see this in action ? Look at this<br />
 2-part-example of a simple Z3-object publishing system<br />
 without any piece of ZCML:</p>
<p>Part I: The Zope Component Architecture &#8211;<br />
 Interfaces, Adaptation, and Duck Typing<br />
 <a href="http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html" rel="nofollow">http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html</a></p>
<p>Part II: The Zope Component Architecture &#8211;<br />
 One Way To Do It All<br />
 <a href="http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html" rel="nofollow">http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html</a></p>
<p>Browsing through the docs, you can find the other<br />
 replacements in a straightforward way (or you debug<br />
 the xmlconfig-stuff from zope/configuration, which<br />
 gives you the corresponding callables for ZCML)</p>
<p>If that&#8217;s too tough and time-consuming &#8211; no problem,<br />
 ask on the Zope3-Users mailinglist. Those guys are<br />
 REALLY helpful to get you into Z3-world. </p>
</li>
</ol>
<p>&#8230; and now for something completely different ..</p>
<p>Kool-Aid and the magic world of interfaces and adapters</p>
<p>Speaking with developers about Zope3 you often hear<br />
that interfaces and adapters are too much magic and<br />
they have to drink so much Kool-Aid to understand them.<br />
I won&#8217;t put this here into a lengthy pro-con-discussion<br />
of these concepts, since I&#8217;m not really a core developer,<br />
but more an application developer/maintainer. </p>
<p>But to tell you my story:</p>
<p>It took me a while to GET the main ideas/principles<br />
behind this stuff &#8211; to be honest,<br />
2 days of intensive, dedicated work and 5 litres of H2O.<br />
After one week of working with Zope3 I was more productive than<br />
before. Plus I had learned a lot of new stuff about programming<br />
in a quality way. Yes, dealing with Zope3 has made<br />
me a better programmer &#8211; even if I never should do anymore project<br />
with it ;-( </p>
<p>Plus it helped me to get my things done better + faster.</p>
<p>Well, that&#8217;s Kool-Aid I really like !</p>
<p>I wont&#8217;t say this world of interfaces and adapters<br />
is the easiest to understand. But again:<br />
There are a good amount of play-around-with-it-tutorials/docs/books<br />
around which take you into Zope3-World. Just give it a try !</p>
<p>Want some examples? Want some simple apps to play around with?</p>
<p>Well, it was never easier than with Zope3 &#8211; see yourself</p>
<p>Here&#8217;s some easy stuff which you can work through in less than 1 hour<br />
(well, the last example takes you longer ;-) </p>
<p>a) &#8220;Zope3 in 30 minutes&#8221; &#8211; at<br />
   <a href="http://zissue.berlios.de/z3/Zope3In30Minutes.html" rel="nofollow">http://zissue.berlios.de/z3/Zope3In30Minutes.html</a><br />
   showing you step by step how to build your first<br />
   simple Z3-application to collect your bookmarks on a server</p>
<p>b) Did I mention the magnificent Jeff Shell ? His blog<br />
   griddlenoise.blogspot.com is a rich and really insightful source<br />
   for getting into Zope3 &#8211;  plus it&#8217;s really fun to read. </p>
<p>In his archives you find this funky little thing</p>
<p><a href="http://euc.cx/toulouse/archives/simple" rel="nofollow">http://euc.cx/toulouse/archives/simple</a><em>todo</em>application/<br />
   (alternative <a href="http://worldcookery.com/files/jeffshell-todo/" rel="nofollow">http://worldcookery.com/files/jeffshell-todo/</a> )</p>
<p>where Jeff tells you how to build a Rails-like ToDo-Application<br />
   in some simple steps. In every step he shows you what<br />
   to do and why he thinks this implementation is carefully<br />
   thought out in Zope3 and what is the reason they did it this<br />
   and no other way.</p>
<p>c) Want a fresh new zope3-site without understandig &#8220;all the magic&#8221;<br />
   inside? Choose life &#8211; choose the z3 project starter<br />
   <a href="http://www.zope.org/Members/adytumsolutions/z3project" rel="nofollow">http://www.zope.org/Members/adytumsolutions/z3project</a><em>starter/z3project</em>starter_released<br />
   Answer a few simple questions and you have a project skeleton<br />
   to play around with without deeply understanding all this &#8220;kool-aid&#8221; upfront. </p>
<p>d) Philipp von Weitershausens Website/Book about Zope3 &#8211;<br />
   <a href="http://worldcookery.com" rel="nofollow">http://worldcookery.com</a> </p>
<p>You will find more of this tutorials on Phillips website under<br />
<a href="http://worldcookery.com/appetizers" rel="nofollow">http://worldcookery.com/appetizers</a>. </p>
<p>And this is not the end. New stuff is landing every day<br />
in Zope3-space &#8211; like this little gem about events/notifications<br />
and how they help you handle complex application<br />
architectures: </p>
<p><a href="http://remarkablysimple.blogspot.com/" rel="nofollow">http://remarkablysimple.blogspot.com/</a></p>
<p>Or you look at <a href="http://www.z3lab.org" rel="nofollow">http://www.z3lab.org</a> where you can get a peek<br />
of the Zope3-ECM-Initiative and so on so on &#8230;</p>
<p>So, my advice to you: Fire on feedster.com, type in Zope3 &#8230;<br />
and you&#8217;ll find a lot more of this diamonds. </p>
<p>I made the experience that most of the complaints about<br />
Kool-Aid come from developers who specialized in certain<br />
frameworks/habits and now had difficulties to extend<br />
their mindset since they had to leave known territory.<br />
They struggled with Zope3, found some hurdles and then gave up,<br />
since &#8220;there&#8217;s so much kool-aid&#8221;. </p>
<p>I was surprised to find out that absolute newbies to programming<br />
get productive with Zope3 very fast and easily &#8211;<br />
maybe since they are not fixed on certain stuff. </p>
<p>I mean, sometimes I don&#8217;t get it: People want to write programs<br />
for real complex enterprise scenarios, but at the same<br />
time tell me it&#8217;s too hard to spend a few hours to play with some toy examples<br />
and read some docs and play with the marvellous python command prompt<br />
trying to push their brain into a new direction. </p>
<p>Believe me: This whole interface-adapter-pattern definitely helps<br />
you in bigger/complex projects evolving over time.<br />
Remember Fred Brooks Mythical Man-Month, which made so many of us aware<br />
that change of requirements is inherent in any software project &#8211;<br />
even if the whole system is in production use.</p>
<p>Zope3 has not ALL, but a lot of REALLY GOOD answers<br />
to this situation every developer faces from time to time ;-) </p>
<p>&#8230; and now for something completely different ..</p>
<p>Querying the ZODB from outside applications</p>
<p>I&#8217;m convinced that it should be easy and I know<br />
that the guys in the Bebop-Project did some stuff<br />
in this direction, But I&#8217;m no expert in that,<br />
since relational databases<br />
constitutes more of my work. If you want to<br />
have a profound answer on this &#8211; push it<br />
on the Zope3-Users-Mailinglist (sorry, that<br />
wasn&#8217;t a sufficient answer, right?). Those<br />
helpful souls there will really show you<br />
the best and easiest way to do it.</p>
<p>&#8230;.. and now for something completely different &#8230;.</p>
<p>Coming back to your Plone-dissatisfaction</p>
<p>I don&#8217;t want to tell you that Plone is bad. Or Plone<br />
sucks. Or stuff like that. For me it&#8217;s the right tool<br />
for the projects it was made of &#8211; usable portal solutions<br />
for medium size. The same holds for Django which<br />
is also OK, if I want to make a fast RDBMS-UI-App. </p>
<p>The good thing is: For different work tasks there<br />
are different tools in my toolchest. It&#8217;s my<br />
responsibility to choose the right one for<br />
every new project, but it leaves me with a<br />
warm safe feeling that the toolbelt is filled<br />
with such good quality stuff.</p>
<p>And the good news is just around the corner:<br />
Plone and Zope3-World are converging &#8211; approaching<br />
each other with every day. Now what does that mean?</p>
<p>Since I worked with plone it was easy to find my<br />
way in Zope3-World. Zope3 tried to learn from<br />
the Zope2 AND the plone lessons and put a lot of<br />
the best breed of Plone (which constituted at the<br />
same time those hard-to-manage architectural overhead)<br />
back to the core of the framework. Well, this<br />
is not totally right, since there is no such thing<br />
as a monolithic core of Zope3-framework &#8211; the greatest lesson<br />
learned from the problems with complex Zope2-projects.<br />
Which is the best news of all ;-) </p>
<p>Know Archetypes ? There is schema-driven content-types<br />
with form generation (zope.formlib)</p>
<p>Know Skins and Layers ? Use them right away in Zope3</p>
<p>Know Portlets ? Generalized to Viewlets and managed via ViewletManagers.</p>
<p>RessourceRegistries? Now known as RessoureLibrary. </p>
<p>&#8230; and so on &#8230; and so on &#8230;</p>
<p>But at the same time the Plone guys push their stuff<br />
more and more towards the proven Z3-technologies &#8211;<br />
and by handing over Z3 the framework responsibilities<br />
the Plone community again can concentrate on being<br />
the big shot at their homeground &#8211;<br />
to provide you with the &#8220;MacOS of CMSes&#8221;<br />
(well at least that&#8217;s what Limi told me ;-)</p>
<p>I also appreciate the other web frameworks<br />
in Python world &#8211; and I&#8217;m happy to see that<br />
there will be a &#8220;WebFramework&#8221;-Track during<br />
Europython this year where zopies, djangistas<br />
and turbogearianos and all those funky-stuffistas<br />
will get into fruitful<br />
discussions about solutions. I&#8217;m really<br />
looking forward to this meeting since<br />
we can learn a lot from each other<br />
if we leave our minds open for the NEW. </p>
<p>&#8230;. and now for something completely different &#8230;.</p>
<p>There is so much more to say about this marvellous<br />
piece of software (like the integration<br />
of other templating languages like meld or clarity<br />
or the integration of standards like Java-like Portlet-Stuff or<br />
WFMC &#8211; the Workflow-Coalition &#8211; and and and)<br />
but let me come to an end, since it&#8217;s really late<br />
and I need some sleep: </p>
<p>I work for 20 years with software and applications.<br />
Zope3 is one of the most professionall, mature<br />
and qualitative outstanding frameworks I saw.</p>
<p>It&#8217;s really fun to work with, if you have a sense for<br />
lasting quality solutions, if you want to be<br />
proud of the stuff you created. </p>
<p>Thanx for your patience + Good night,</p>
<p>Holger @ Germany </p>
<p>PS: If you&#8217;ve got any specific question about Zope3,<br />
drop me a not at <a href="mailto:booradley@web.de">booradley@web.de</a>. Or visit some<br />
of the links in my rant. Or subscribe<br />
to the Zope3-User-Newsgroups and ask your questions.<br />
This world is really full of possibilities ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: import this.  &#187; Blog Archive   &#187; Django vs. Zope</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-323</link>
		<dc:creator>import this.  &#187; Blog Archive   &#187; Django vs. Zope</dc:creator>
		<pubDate>Mon, 06 Feb 2006 23:01:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-323</guid>
		<description>[...] out his experiences with Django and Zope, and it sounds like Django comes out ahead. Quoth Jason: To me, Django feels like just another Python library… and I can plug in additional libraries (like E [...]</description>
		<content:encoded><![CDATA[<p>[...] out his experiences with Django and Zope, and it sounds like Django comes out ahead. Quoth Jason: To me, Django feels like just another Python library… and I can plug in additional libraries (like E [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sébastien Douche</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-322</link>
		<dc:creator>Sébastien Douche</dc:creator>
		<pubDate>Mon, 06 Feb 2006 14:23:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-322</guid>
		<description>&gt; The main reason I still use Zope is that I think ZPT is a very nice way to do templates.

Quentin, if you want a light Framework with a zpt-like templating system, try Turbogears. Kid is very similar to zpt.</description>
		<content:encoded><![CDATA[<p>&gt; The main reason I still use Zope is that I think ZPT is a very nice way to do templates.</p>
<p>Quentin, if you want a light Framework with a zpt-like templating system, try Turbogears. Kid is very similar to zpt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Quentin Stafford-Fraser</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-321</link>
		<dc:creator>Quentin Stafford-Fraser</dc:creator>
		<pubDate>Mon, 06 Feb 2006 09:58:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-321</guid>
		<description>Interesting.  I read this right after Benji Smith&#039;s &lt;a href=&quot;http://discuss.joelonsoftware.com/default.asp?joel.3.219431&quot; rel=&quot;nofollow&quot;&gt;Why I hate frameworks&lt;/a&gt;.  Worth a read if you haven&#039;t seen it.

I tend to use Zope for websites I&#039;m building and managing myself, Plone for those I think will be edited by others, and Django for anything primarily database-backed.

Learning Plone takes much too long, but I suspect that writing a CMS in Django would be pretty time-consuming.  Not that most projects would need all the flexibility that Plone provides, of course. 

The main reason I still use Zope is that I think ZPT is a very nice way to do templates.</description>
		<content:encoded><![CDATA[<p>Interesting.  I read this right after Benji Smith&#8217;s <a href="http://discuss.joelonsoftware.com/default.asp?joel.3.219431" rel="nofollow">Why I hate frameworks</a>.  Worth a read if you haven&#8217;t seen it.</p>
<p>I tend to use Zope for websites I&#8217;m building and managing myself, Plone for those I think will be edited by others, and Django for anything primarily database-backed.</p>
<p>Learning Plone takes much too long, but I suspect that writing a CMS in Django would be pretty time-consuming.  Not that most projects would need all the flexibility that Plone provides, of course. </p>
<p>The main reason I still use Zope is that I think ZPT is a very nice way to do templates.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fazal Majid</title>
		<link>http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/comment-page-1/#comment-320</link>
		<dc:creator>Fazal Majid</dc:creator>
		<pubDate>Mon, 06 Feb 2006 05:15:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.jrandolph.com/blog/?p=23#comment-320</guid>
		<description>Here&#039;s another vote of no-confidence in Zope.

My company&#039;s reporting server used by clients is built on top of Zope 2.6, and like you our data is in Oracle, including the authentication DB. The whole Zope framework adds next to no value, while at the same time being incredibly cumbersome to manage, due to stuff being strewn all over the place, and the lack of a filesystem to rsync to. It&#039;s so bad my developers have an almost physical aversion to writing new reports because we lose a week trying to implement something that would be done in a day in PHP or any other reasonable system.

I am in the process of reimplementing everything in Cheetah with a custom framework under the hood to handle database connectivity, navigation, access control and the like. Writing a mini-app server from scratch took me less time than wrestling with a single Zope report page. I can use a real editor instead of Zope&#039;s web interface, for starters...</description>
		<content:encoded><![CDATA[<p>Here&#8217;s another vote of no-confidence in Zope.</p>
<p>My company&#8217;s reporting server used by clients is built on top of Zope 2.6, and like you our data is in Oracle, including the authentication DB. The whole Zope framework adds next to no value, while at the same time being incredibly cumbersome to manage, due to stuff being strewn all over the place, and the lack of a filesystem to rsync to. It&#8217;s so bad my developers have an almost physical aversion to writing new reports because we lose a week trying to implement something that would be done in a day in PHP or any other reasonable system.</p>
<p>I am in the process of reimplementing everything in Cheetah with a custom framework under the hood to handle database connectivity, navigation, access control and the like. Writing a mini-app server from scratch took me less time than wrestling with a single Zope report page. I can use a real editor instead of Zope&#8217;s web interface, for starters&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
