Tapestry Training -- From The Source

Let me help you get your team up to speed in Tapestry ... fast. Visit howardlewisship.com for details on training, mentoring and support!

Thursday, February 04, 2010

Ten Years of Tapestry

I recently realized that the first prototype of Tapestry was written ten years ago! It all started as a home project in my living room, with the original inspiration coming from some brief exposure to WebObjects.

Even the "new" codebase, Tapestry 5, is well over three years old at this point.

How long can I ride this dragon? Pretty far, I think ... Tapestry keeps getting better, I keep learning new things, and the community keeps growing. I'm also very impressed by the other Tapestry committers, who have really been stepping up to the plate, not just with code, but with infrastructure issues and the backporting of bug fixes.

I think there are a lot of exciting things afoot in the larger Tapestry world right now. Powerful new features are in the 5.2 code base (still in alpha), including enhancements for JSR-303 (bean validation) and a lot of (backwards compatible) changes to the way component classes are enhanced at runtime. I'm also steaming ahead with a number of big improvements to how JavaScript is organized in the rendered page.

Outside of the core project, there's quite a lot going on. Here's a few things that have caught my attention recently:

First off, there's Wooki, a sizable Tapestry application (open source, on GitHub) for collaborative book writing. It's very pretty to look at, and the code looks quite ship-shape (no pun intended). I think Wookie is not only going to prove useful on its own terms, but is also going to serve as a great example code base for Tapestry.

Next up is Tynamo ... think Rails/Grails meets Tapestry. It's an extension to Tapestry that supports even faster RAD development, automatically creating CRUD (Create Read Update Delete) pages for Hibernate entities. These same people have been building REST support for Tapestry as well as conversational state. Lots of good stuff here (though I haven't had a chance to try it out in detail).

I've been busy with my own Tapestry Extensions project at GitHub. I'm in a lucky space ... I'm adding features to Tapestry and TapX to fit my client's needs.

We're also seeing the deployments of some very large Tapestry 5 applications, such as SeeSaw which is the UK's answer to Hulu ... streaming video on demand. This is expected to be one of the highest bandwidth sites in Europe once it leaves beta.

The shame of it is ... I'm just the creator of the framework; I don't know 1% of what's going on with applications developed in Tapestry. If you are working on something cool, please drop me a line!


Robin K. said...

Tapestry rocks, I just love to make web applications with it. It's always elegant and fun.

All the Wooki team wishes to Tapestry a long future. Keep going!

Thiago H. de Paula Figueiredo said...

Happy birthday, Tapestry!
The Ars Machina Project has a lot of packages that lower the number of lines of code needed to implement an application. It surely needs better documentation, as the one in http://www.arsmachina.com.br/project is outdated.

Unknown said...

Sorry I didn't mention your project Thiago; it's one more thing on my endless list to check out!

Unknown said...

Howard, you also forgot to mention Chenille Kit. The guys have been very busy. They started when Tapestry 5 was a very early alpha.

Unknown said...

True; I was focusing on very new things that hadn't made it to the Tapestry home page yet.

Unknown said...

cleverpig replied on Fri, 2010/02/05 - 10:05am

really cool! thanks you and team's great job~

I just work base on tapestry5.I know there are a lot of thing we can do with T5.

It has high level design,convenient internal service and extends,but document maybe need a little improve on best practice and detail.

I mean I hope your T5 in action book released this year!

Peter Rietzler said...

Altough our web application uses Tapestry we are using all the Tapestry support stuff far beyond the web tier - I thought that it might be interesting to see that the Tapestry framework is pretty useful in other environments too :)

First and most noteworthy Tapestry IOC got our first choice as DI container, both because of it's simplicity and the power of contributions and service overrides. We are building a highly modular (and massively unit- and integration tested) application where Tapestry IOC's ability for modules and contributions has proven a perfect choice for us. I've written a couple of blog entries about this issue about a year ago when we were searching for a light-weight alternative to OSGi (http://peterrietzler.blogspot.com/2008/12/is-osgi-going-to-become-next-ejb-bubble.html, http://peterrietzler.blogspot.com/2009/02/how-to-design-software-for-flexibility.html).

We wrote and contributed Tapestry extensions for popular unit testing frameworks (Unitils (incl. in next release) / http://www.unitils.org and the Spock framework / http://code.google.com/p/spock/)

Additionally we are heavily using Tapestry services (such as pipelines and chains) in our core services.

Even the type coercion infrastructure has proven very useful for us. We developed a quite powerful Groovy DSL for Enterprise Data Mediation which is targeted to non - developers and we use Tapestry type coercion (with some extensions) tightly embedded in our DSL to free our e-business managers from the burden of providing correct types.

Our whole project heavily relies on small contributions of commands that are instantiated in high volumes at runtime and need environmental stuff injected - another point where Tapestry IOC has proven to be very useful.

Cheers and many thanks for your awesome work,

Peter Rietzler said...

btw: I've forgot to mention that we presented our module system with Tapestry IOC at the Austrian Enterprise Java User Group meeting (http://ejug.at/node/33) along with another talk about Spring DM and OSGi held by Sam Brannen last autumn.