On Tue, Dec 13, 2011 at 1:59 AM, rihad <ri...@mail.ru> wrote:
>
>
> On Dec 13, 6:55 am, Mike Orr <sluggos...@gmail.com> wrote:
>> Pyramid is a mid-level framework like Pylons. For a
>> lightweight framework, see web.py, Aspen, Quixote, Flask, Werkzeug, or
>> several others. Pyramid's focus is on being scalable, both down and
>> up. You can make a Pyramid application and launcher in a single script
>> file. Or you can build an elaborate full-stack framework on top of
>> Pyramid, or use an off-the-shelf one. With Pyramid there are multiple
>> ways to do it, but they are all interoperable. Our goal is not to
>> force everyone to a mid-level framework, but to provide such good
>> building blocks that future high-level frameworks choose Pyramid as a
>> foundation.
>>
>> --
> So it's a perfect tool for writing a framework :)
> Lightweight in my understanding means few features, mostly glue code.
> Just like Pyramid. All other meaty, but nonetheless important
> features, are meant to be chosen by a developer using that framework,
> and plugged in. For example, AFAIK Pyramid has no Form/validation
> subsystem in its core, or even an "official" plug-in that it endorses.
> Through trial and error, you have to just pick the missing part from
> the plethora of what's available, that would suit you functionally and
> esthetically. Maybe in the long run this would make you a more savvy,
> professional developer. But you'll have to agree with me, that if our
> goal is to build bigger, less buggy programs, we're gonna have to
> abstract from smaller details, use bigger bricks, so to speak.

This is a longstanding debate that goes back several years, whether
Pyramid (and Pylons 1) is the right size or too small. You're right
that many users want the framework to choose a
form/javascript/ORM/CRUD/authentication/etc library for them, and that
this is a major reason for the popularity of Django, TurboGears, etc.
Pyramid is a new project, and its tutorials and add-ons are still
being written. As Chris said, we want all those things to happen, but
*outside the Pyramid core*. In autonomous packages not constrained by
all of Pyramid's rules and release schedule, where multiple developers
can offer different and possibly contradictory solutions.

The type of form library is a good example. Two schools of thought
exist: (1) automatically generate a form based on a data model, (2)
allow the user to override and customize how each form element looks
and where it's placed. FormAlchemy is the former;
FormEncode/WebHelpers is the latter. ToscaWidgets is a larger example
of the former: by adding more features and Javascript plugins it
becomes significantly bigger and more complex. All of these features
are a positive for some people and a negative for others. If a future
Pyramid/ToscaWidgets bundle (TurboGears 3) exists someday, it would
please some users. But others would be turned off, and others would
find it *difficult* to express their application's requirements in
that system. If Pyramid offered ToscaWidgets in the core, those users
would have to painstakingly work around it, and would have to suffer
several large dependencies which they're not using. But by pushing the
decision to a higher level, Pyramid pleases both modular-favoring
users and full-stack favoring users: everybody except those who wish
the full stack were in the core. We're trying to offer a different
framework *paradigm*: one where high-level frameworks are in
super-distributions, and you can choose from more than one of them.

By lightweight I mean a framework that has only the bare essentials
for request processing: query parameters and the like, and maybe a
session interface. The small frameworks I mentioned went that route. I
used to use Quixote because of this: I liked the fact that I could
print out the entire source and read and understand it in half an
hour. But I got tired of writing and maintaining my own template
interface, database interface, session persistence, and
authentication. (This was before Mako, SQLAlchemy, and Beaker
existed.) I wanted to use plugins written by experts and maintained by
a community. That led me to Pylons, which had more of these things
built in. But I also valued ultra-modularity, so I could not choose
Django, and TurboGears was in too rough shape then.

But TurboGears created an innovation which has benefitted all
frameworks since. Originally it was a "decide-for-you" framework. Kid
templates, SQLObject ORM, and I forget which Javascript library. But
*ALL* of these became obsolete, out from under the framework. Even
from the beginning, many users wanted to use Cheetah templates rather
than Kid. (Kid was similar to Chameleon; Cheetah was similar to Mako.)
So TurboGears invented a template front end called Buffet, which
allowed different template engines to plug into the framework. This
pleased everybody: those who wanted an official template engine, and
those who wanted alternatives. Buffet was ported to Pylons 0.9.7, and
a simpler version of the concept was ported to Pyramid.  So you see,
if TurboGears had rigidly stuck to its original decisions, it would be
stuck in obsolete-land and would never have taken off.

If you have specific questions about which libraries to use on top of
Pyramid, such as which form library to choose, describe what kind of
form API or "workflow" you expect, and we can suggest something the
most similar. Do you just want a quick-and-easy form based on an
object-oriented model? Do you want to control precisely how the form
looks? Do you require Javascript, or do you have external Javascript
you want to integrate? All these point to a different subset of form
libraries.

-- 
Mike Orr <sluggos...@gmail.com>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to pylons-discuss@googlegroups.com.
To unsubscribe from this group, send email to 
pylons-discuss+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to