Hi Norbert,
I'll go a little into use case 1, having some experience with both
CouchDB and Plone/Zope:
Usecase 1
My wife and I have started a local webservice where we offer a kind of
internet full service agency for the local brick and mortar stores and
companies. To make our own life easier we build the websites with
plone.
Plone offers us slideshows, composite pages (Collage in plone
parlance) and a very clean css-structure and very good html. Plone
sites degrade gracefully when javascript is not available in the
browser. One killer feature is that URLS don't break when we move
documents around in the site. The downside of plone is the very
complex architecture, propagation of content changes (between
development and production) is very hard to do in a granular fashion.
We can live with these shortcomings for the time being, but I am not
to keen to develop db-oriented websites with plone, and I see some
potential in this direction even for our customers.
For this reason I consider django which appeals to my relational
trained brain and is architecturally much cleaner IMO.
Couchdb could offer us an even simpler architecture plus easy
replication. I would need the ability the key benefits of plone and
have no ideas if and how it would be feasable to build them in
Couchdb. So I consider this use case as a remote one, but I would like
to hear ideas.
There are some interesting low level technical parallels between the
ZODB (Zope Object Database) that Plone uses, and CouchDB (they are both
non-relational file based append only B-tree based data stores that
require manual compacting,) but they are very different in important
respects: The ZODB stores a tree of arbitrary python objects, which Zope
loosely maps into a site's urls. A CouchDB database is usually a flat
store of JSON documents and views on those documents that can
index/transform/compute on the data in them.
The ZODB is not usually viewed as an alternative to relational databases
for most purposes, but CouchDB is, due to its extremely fast views.
What Zope offers on top of the ZODB is a Content Management Framework
which makes it extremely easy to build sites that customers can maintain
themselves. The closest CouchDB equivalent would probably be CouchApps,
which allow you to do some really awesome stuff, but AFAIK there is no
readymade toolset that helps with building a site including CMS that can
be used by non-technical users. (Yet! There is absolutely no reason that
one couldn't be built, in, or on top of CouchDB.) I have not even gone
into the hundreds of extra tools and features (of very varying quality
and complexity) that Plone brings to the table.
In other tl/dr words:
If you want to use CouchDB to build sites for your customers that they
themselves maintain without much technical knowledge, you'll have a lot
of infrastructure to build that Zope/Plone already provides, which would
be a sizeable investment for a small company. Having said that, you
could probably avoid some of the complexity and bloat that have made
Plone in particular sometimes very painful to use. (IMO)
--
eric casteleijn
https://code.launchpad.net/~thisfred
Canonical Ltd.