I'm looking forward to doing more Tapestry 4 training fairly soon, and some Tapestry 5 training in the medium future. One important part of my arsenal is missing: VMWare for Mac. Four months ago they said "open beta real soon now" (i.e., by the end of the year). I hope I don't have to lug along my old Dell Laptop, just to run my VMWare Ubuntu image!
Tuesday, December 05, 2006
Warner Onstine's book on Tapestry 4: Tapestry 101 is now available!
Tapestry 101 is a great introduction to Tapestry using real-world examples. It goes beyond just using Tapestry components and dives into integrating Tapestry with Spring and with Hibernate. It's organized around a real application implemented in the small and should go a great way towards filling in the gaps in people's Tapestry knowlege.
It's available right now as a downloadable PDF.
Friday, December 01, 2006
The difference between Blogs and Support Lines:
Tapestry questions posted as blog comments don't get answered.
If you have a question about Tapestry, the tapestry user mailing list (email@example.com) is the correct starting point. Questions asked there get answered pretty quickly, by the Tapestry community (including the committers).
Failing that, you can contact me or any of the other Tapestry committers. Just remember that for us, Tapestry is a business and answering questions can be a distraction, a drain on resources that needs compensation.
From my perspective, every minute of my time should be spent on Tapestry 5. Any distraction from that, any time I could be working on T5 but end up working on something else, is a net negative for the Tapestry community as a whole.
So if you're one of the folks whose been posting various questions onto the blog as comments (I see all the comments because I moderate them) ... well, now you know why I don't usually answer. This simply isn't the right venue or the right situation.
Been rapidly reassembling Tapestry functionality inside the new Tapestry 5 code base.
A first pass at localization is now in place. It's missing a couple of key features and a bunch of bells and whistles, but the basics are in place.
I've also started implementing assets. Currently, only context assets are supported, but I'll be working on classpath assets next.
Both of these things were necessary detours before I could start work on form input validation in earnest.
The code is coming together rapidly and very nicely, very cleanly.
I've been stretching to meet "the principle of least surprise" ... just looking for ways that the framework can cleanly and easily do things automatically. For example, the @Inject annotation is very flexible; it takes into account the type of field when determining how to interpret its value. @InjectAsset would have been easier, but that's one more thing for people to remember.
Also, I'm working on an "automatic" Tapestry stylesheet. I want Tapestry apps to have a good, clean look automatically, by inheriting a base stylesheet from the application itself.
Interestingly, because of the way Tapestry 5 renders (to a simplified DOM), it won't be necessary to have Shell or Body components, as with Tapestry 4. There's a post-processing stage that will be able to navigate the DOM and make selected changes, somewhat like a limited version of SiteMesh. This stage will be able to do things like insert a stylesheet link into the <head>.
In fact, I think there will be significantly fewer components in Tapestry 5, especially because of mixins (which will allow existing components to be used in new ways, rather than forcing the creation of entirely new components).
Onward and upwards. Less is More