<?xml version="1.0"?>
<!-- $Id$ -->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "./dtd/document-v12.dtd">
<document>

 <header>
  <title>Jakarta Tapestry - Quotes</title>
 </header>

<body>


<p>This page contains quotes from the Tapestry community, appearing on the 
Tapestry mailing lists
and in online forums such as 
	<link href="http://theserverside.com/home/thread.jsp?thread_id=12750" target="_top">TheServerSide.com</link>.
</p>
<p>
<small>These entries have been editted for grammar and readability.</small>
</p>


<section>
		<title>Dorothy Gantenbein</title>

<p>
We used Tapestry to implement the monitoring and administration console
for
a wireless network management product.  Initially, we implemented a
demonstration using standard JSP but we realized that JSPs presented
 difficulties for implementation.  Some of our requirements were a very
aggressive development schedule, integration with EJB 2.0 beans, ability
to
write modular reusable components, very reliable, easy code maintenance,
 internationalization, and of course easier debugging than the generated
JSP
code.  Tapestry met all of our requirements and helped us proceed onto a
 successful release.
</p>
<p>
After reading the tutorial and reviewing the examples, we started with
writing simple components.  We started with a StatusImage
component.  The
GIF for the status image should be localized and selected based on
standard
 network status states.  Another example of a simple component was a
validating IP address 
text field.  The IP address field uses the Tapestry
validation framework.  After that, we moved onto more complex components
like the StatusTable shown in the figure.  
This table has a varying number of rows depending on the configuration of the product using the Tapestry
Foreach component (very cool).  This StatusTable makes use of another
 essential Tapestry component, the Conditional.  Looking at the Actions
columns, the set of actions is conditional based on the row.  All this
logic
 happens in the Java class and is not embedded into our HTML making
maintenance much easier.
</p>

<p>
Finally, we integrated servlets and JSPs into our Tapestry web
application.
 We needed servlet integration for charting and JSPs for reporting.  With
all
 this flexibility, we could use each technology where they worked best.

Overall, all of Tapestry's flexibility along with its clean
object-oriented
 architecture made our web interface shine.
</p>


 <link href="images/success/edit-form.gif">Screen shot 1</link>
 <link href="images/success/status-table.gif">Screen shot 2</link>


</section>

<section>
	<title>Jason Cox</title>	
	
<p>
When I see things like "I can use Struts+Tiles+JSP 2.0 Taglibs" I kind of chuckle.
 While you have to learn three different, albeit related, technologies 
 I just have to use Tapestry. With this kind of mindset, is it any wonder 
 companies are looking to ASP for their front-ends? 
</p>
	
<p>
	When I took my current position, I decided to use ASP to develop the front-end
	 piece for similar reasons ... 

	I was fortunate to find Tapestry before I started development in ASP.
	 Not only did it allow for me to meet my goals, but I actually have fun developing now. 
	 I used to spend at least a day formatting and introducing the 
	 proper presentation logic into an application. What took a day 
	 now takes maybe a couple of hours. Performance is excellence, the MVC design couldn't be 
	 better, and no messy JSP compilations to worry about. 
	</p>
	
<p>To me, simplicity with functionality is the greatest achievement of the Tapestry framework.
</p> 
</section>

<section>
		<title>Paul Witt</title>
<p>
Of all the web presentation frameworks out there, Tapestry is the most elegant. </p>

<p>
For me ELEGANT is the goal of a programmer/developer (I've been around awhile). 
When, in your MVC framework, VIEW is pure HTML, and your CONTROL - controls (wow - nice control; exception/debugger/session handlers they are -- 
well, elegant) and the link to your model is - often as simple (elegant) as get/set, 
then the philosophy of web applications has moved to a new and cleaner level.
</p>

<p>
But elegance is a moving target, and Tapestry, with this latest release 3.0, 
puts me not only on board (I already am) but I've fastened my seatbeat, and I'm ready for takeoff.
</p>


</section>

<section>
		<title>Miles Egan</title>

<p>
The learning curve for Tapestry is still somewhat steep ... but I'm 
really enjoying it now that I'm beginning to get it and, most importantly, 
I don't feel like I'm writing much, if any, superfluous code.  It really seems 
like all the code directly contributes to functionality and that there's very little boilerplate. 
One of the hallmarks of a good framework, in my opinion.
</p>


</section>

<section>
		<title>Andrus Adamchik </title>
<p>
You know, Tapestry in fact is different from your average JSP taglib. 
Anyone who had a chance to use component-based web frameworks 
(like WebObjects, I don't know any other in this category) would know what I 
am talking about. This is a *different* and highly powerful and convenient way of doing things.
</p>
<p>
Surprisingly enough with so many web application layers out there, Tapestry seems to be the only 
one (OpenSource, that is) that allows you to create a set of reusable components 
and build the design around this. The level of reuse is unmatched with anything JSP. 
In many ways it is even stronger than commercial implementation of the same design idea (WebObjects). 
In particular it makes it extremely easy for graphics designers to modify HTML, since dynamic content 
does not use *any* custom tags. Also the amount of code (and time) it 
takes to hook up an average model layer to the HTML presentation is so small 
that at first you may think you've missed something along the way :-).
</p>

</section>

<section>
		<title>Chris Wilson</title>
I've said it before and I'll say it again... 
You owe it to yourself to take a serious look at Tapestry. 
It's the most exciting model in Java web development 
I've seen in a long time. It really allows you to build applications--not web sites--that "execute on the web." Very cool stuff. 


</section>

<section>
		<title>David Solis</title>
	
<p>
Tapestry is the best solution to the presentation tier and it provides a clean separation of content and developer code. 
First, I extended it for WAP support, then I developed several WAP components and 
finally I developed a complete email application for WAP in record time. 
</p>

</section>

<section>
		<title>Jim Birchfield</title>
<p>
 When using Struts or Velocity, in order to see what the finished
page will look like, our graphic designers
must assemble the application, deploy it ... they
basically lose all the luxuries of WYSIWYG development ...
I spent 30 minutes or so with one of our graphic designers here, 
and he was giddy at what I showed him as I redesigned one of our smaller 
apps using Tapestry. 
</p>
<p>
Bottom line for us is this: We have graphic designers and we have developers, 
and I don't want them to necessarily have to know each others' job to get things done.
Tapestry is the best framework I have seen that offers this sort of separation. </p>

</section>

<section>
		<title>Jiri Lundak</title>

<p>
As a 'lay developer' using Tapestry I can only recommend it. 
We have built a content management system
based on Tapestry, plus multiple sites that are now powered by it. 
Thanks to its component architecture, we 
are able to publish any kind of our metadata-driven business objects with just 
a handful of generic, highly dynamic pages, using customizable components. 
All business logic is encapsulated in business objects 
and services, so there is not really much logic in the presentation layer besides the navigation parts. 
</p>
<p>
The learning curve is not flat, but is really worth 
the effort. If you need to bring a dynamic web-app to the browser 
Tapestry offers many predefined and stable components to build on. 
We have gone with Tapestry and we will continue to use it
in the next couple of projects needing a web-interface, too. 
</p>


</section>

<section>
		<title>Malcom Edgar</title>

<p>
I just wanted to send you a quick note of appreciation for your Tapestry 
framework. It is a truly original and innovative approach.
</p>
<p>
While the learning curve is steep compared to thinner webapp frameworks, I 
have found it is well worth the effort. The amount of code I am having to 
write is greatly reduced and I am achieving a much greater level of reuse.
</p>


</section>


<section>
		<title>Mind Bridge</title>
<p>
I just want to second the positive comments about Tapestry. 
We have evaluated a lot of frameworks in the past couple of years, 
and in our opinion Tapestry is the only open source Java framework 
at the moment that provides everything necessary for Web-centric component 
oriented development. 
</p>
<p>
The most important feature of Tapestry is 
indisputably the ability to package common 
Web functionality into components that can then 
be effortlessly reused again and again. Building a 
Tapestry application is pretty much like playing with 
Lego bricks -- all you have to do is just fit the different 
pieces together and not worry about how each brick would 
work internally or how the different pieces would interract 
with one another (an OO approach at its best). As a result, 
after gaining some experience and accumulating a set of components, 
one can build incredibly complex Web applications quickly and easily, 
and yet be assured that those applications are of a very high quality. 
</p>
<p>
Tapestry has another major advantage as well -- 
it provides very clean separation between presentation and logic 
(cleaner than that of the most commonly used frameworks). The 
design of its templates is also very mindful of the actual web 
development process, accomodates very nicely the work of the
web designers from the start, and allows them to play along
even in later stages of the application development. This, 
again, is something rarely found in the other frameworks. 
</p>

<p>
I will mention just one more superb feature -- the Tapestry design 
and APIs provide a huge number of extension points that allow you to 
customize the behaviour of the framework almost to no 
end. In order to achieve a specific goal for one customer we twisted the 
behaviour of the system so much, that Howard would faint if he sees 
it. In any case, being able to easily modify and extend specific elements 
of the framework is a major advantage. 
</p>
<p>
This may sound a bit like an advertisement, but it is not -- 
we are just very satisfied users. We've 
got a significant increase in productivity, we've got increased quality,
we've got happy web designers, and we've 
put an end to the repetitive operations -- it would be hard to think 
of a better scenario. 
</p>
<p>
If you are experienced in OO and/or components and care about 
Web development, I would suggest that you have a look at Tapestry.
I would be very surprised if you do not find it 
a far more viable solution for your needs than JSP or Struts, 
for example. 
</p>


</section>


<section>
		<title>Luis Neves</title>
<p>
Actually what drove me to Tapestry wasn't the saved development time, it was 
the sheer beauty of it :-)
</p>
<p>
I come from an ASP/VB background and I was getting sick and tired of that mess, designers 
constantly asking me "Is it OK to move this part of code to the bottom 
of the page?" , "Could you take a look and see if I didn't mess anything 
when I added the picture?", "Ohh, I'm sorry. that was an include file, 
I thought it was just a comment" ... well you get the picture, and tools like 
Dreamweaver only help to some extent. The
perfect separation of roles was what drew me to Tapestry ... the rest of the things 
(and there are a lot of them) were the iceing on the cake.
</p>


</section>

<section>
		<title>Adam Greene</title>

<p>
The company that I work for did a research project with the 
National Research Council of Canada, and we spent several months reviewing 
web services, J2EE, and Database systems for a technical risk project that we were doing. Out of that we learned 3 things: 
</p>
<ol>
<li>Web services were immature. </li>
<li>J2EE was overrated. </li>
<li>That JSP and anything else that stuck anything 
        other than HTML into an HTML file was not only counter-productive but 
        dangerous to the life of the project.</li>
</ol>


<p>
I will give you an example. We have a "legacy" project that is done in 
JSP (all of our development efforts have moved to Tapestry). We had to perfect the 
logic of the project while the text and look of the project was still in flux. Everytime our 
graphics guys fixed the pages, code would get damaged, or vice versa. Everytime 
our graphics guys created new pages, our programmers would have to go mark 
up the pages with code and could not work on the logic of the given page until after 
our graphics guy had finished it. On top of that the whole system has to be translated 
into French. Which means that we not only have doubled our work, we have actually ended up 
tripling it, pushing back deadlines, etc. If it had not been for the fact that we "inherited" the code, 
it would have been done in Tapestry to start with, because: 
</p>

<ol>
<li>Our graphics designers could do their thing without disturbing the work of our programmers. </li>
<li>The programmer wouldn't have to wait for the designers to finish a page to start work on it. 
Many times our programmers work with pages that are simple white with text and form fields and after it works, 
our designers integrate the pages together. </li>
<li>Localizing for French simply involves 
copying the existing layout, replacing English text with French, and saving it with a new file extension ... no need to recreate the code of a JSP. </li>
<li>If our client doesn't like the look, it is a 
simple matter of changing it, no code is disturbed, no code is broken, 
it will work when it is done being modified without our programmers even 
looking at it. (And our designers don't even know Java....)</li>
</ol>

<p>
If you are using a language or framework that puts proprietary (non-HTML) code into your
templates or HTML files, I seriously suggest that you take a look at the approach that Tapestry 
takes as you will probably find that it is quite revolutionary in its approach to web development (as stated above).
</p>
<p>
 So take it from someone who just researched existing and upcoming technology for three months, Tapestry 
frags the snot out of frameworks like JSF, Struts, and the like. 
</p>

<p>
I will give Apache one thing though, they have built a lot of production quality 
software that beats even Microsoft. We added Torque to Tapestry to 
fill a void in the database support (Tapestry by itself has no database support) because Tapestry's model 
fit so perfectly that I can actually create a web page to display all the records in a table using only 
14 lines of Java code, of which less than half (only 6 lines of code) are actually 
hand written (the rest are auto-generated by Eclipse). So I guess that is another point 
for Tapestry: Integration of other packages / APIs that support a Java Beans 
style is a no-brainer. No taglibs need to be written, no new scripting needs to be created, it simply works. 
</p>

</section>


</body>
</document>
