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!

Wednesday, August 24, 2005

Tapestry 4.0 progress and such

HiveMind 1.1-beta-3 is out, which makes it easier to build Tapestry 4.0. That would be nice because I've been trying to get people to help with the documentation, and they need to be able to build things first.

I've also updated the Tapestry QuickStart Tutorials, bundling HiveMind 1.1-beta-3 and the latest snapshots of Tapestry 4.0-beta-5.

I've been fixing lots of little bugs in Tapestry 4.0, mostly stuff related to client-side JavaScript. There's some issues with the compliance of the HTML generated by Tapestry, Tapestry (beta-4) often generates ids that include the '$' character. For example, when a form contains a loop, the element ids will be 'textfield', 'textfield$0', 'textfield$1' (in beta-4). Now the same sequence will be 'textfield', 'textfield_0', 'textfield_1'. In addition, much of the client-side JavaScript has been changed to use document.getElementById() rather than document.form-name ... including accessing of form elements (which now render an id attribute as well as a name attribute).

There's still much to do with Tapestry 4.0 before it hits a release candidate, and balancing that work with my clients (not to mention my move to Portland, Oregon) has been challenging.

Meanwhile, I've been using Subclipse 0.9.32 and it's seeming a bit more stable than the .30 version I was using. It's about time for Tapestry to move over to SVN ... we already took the vote, and have just been waiting for a "quiet time". The fact that CVS has been behaving badly at apache.org just makes the urgency of the move that much more plain.


Anjan said...

Hi Howard,

Good to note that Tapestry 4.0 is coming soon.

BTW, I use (java based) smartcvs/smartsvn as my cvs/svn client -- they are free(as in beer) clients and work fairly well. They have professional versions too -- which have more bells and whistles to make life more easy.

BTW, good to know that you're in Portland, OR. I live nearby in Corvallis.

Have you started using MS fiddler(http://www.fiddlertool.com/dl/FiddlerSetup.exe) for looking at HTTP requests, etc -- if a client using IE has issues -- you can ask them to send them the entire session recorded as a .ZIP file(with HTTP headers, etc) ?


Anjan said...

Hi Howard,

instead of using the document.getElementById(), can Tapestry start using prototype's(http://prototype.conio.net/dist/prototype-1.3.1.js) $() function so that the javascript is NOT verbose ?

Thank you,


Howard said...

Haven't heard of this before; however it comes down to licensing. As an Apache project, we have to be very careful about outside code we use, and can't re-distribute code of any type that does not originate within Apache.

Kevin Menard said...

Ahh, too bad you're in OR now. I was really hoping you could stop by WPI someday when development died down to give a presentation on HiveMind & Tapestry.

Matt Girard said...

Hi Howard,

Good to see that you're moving towards xhtml (1.0 strict/1.1) standards compliance! That is going to make my job so much easier. I'm also totally psyched about the new client-side javascripting options; no more lame alerts!

Two more things that need to happen for validation (that I can think of off the top of my head):
1. There is no attribute "language" when you include javascript files. Just: <script type="text/javascript" src="/js/myjavascript.js"></script>

Drop that stupid "language" tag!

2. Form elements (even hidden ones) count as block level elements and can not live directly under a non-block level element. As you may have guessed, <form></form>; is not a block level element. Please wrap a <div></div> around all of the generated <input type="hidden"> elements to solves this compliance issue!

Also, despite the fact that I totally love Prototype, I think it would be a very bad idea to include it in Tapestry. The trouble is that there codebase is changing a lot from version to version. I for one have been using 1.4.0_alpha2 to work alongside the latest trunk of script.aculo.us. Having Tapestry force me to link against an older version would break everything.

Thank you!