>
> Why can't we already do that with a Layout component, CSS and the
> Delegate component?


Skinning means you drop in a skin to some folder and everything changes
automatically. With the layout component you have to manually adjust it.
Core support means, that there is a core mechanism to find skins
automatically and be able to change the looks at runtime for example with a
listbox "Skinchanger". If I drop in new classes into a running app the class
reloading doesn't take them up. Only changed classes which were there at
startup. Skinning support would also require that all the css, js and
whatever else you need is preferably in one place.

The point with that is, that if I write for example a blog module it should
seamlessly integrate into the looks of the site. At the moment it is a bit
awkward. The new archetype look is really nice - until you use tapestry core
components like the grid. The blue and the beige/brown really bite each
other. And though it is possible to pull the grid css from the classpath and
override the classes you want, that is imho a really less than optimal
solution. A centralized skinning facility would ease that process a lot.


>  > core ability to draw templates from
> > arbitrary locations
>


> Some people in this list have already done that.
>

Yes, some did it. IIRC they had to override core classes /services for that.
I'm uneasy about that, especially when thinking about the fact that Tap5.1
is _mostly_ backwards compatible, but not _fully_. These things are needed
or would at least be warmly greeted in about every contemporary webapp.
Having to maintain overrides which possibly use internal services and
classes with each version change is an unneccesary strain, I think.

This will eventually happen as time passes. Tapestry 5 is still a
> young framework.

Yes of course. Thatswhy I don't think it will happen soon :)


>  > If you build high level components on the raw framework you'll run into
> > compatibility and interoperability issues otherwise.
>
> I'm not following you. Please enlighten me on what these compatibility
> and interoperability are. :)
>

Let's say I write a forum module. This needs access restrictions and a
hierarchy of user rights. If I dice my own for this component this would
mean that you have possibly 2 (or even more with other components which also
dice their own user-management) authentication mechanisms. With a standard
auth-service with accompanying components for login, access restrictions
etc. I could just rely on that. That would also give clear extension points
where professionals with non-standard needs for authentication, could
customize by implementing the standard security service/components'
interface.

> Grails' success comes mostly from the rich ecosystem of plugins (and Gorm)
> > which _mostly_ interoperate just fine. To achieve the same in Tapestry is
> > not possible in the way they do it there,
>

> Why not?

Because nobody would want to write the build system and also quite some of
the magic comes from groovys dynamic nature and especially gorm. And though
it is possible to use Gorm with Tapestry, you are forced then to write all
classes which use its dynamic finders for example in groovy. If you factor
data access code out into daos or services you don't have a real advantage
over plain old hibernate and writing all services, pages and components in
groovy... well then you can use grails with all its plugins straight away
since you loose the advantage of statically typed Java anyways.

 > but it should be possible to come
> > near enough when there are some well defined interfaces where you can
> plug
> > in your components.
>
> I guess you mean services instead of components in this message,
> something that confuses your reasoning.


Yes there is some confusion, sorry for that. I tried to stick more to the
correct terms this time.

Reply via email to