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

2007-01-05 Thread Jim Fulton


I'll make some small comments below, but I want to make a big
comment to start.  Zope 2 and Plone are both examples of
extensible applications.  In my note, I was trying to make the
point that I think such applications have value.  I'd like to
see them exist.  I'd like to see them done well.  I think Zope 2
did it very well, in it's time.  I think Plone and other applications
have carried that forward successfully.

At ZC, for better or worse, we are no longer in the business
of applications that are extensible in that way. We build
applications that are used directly by our customers.
I think this is true of many Zope developers.  *We* use Zope 3
as a library for building applications.

Both uses are valuable and should be supported.

The application that I've been referring to as the OFS
(again, a more or less random name) is a pale imitation of
Zope 2.


Martin Aspeli wrote:



Jim Fulton wrote:

Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances



I found this very interesting. As more of an indirect consumer to Zope 3
(but user of Zope 3 via Five and developer of Plone on Zope 2), here are
some of my own thoughts.

In the Zope2/CMF/Plone world, we are used to Zope instances that may host
several sites (e.g. Plone instances). We find that users like to be ablet to
have multiple sites (possibly on muiltiple URLs via RewriteRules) and manage
a single instance of the app server (Zope 2) on their machine.
One-process-and-port-per-application is certainly *perceived* to be more
resource intensive and difficult to manage if there are multiple
appilcations on one server.

Zope 2.10 has been a huge improvement in that regard. The local component
registry work has made site-ness and local/ZODB-persisted configuration
much, much easier. Plone 3 is benefting immensely from this as we speak.

We also find that users expect to be able to deploy Plone (a bunch of
products in a tarball that extracts to the Products/ directory) and various
add-ons (other products) easily.

This was one of the things that confused me most when learning about Zope 3.
Am I supposed to put application-specific ZCML files in an instance-global
package-includes? Should I tell people to edit those ZCML files during
deployment (oh Java hell)? Should all the components of the application be
eggs in the global PYTHONPATH or in the instance home?

The second thing that confused me was the role of the ZMI/OFS. In Plone, we
have an application that builds on top of Zope2-the-application, then CMF
and then Plone's own layers of code. People who develop solutions based on
Plone typically treat Plone itself as another application/framework hybrid
and customise Plone (using the customisation mechanisms Zope 2 and CMF
provide) to their own needs in terms of look-and-feel and functionality.
This may not always be architecturally the best idea, but it often makes
people very productive, very quickly.

If I were building a plain Zope 3 application, I still don't know if I'd
want to use the browser menus, folder listings etc of the ZMI and just tweak
the look and feel, or if it would be better to start from scratch (though I
haven't yet built a plain zope 3 app from the ground, so it may just be
ignorance on my part). Certainly, if I had to understand most of zope.* to
be able to build my own zope.app.* from scratch, the learning curve may just
be too much.

Now, I still think Zope (2 and 3) has the most benefits in content-centric
use cases. I could see ways to build an application using Zope 3 views and
traversers and other components without using the ZODB at all, but I imagine
it'd be a lot of work to get going if I didn't have the fundamentally
hierarchical nature of the ZODB,


Note that there is nothing inherently hierarchical about ZODB.
Of course, ZODB makes modeling hierarchies (and other graphs) much easier
in many ways that working with non-object databases.

Of course, I'm a big fan of the ZODB and would use it for all sorts of
non-content-centric apps, whatever that means. :)



mapping its nodes to my application's URLs.
I'm sure that is just because I'm tainted by the way I think about Zope 2
and Plone, but it's non-obvious to me how a completely non-contentish Zope 3
application would work; or rather, I think it would be easier to use Pylons
or Django or TurboGears in that case, if I were building something that
needed a couple of simple forms and a few static pages and a big database
behind it.


There are certainly not many non-contentish applications to use as examples.


I think your thoughts resonate quite well with my own observations and/or
confusion. I would, however, caution against becoming over-zealous in
breaking things up. Zope 2, CMF and Plone are successful in large part
because people get started quickly. If it takes fifteen trips to the cheese
shop to understand how to get a page to say Hello world, I'm not sure people
would bother.


Well, fortunately, thanks to setuptools and tools like easy_install 

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

2007-01-05 Thread Jim Fulton

Reinoud van Leeuwen wrote:

On Wed, Jan 03, 2007 at 05:12:18PM -0500, Jim Fulton wrote:

Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances

[...]
I should note that there have been a number of sucessful Zope 3  
applications that were not the OFS.  In fact, some of the earliest  
production Zope 3 applications were not based on the OFS.


One of the first Zope 3 applications I looked at was SchoolBell. I was 
charmed by the elegant structure after install: a bunch of libraries 
somewhere, and a single instance directory containing a configuration file 
(for SchoolBell only, not Zope), and start and stop scripts. The Data.fs 
file was built during the first run.


Where did log files end up? How about the zademon socket file?


As a system administrator, this is how I like to see applications.


That's interesting.  As a developer, I like things to be
self contained.  Most Unix system administrators I know want me
to follow standard Unix file-system layour conventions (e.g.
http://www.pathname.com/fhs/).

Needs vary of course.  For large scale applications like the ones we
build, we need many instances for both scalability and redundancy.

Jim

--
Jim Fulton   mailto:[EMAIL PROTECTED]   Python Powered!
CTO  (540) 361-1714http://www.python.org
Zope Corporation http://www.zope.com   http://www.zope.org
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-05 Thread Jim Fulton

Chris Withers wrote:

Jim Fulton wrote:
None of this should be taken as any sort of edict.  I'm also not 
trying to name anything. While I'd love to spur discussion, I hope not 
to start any arguments. :)


On that front, I'll note that I've seen 3 patterns emerge in the 
projects I work on:


1. Development: lots of distinct projects per machine, each using their 
own zope version, products and/or python libraries, and data. For me, 
the Zope 2 instance home model and Zope software installed in, for 
example, /zope/2.9.5, works perfectly


2. Production with multiple projects in an instance. Here's there are 
often multiple websites mapped through an Apache front end to several 
data sets / software sets, each in their own folder. This is the class 
Zope 2 model where each site uses a combination of products, zodb 
scripts and templates and data stored in objects within the top level 
folder. Again the Zope 2 instance home model works well for this, but 
you only tend to end up having one instance on the box, so maybe it'd be 
easier on sysadmins and the like if things were different in this case, 
although I find having everything in a sub-tree of the file system 
pretty compelling.


3. Large production setups with one project spread over multiple 
machines. Each machine has a set role, usually involving several 
almost-identical app servers. I think this is the case you cover well 
and I completely agree with the things you've said.


Have other people experienced these patterns?

If so, which do we want to support and how?


While mkzopeinstance is a fine tool, as far as it goes, it's
not flexible enough for our needs.  I'll be releasing a buildout
recipe that meets my needs. I suspect it will meet other needs as
well, but there might end up being competing recipes that handle
other needs better.

Jim

--
Jim Fulton   mailto:[EMAIL PROTECTED]   Python Powered!
CTO  (540) 361-1714http://www.python.org
Zope Corporation http://www.zope.com   http://www.zope.org
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-05 Thread Brian Sutherland
On Fri, Jan 05, 2007 at 10:29:03AM -0500, Jim Fulton wrote:
 Reinoud van Leeuwen wrote:
  On Wed, Jan 03, 2007 at 05:12:18PM -0500, Jim Fulton wrote:
  Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances
  [...]
  I should note that there have been a number of sucessful Zope 3  
  applications that were not the OFS.  In fact, some of the earliest  
  production Zope 3 applications were not based on the OFS.
  
  One of the first Zope 3 applications I looked at was SchoolBell. I was 
  charmed by the elegant structure after install: a bunch of libraries 
  somewhere, and a single instance directory containing a configuration file 
  (for SchoolBell only, not Zope), and start and stop scripts. The Data.fs 
  file was built during the first run.
 
 Where did log files end up? How about the zademon socket file?

There is no zdaemon socket file, the server is daemonized using the -d
option. Instances can be created and the logs are stored as in Zope3.

Providing daemon start/stop capability is left up to operating system
tools. As a packaged distribution (dpkg) the daemon control is a
standard lsb compliant shell script that calls start-stop-daemon.

Note that schooltool only really supports production use as a packaged
application at this point.

  As a system administrator, this is how I like to see applications.

 That's interesting.  As a developer, I like things to be
 self contained.  Most Unix system administrators I know want me
 to follow standard Unix file-system layour conventions (e.g.
 http://www.pathname.com/fhs/).

Wearing my sysadmin cap, I'd like to say +100 to following the FHS.

-- 
Brian Sutherland

Metropolis - it's the first movie with a robot. And she's a woman.
  And she's EVIL!!
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-05 Thread Jim Fulton

Martin Aspeli wrote:



...

Anyway - I hope these perspectives are useful. I'm certainly not disagreeing
with what you're saying or with the direction you're pointing out. I think
we just need be mindful that there were some good things about the past
approaches as well as problems (not that you're not).


I think we're in strong agreement.  I think we need both the Framework
and the apps that use the Framework, including Zope2/Plone-style pluggable
apps.  I think we need to keep these efforts somewhat distinct though.
I'd love to see projects that focus on building killer apps on top of the
Zope 3 framework.  I just want people to understand that the application
!= the framework.

Jim

--
Jim Fulton   mailto:[EMAIL PROTECTED]   Python Powered!
CTO  (540) 361-1714http://www.python.org
Zope Corporation http://www.zope.com   http://www.zope.org
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-05 Thread Reinoud van Leeuwen
On Fri, Jan 05, 2007 at 06:07:08PM +0100, Brian Sutherland wrote:

  That's interesting.  As a developer, I like things to be
  self contained.  Most Unix system administrators I know want me
  to follow standard Unix file-system layour conventions (e.g.
  http://www.pathname.com/fhs/).
 
 Wearing my sysadmin cap, I'd like to say +100 to following the FHS.

Note that there are minor differences to the 'man hier' manpage on 
FreeBSD...

-- 
__
Nothing is as subjective as reality
Reinoud van Leeuwen[EMAIL PROTECTED]
http://www.xs4all.nl/~reinoud
__
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-04 Thread Martin Aspeli



Jim Fulton wrote:
 
 Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances
 

I found this very interesting. As more of an indirect consumer to Zope 3
(but user of Zope 3 via Five and developer of Plone on Zope 2), here are
some of my own thoughts.

In the Zope2/CMF/Plone world, we are used to Zope instances that may host
several sites (e.g. Plone instances). We find that users like to be ablet to
have multiple sites (possibly on muiltiple URLs via RewriteRules) and manage
a single instance of the app server (Zope 2) on their machine.
One-process-and-port-per-application is certainly *perceived* to be more
resource intensive and difficult to manage if there are multiple
appilcations on one server.

Zope 2.10 has been a huge improvement in that regard. The local component
registry work has made site-ness and local/ZODB-persisted configuration
much, much easier. Plone 3 is benefting immensely from this as we speak.

We also find that users expect to be able to deploy Plone (a bunch of
products in a tarball that extracts to the Products/ directory) and various
add-ons (other products) easily.

This was one of the things that confused me most when learning about Zope 3.
Am I supposed to put application-specific ZCML files in an instance-global
package-includes? Should I tell people to edit those ZCML files during
deployment (oh Java hell)? Should all the components of the application be
eggs in the global PYTHONPATH or in the instance home?

The second thing that confused me was the role of the ZMI/OFS. In Plone, we
have an application that builds on top of Zope2-the-application, then CMF
and then Plone's own layers of code. People who develop solutions based on
Plone typically treat Plone itself as another application/framework hybrid
and customise Plone (using the customisation mechanisms Zope 2 and CMF
provide) to their own needs in terms of look-and-feel and functionality.
This may not always be architecturally the best idea, but it often makes
people very productive, very quickly.

If I were building a plain Zope 3 application, I still don't know if I'd
want to use the browser menus, folder listings etc of the ZMI and just tweak
the look and feel, or if it would be better to start from scratch (though I
haven't yet built a plain zope 3 app from the ground, so it may just be
ignorance on my part). Certainly, if I had to understand most of zope.* to
be able to build my own zope.app.* from scratch, the learning curve may just
be too much.

Now, I still think Zope (2 and 3) has the most benefits in content-centric
use cases. I could see ways to build an application using Zope 3 views and
traversers and other components without using the ZODB at all, but I imagine
it'd be a lot of work to get going if I didn't have the fundamentally
hierarchical nature of the ZODB, mapping its nodes to my application's URLs.
I'm sure that is just because I'm tainted by the way I think about Zope 2
and Plone, but it's non-obvious to me how a completely non-contentish Zope 3
application would work; or rather, I think it would be easier to use Pylons
or Django or TurboGears in that case, if I were building something that
needed a couple of simple forms and a few static pages and a big database
behind it.

I think your thoughts resonate quite well with my own observations and/or
confusion. I would, however, caution against becoming over-zealous in
breaking things up. Zope 2, CMF and Plone are successful in large part
because people get started quickly. If it takes fifteen trips to the cheese
shop to understand how to get a page to say Hello world, I'm not sure people
would bother. Most likely, that's solved by having use-case focused (and
real-world tested) bundles or distributions that provide meaningful
functionality of starting points. It's also solved by having some
customisable best-practice components that are closer to the user.
Learning from such examples is probably the main way people pick up new
technologies and conceptualise how they can solve their particular use
cases.

Martin

-- 
View this message in context: 
http://www.nabble.com/Some-thoughts-on-Zope-3%2C-Zope-3-applications%2C-and-Zope-3-instances-tf2916344.html#a8157025
Sent from the Zope3 - dev mailing list archive at Nabble.com.

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



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

2007-01-04 Thread Reinoud van Leeuwen
On Wed, Jan 03, 2007 at 05:12:18PM -0500, Jim Fulton wrote:
 Some thoughts on Zope 3, Zope 3 applications, and Zope 3 instances
[...]
 I should note that there have been a number of sucessful Zope 3  
 applications that were not the OFS.  In fact, some of the earliest  
 production Zope 3 applications were not based on the OFS.

One of the first Zope 3 applications I looked at was SchoolBell. I was 
charmed by the elegant structure after install: a bunch of libraries 
somewhere, and a single instance directory containing a configuration file 
(for SchoolBell only, not Zope), and start and stop scripts. The Data.fs 
file was built during the first run.
As a system administrator, this is how I like to see applications.

-- 
__
Nothing is as subjective as reality
Reinoud van Leeuwen[EMAIL PROTECTED]
http://www.xs4all.nl/~reinoud
__
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-04 Thread Stephan Richter
On Wednesday 03 January 2007 17:12, Jim Fulton wrote:
 In summary, I'm seeing Zope 3 applications as separate entities from  
 the OFS.  The OFS application isn't something we'll use directlty.  
 Instances will be instances of our applications, not of Zope 3.

 I should note that there have been a number of sucessful Zope 3  
 applications that were not the OFS.  In fact, some of the earliest  
 production Zope 3 applications were not based on the OFS.

The short answer is that your experience reflects mine.

I too think that the OFS (or the ZMI how I usually call it) is not useful, and 
I personally do not reuse their UI components either. However, as you also 
pointed out, we use a lot of the packages that were developed for the OFS.

Honestly, I would not be sad to see most of the UI code in zope.app go away. 
We rarely use it, since we use Python code to configure local components and 
do not even write/register views for the OFS/ZMI in our applications.

On the distribution side, I really do not have much experience. I can only say 
that we still use package-includes, but I usually develop Makefiles (or BAT 
scripts in Windows) that remove the package ZCML files that we do not need. I 
can easily see myself switching to a different pattern here, as it seems to 
have the same effect. (I really hope that Roger Ineichen or Bernd Dorn are 
speaking up about deployment, since they do the deployment for the 
applications I was working on.)

As to packaging, I hope that once we are using eggs, we will have more than 
one Zope 3 distribution. One that is the official Zope Foundation one, 
perhaps a security-certified one, and one with many bells and whistles 
included (i.e. many of the z3c, zc, etc. packages). This will give newcomers 
nice entry points. When we develop our own applications, we will create 
different distributions.

Regards,
Stephan
-- 
Stephan Richter
CBU Physics  Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



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

2007-01-04 Thread David Pratt
I'll be happy to see the complete eggification - the sooner the better. 
The only issue I see as a possible negative is that it may be hard for 
folks to visualize z3's potential. AFAIK the framework approach has not 
negatively impacted Twisted that has some documentation and a book but 
no core app. The pattern for package construction in z3 is getting 
clearer all the time but folks will certainly need to work to see z3's 
advantages. Maintaining an eggified app, whether folks want to build on 
it or learn from it, is likely still relevant to the future of z3.


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



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

2007-01-04 Thread Chris Withers

Jim Fulton wrote:
None of this should be taken as any sort of edict.  I'm also not trying 
to name anything. While I'd love to spur discussion, I hope not to start 
any arguments. :)


On that front, I'll note that I've seen 3 patterns emerge in the 
projects I work on:


1. Development: lots of distinct projects per machine, each using their 
own zope version, products and/or python libraries, and data. For me, 
the Zope 2 instance home model and Zope software installed in, for 
example, /zope/2.9.5, works perfectly


2. Production with multiple projects in an instance. Here's there are 
often multiple websites mapped through an Apache front end to several 
data sets / software sets, each in their own folder. This is the class 
Zope 2 model where each site uses a combination of products, zodb 
scripts and templates and data stored in objects within the top level 
folder. Again the Zope 2 instance home model works well for this, but 
you only tend to end up having one instance on the box, so maybe it'd be 
easier on sysadmins and the like if things were different in this case, 
although I find having everything in a sub-tree of the file system 
pretty compelling.


3. Large production setups with one project spread over multiple 
machines. Each machine has a set role, usually involving several 
almost-identical app servers. I think this is the case you cover well 
and I completely agree with the things you've said.


Have other people experienced these patterns?

If so, which do we want to support and how?

cheers,

Chris

--
Simplistix - Content Management, Zope  Python Consulting
   - http://www.simplistix.co.uk

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