[Zope3-dev] ZOPE3 Maildir implementation

2006-04-07 Thread Pjotr Prins
I have a few questions regarding the ZOPE mailer implementation:

1. Why did you go for a file system implementation - as ZODB objects
are being made into a mail queue anyway? The Maildir step could have
been skipped, I suppose, just the connection to a mail server directly
over the network interface would suffice. Is there a specific reason
for the Maildir implementation?

2. The current implementation can only handle between 30-60 E-mail's a
minute. This is mostly due to the naming convention used for maildir
files (one a second - actually the Maildir naming allows in between
numbers, but you don't use that). 30 E-mails a minute is not really
scalable and has the (apparent) downside it (effectively) blocks the
Zope webserver for the duration (it should not, but it does, possibly
a locked ZODB?).

We have that experience sending out bulk E-mail reminders using that
module. Sending out 200 mails made the main ZOPE server inaccessible
for 3-4 minutes.

The reason I am asking is not so much an interest in fixing it for
mail, as we can live with that performance issue, but I am looking to
implement a similar functionality for storing xParrot/ZOPE objects in
version control in a seperate thread. So I would like to understand
the reason behind the Maildir choice.

Regards,

Pjotr Prins

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: ZOPE3 Maildir implementation

2006-04-22 Thread Pjotr Prins
On Sat, Apr 22, 2006 at 01:27:36PM +0300, Marius Gedminas wrote:

 Actually, the DirectMailDelivery utility also aborts emails if the
 transaction is aborted.  The reason for using Maildirs was to speed up
 the transaction commit -- if you send 100 emails in a transaction, you
 do not want to wait for 100 SMTP connections while the user is sitting
 in front of his browser waiting.  Creating a 100 files in the outgoing
 mail queue was supposed to be faster.

Thanks for fixing it Marius! I think your XP approach is fine ;-).

I agree you don't want blocking. Nevertheless should we not store it
in the ZODB instead - at least when ZODB is around?

I don't know what the policy is with ZOPE3, but I would think that we
should minimise deployment dependencies. Locating a directory is
such a dependency - and people using, for example, NFS may get into
trouble (though I think maildir tried to address that with that naming
and file moving scheme - it is ugly, arguably fragile and slow!).

Correct me if I am wrong.

Someone wrote that you can't pass the ZODB access from a web server
thread to a service/utility thread - The mailer utility is global and
has no convenient access to the ZODB. Is that really true? Is there
no way to pass this info?

Pj.
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Version control of ZOPE3 objects

2006-07-09 Thread Pjotr Prins
Hi,

I need to build a versioning module for the xParrot project
(http://xparrot.thebird.nl/). I have some questions and wondered who
would be inclined to help with the architecture phase.

The idea is to save objects that implement IVersioning on a
modification event to either ZODB, or to an external version control
system like subversion. The latter would be nice as it could handle
for example diffs through Websvn (a reverse proxy may be needed to
handle access control through ZOPE). 

Using an existing version system saves a lot of code and would allow
for functionality like branching etc. On the other hand commits have
to be run on a separate thread (which I can model on the current
mailqueue implementation). Also deployment would require extra
system administrator skills.

Before I go down this route I would like to ask if anyone has a
better idea? And who would take an interest in this little project,
and doesn't mind bouncing off a few ideas?

Pj.
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Version control of ZOPE3 objects

2006-07-10 Thread Pjotr Prins
Thanks Tres for the reply. It really helps.

I agree transactions are a problem. If SVN fails there is no clear
route to notify the user. On the other hand we merely would use it for
'historic' storage - a one way system for moving objects. As we have
to have a queue anyway, on failure an object should not be removed
from the queue. That allows the administrator to resolve the SVN
problem and rerun the queue. 

BTW I think there are two ways to make a queue - through the
filesystem (like the mailer does), or through ZODB - accessing the
queue through XML/RPC on a separate thread. If anyone knows how to use
ZODB from an independent thread outside ZOPE I am all ears. I would
like to drop the XML/RPC.

You made me think of an alternative approach though. I don't know how
you resolved your content repositories, but how about mirroring a site
into a versioned repository in ZODB. When we have a site with objects
we could create a versioned site with versioned objects (inheriting
security per object):

ZODB:

mysite:
  objectA
objectB
etc.

mysite_versioned:
  objectA_1
objectA_2
objectA_3
objectB_1
objectB_2
etc.

An XML/RPC interface could be created to store the versioned objects
offline - as objectA and objectB - through an external command. That
would allow an admin to do that through a CRON job with feedback on
the transaction. It could also purge old objects.

The nice thing is that I can quite easily create a view of older
objects in mysite_versioned (all XML/XSLT with xParrot) and even do a
simple diff, indeed.  Recovery is straightforward too. 

What do you think?

Pj.

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Re: [DraftProposals] (edit)

2006-12-19 Thread Pjotr Prins
On Mon, Dec 18, 2006 at 11:11:21PM -0800, Christian Theune wrote:
 I don't think so. The Zope 3 wiki was built up as, and still is, a resource 
 for the development *of* Zope 3. We shouldn't

So according to you ZOPE3 is still an engineering project as the main
Wiki/Documentation site is basically a resource for the development of
ZOPE. Indeed, this is the way ZOPE3 is presented to the outside world
now. It is my impression and I am acting on that.

People starting with ZOPE, or implementing with ZOPE, get lost in
documentation about *proposals* on ZOPE.

Place yourself in the shoes of someone new to ZOPE3 and trying to
find his/her way.

That should matter to you.

Let me phrase it as a technical challenge (so the engineer can
understand it):

How do you create a web resource for ZOPE3 that allows people to find
and resolve implementation issues easily? Without them having to wade
through (alive or dead) proposals? And how do you trick search
engines not to expose these proposals?

Pj.
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances

2007-01-05 Thread Pjotr Prins
Hi Jim  Martijn,

For xParrot we have a case in point where the ZMI both helped and
confused us. Because of the way the documentation is 'framed' (where
available) it lead us to believe, initially, that ZOPE was the ZMI.
The first incarnation of xParrot (an XML/XSLT provider) was
intermingled with the ZMI. The next version two was mostly about
driving the ZMI out of the equation. The OFS (if I understand
correctly we are referring to the file/object representation of ZOPE)
is still very valuable for reaching resources. In fact xParrot2 does
not use the ZMI at all now but would not be what it was without the
OFS.

On the other hand for another project I use the ZMI and the Rotterdam
skin to develop faster - providing a useful tree interface. The tree
is key here. It is obvious reflection/inspection etc. are quite useful
too, during development.

I would suggest to accentuate the library side of ZOPE and provide the
ZMI as a (lesser) example. For ZOPE3 to replace ZOPE2 a new
application engine may be an idea. A powerful engine that is better
than Rails - with some code generation - should be an enticing goal
for some. Because, take it or leave it, programming with ZOPE is
still (too) hard.

I learnt Ruby on Rails in a few days. With ZOPE3 I often still am in
the dire straights (after a year). We use ZOPE3 because of the
superior component model and because it looked better for xParrot, at
the time. And in fact, we have no regrets there as Andrew designed
xParrot so it can be used without any understanding of Python/ZOPE
now. So, there you have one great application without the ZMI.

Let me wrap up saying that despite my criticisms I think you all did a
great job. The stability and robustness of ZOPE3 is legendary.
Deployment is a bit odd, but one gets used to that (I agree about the
duplication - but then that is configuration too, it is not that bad).

A strong 2007 wished for.

Pj.
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com