On Mon, Apr 13, 2009 at 03:01:01PM -0400, Jeff Hammel wrote:
> On Mon, Apr 13, 2009 at 02:53:56PM -0400, Luke Tucker wrote:
> >
> > I'm shopping around a bit for component frameworks for melkjug's plugins 
> > ( http://oss.openplans.org/melkjug/wiki/PluginPoints ) and I'd like to 
> > hear your input if you have a sec.
> >
> > I feel like Trac's component model is all I really want at the moment,  
> > but I haven't used it extensively in practice.  I really like the  
> > straightforwardness of it, the digestibility of the overall concept and 
> > the limited scope -- drawback is afaict it is not packaged separately 
> > (although it looks like the code is very orthogonal to the rest of trac 
> > and it wouldn't be hard to take)  Jeff, I think you might have the most 
> > to say about what you like/dislike about Trac's model and/or it's re-use. 
> >  See http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture
> 
> I would say that if you want a simple component architecture, then Trac is a 
> very good model.  Extension points are defined, plugins implement an 
> interface which is plugged into extension points.  It works very well for 
> Trac.

I haven't really used the trac model, so I can't speak to the
differences.

> > As Josh reminded me, we also have a ton of internal ZCA knowledge, so I 
> > figured I should do a little due diligence on that front too...  Melkjug 
> > already uses a smattering of ZCA to document interfaces in the model.  
> > Personally, I find ZCA to be a bit zany and overwrought for what I'm 
> > intending -- the documentation makes my eyes want to glaze over even 
> > though I already understand it... That said, it's cruft is grown from 
> > battle worn use cases and it's clearly got some momentum and backing as 
> > an independent framework.
> 
> What Trac misses is adaptation, mostly.  Also, you can't have composite 
> interfaces, though this is an implementation detail.  ExtensionPoints get 
> turned into lists of components, which is a bit sloppy if you want to asser 
> that exactly one gets used.  But this is probably okay as you can always 
> throw in assert statements.  Again, I'd say adaptation is the main missing 
> thing.  If you can live without it, you're probably good.

There's a conversation about application configuration going on in the
pypes project too:
http://www.openplans.org/projects/pypefitters/lists/pypefitters-discussion/archive/2009/04/1239260482813/forum_view#1239509309917

> > Maybe all I want to do is paper over the foul details of ZCA that I  
> > don't care about with something that behaves conceptually like Trac's  
> > model for the 99% case (use ZCA as a meta-meta-framework) but let the  
> > machinery hang out ... juuust in case.
> >
> > Anything else I should be looking at? Thoughts?
> >
> > - Luke

I'd say to use the simplest thing that works. If you do go with the zca,
I think you're right to just paper over the details that you don't care
about. If you want to use xml as the configuration language, it may be a
little bit of work to reuse the xml parsing of zope.configuration. I
believe that the repoze guys created a new package, repoze.zcml, because
zope.configuration expects zope.security, which I think pulls in a lot
more packages. But if you don't want xml configuration, then the
provideAdapter and provideUtility calls should work for you if you use
the zca.

> Just to throw a zany idea I've been thinking about, implicit interfaces vs 
> explicit.  Instead of marking things as implementing other things, you give 
> rules by which a component is said to implement an interface.  But since you 
> want something simple, probably doing something experimental like this might 
> not be the best.
> 
> Jeff

Interesting idea. Would this happen at startup time with something like
martian?

Robert


--
Archive: 
http://www.openplans.org/projects/melkjug/lists/melkjug-development-list/archive/2009/04/1239652913061
To unsubscribe send an email with subject "unsubscribe" to 
[email protected].  Please contact 
[email protected] for questions.

Reply via email to