Chris convinced me at last year’s ConFoo that I should re-join the TurboGears 
community, voice my opinions, and try to help out. Unfortunately I no longer 
feel comfortable camping here, as my role as direct competitor (aka “The 
Enemy™”) gives me a not-so-minor conflict of interest.  Additionally, the 
pervasive belief in the “not invented here” mentality blinds people to the 
reasoning behind some of my decisions and ensures I get very little respect.

There has been some great discussion in the last few days about perceived 
issues, future possibilities, re-inventing the wheel, community, and joining 
forces.  Unfortunately what I’m seeing so far is a repetition of the 1.x → 2.x 
migration. A significant problem with “best of breed” is the criteria. Too 
often in the past I have seen things jumped on too hastily and three months 
later seen the regret.

> One package (pyramid) will  fill the base-microframework role

30KLoC in 149 modules a microframework does not make.  Especially when it 
re-implements template engine adaptors (alacarte), session handling (Beaker), 
configuration file parsing (PasteDeploy), thread locals (Paste), has a large 
amount of authentication/authorization code to adapt repoze.{who,what} (a 
package I recall people saying was a mistake to make required for TG2.0), 
object dispatch (crank), regex-based routing (Routes), static file serving 
(Paste), etc.  The majority of these are modules contained within one package 
and thoroughly blended.

All of this needs testing and documentation, all of which would be more useful 
as reusable, and more importantly, optional components.  Most are already 
available as reusable components.  From the standpoint of a template engine 
developer I have to write adapters for two widget systems, at least one 
framework (probably more), and still have my own API to deal with.  As a 
framework user, if I want to use a templating engine that’s new -I- have to 
write the adapters.  The duplication of work is horrendous.

It’s one thing to decide that a Django-inspired framework design (everything 
and the kitchen sink available with no dependancies) is the way to go, in which 
case rigid structure and organization is necessary, another to want a 
microframework base, and a third to have a modular best-of-breed framework.  
Pyramid seems to me to be none of these, and has quite the intimidating 
codebase.

TurboGears 3, or the future project with no name yet, doesn’t need Pyramid from 
a technical standpoint.  It didn’t need Pylons.  WebCore showed that utilizing 
the same components as TurboGears (PasteScript, PasteDeploy, Genshi/Mako, 
ToscaWidgets, Beaker, SQLAlchemy, etc.) without a parent framework can be 
trivially easy, modular, light-weight, and fast.  Relying on another ‘base’ 
framework seems to me to be a repeat of past mistakes, with more pitfalls than 
benefits.

I look forward to seeing what the future will bring for all of our projects.

        — Alice.

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to