That's precisely what I was used to. I had to learn much more about Maven that I wanted to just get started with a trivial T5 app until I found the secret instructions on a blog post from Howard. I haven't even tried deploying anything non-trivial yet.

Norman Franke
Answering Service for Directors, Inc.
www.myasd.com



On Jun 18, 2009, at 4:37 AM, Joel Halbert wrote:

I'm still not convinced that using Maven is a good thing.
It's fine for those people that use it day to day already, but for those people who have no need/interest in picking up another framework and who just
want to get on with using Tapestry its a real bug bear.

I've always just downloaded the binaries for whatever project I'm using and dropped them into my project. I very rarely have versioning issues (if every at all in fact). I'd go so far as to say that this is preferable - you know exactly what code your using, and why, because you've put it there yourself rather than having some opaque system under the hood doing it for you. This
would seem to give you a greater degree of control over whats in your
environment - important when it comes to deploying.

On Wednesday 17 June 2009 22:15:23 Norman Franke wrote:
I did, and that worked using jetty on the command line. Eventually,
following the other instructions, I was able to even get that working
in Eclipse. However, it is very basic: no hibernate, no security/
authentication.

I started following the instructions in the tutorial, which do not work.

Norman Franke
Answering Service for Directors, Inc.
www.myasd.com

On Jun 17, 2009, at 2:21 PM, Juan E. Maya wrote:
did u follow the tapestry quickstart in
http://tapestry.apache.org/tapestry5.1/quickstart/ ? I don't think it could get easier than this. U can even run it inside eclipse if u have
the m2 plugin for maven.

i do agree with u that the documentation could be better, however,
reading your message somebody could believe that starting a new
tapestry project is extremely difficult and it's totally the contrary.

On Wed, Jun 17, 2009 at 7:21 PM, Norman Franke<nor...@myasd.com>

wrote:
I've been using T4/4.1 for several years and have been quite
pleased with
it. I've been using it with Hibernate, and while not perfect, it's
worked
pretty well. We've found it much faster to embed a web browser in
our main
app and do editing, queries and the like via Tapestry than writing
native
code.

I have a new project to replace our aging billing system. I figured
this
would be a great way to learn T5. So, I'm migrating me, not an
app. :-)

I was pondering posting this, but this thread sort of pushed me
over the
top. Note that I don't disagree with anything Howard said. However,
this
almost became "Why I almost dumped Tapestry entirely."

I'm writing this in order to solicit feedback and maybe help
others. I've
been using Tomcat (now 6.0.20) and Eclipse (now 3.4.2) for quite
time time,
and I'm very productive developing use them (and T4.1) I think this
is a
pretty common development environment.

To get started in T5 for a fresh new app, my first thought was to
follow the
tutorial at http://tapestry.apache.org/tapestry5.1/tutorial1/.

Chapter 2 just plain didn't work for me. I think part of it is due
to Maven
generally being extremely fragile and working less than half of the
time.
However, even after working around that, you can't just import the
project
into Eclipse. At least not under Eclipse 3.4.2.

No problem, I thought. Maven is annoying anyway. I'll just create a
Dynamic
Web project (like I do for T4.1) and download the T5.1 binary
distribution.
That's even worse. It comes with no README listing dependencies or
anything
useful, and includes tons of libraries that don't appear to be even
needed.
Tapestry failed to start up during initialization. Why have a
binary distro
that doesn't work?

Back to Maven. After some googling, I found this article:
http://tapestry.formos.com/wiki/display/T5IDEINT/Eclipse+(including+Mave
n) Shouldn't
this be included in the tutorial? Sadly, the tutorial is extremely
basic,
but at least it works. (And is the only way I've found to actually
create a
new project in Eclipse to date.)

Next, I tried Tapestry Jumpstart. After hours of configuration and
random
errors (using Tomcat), it worked. However, it's so fragile and
klugy that I
just can't see using it in production. I don't care about OpenEJB.
I want
just plain T5.1 and Hibernate. Plus running in a remote tomcat
sessions
eliminates many of the developer productivity benefits of T5 in the
first
place. One thing I liked about T4 was that I could deploy a WAR to
a stock
Tomcat install, and it would just work. That won't happen with
Jumpstart.
Plus. it if takes 3 hours to just get a working developer
environment, why
even bother?

Next up, AppFuse. It's only T4, but there is a Tapestry 5 add-on.
Sadly,
AppFuse's T4 support is now broken due to a dependancy on tapestry-
flash
that appears to be missing and following the instructions on the
AppFuse
Tapestry 5 page doesn't work anymore either, resulting in tons of
missing
resources.

So, since T5 doesn't appear to provide much in the way of
authentication /
security (a very basic requirement for almost all webapps), I
started down
the tapestry5-acegi approach. Of course, that doesn't work with
T5.1. I
managed to get it working and then upgraded to tapestry-spring-
security
2.1.0-SNAPSHOT. Still didn't work without augmentation. (Thanks to
maven for
not updating the packages when I switched to the snapshot, too. I
had to
delete the "nu" directory in my ~/.m2 directory. One more reason
Maven
blows. It just doesn't do what you want.)

I'd love to see more people use Tapestry, but after attempting a new
project, I'd feel embarrassed asking people to give Tapestry a look
at this
point. Heck, I'm thinking maybe sticking with T4.1 is the way to
go, despite
all the benefits of T5. But, I really do want to start in on T5
since I've
loved using T4 for the last few years, and it does seem to be a step
forward.

I think its common to want to just get something working in order
to get a
feel for the framework. Doing so in Tapestry, at least for me, has
been a
waste of two days. I finally, on the third day, I have something that
appears to allow the tutorial to work with basic security. I'm not
sure if
others have similar problems and just gave up without comment,
making other
frameworks seem more popular?

Norman Franke
Answering Service for Directors, Inc.
www.myasd.com

On Jun 16, 2009, at 7:20 PM, Howard wrote:
I recently had an e-mail exchange with a Tapestry user; after
congratulating me on creating Tapestry, he went on with the
following
observation on his organization: The company I work at unfortunately
chose JSF for their big app. The reason was that Tapestry was
"brittle"
in the sense that, if one developer breaks something, on a page or a service, very often the whole site won't come up because the initial
registry startup will fail. Or for example, if page A has a
pagelink to
page B, and page B is broken, then page A won't render. While I
agree
that we shouldn't ship unless the whole app is working, this is a
thousands of pages big app with hundreds of mediocre (as in likely
to
break things) developers. They'd rather have 80% of the thing
working
than nothing at all. I never thought of this for my own projects,
and
haven't had the time to examine the truth of their claims. What's
your
take?
I provided the following response:
Early failures are absolutely, 100%, the only path towards code
quality. You may have heard the phrase "no broken windows" (see "The
Tipping Point" by Malcom Gladwell for more details) but the short
form
is that when errors go uncorrected (whether they are broken
windows in
an abandoned building, or broken code in an application) they tend
to
multiply quite rapidly.
The things that will "break" a link from page A to page B are
substantial problems such as invalid templates, references to
unknown
properties or components, or compile errors in the page B class ...
things that no other developer should ever see when page B's
developer
is working and checking in code. That is, problems that should
never be
checked into trunk, but instead kept in a local workspace or a
private
branch.
An organization that thinks that fail early is a problem is an
organization that isn't prepared to develop a large application in
any
technology. The image I'm getting is one where there is no build
server, no continuous integration, at best CVS for source code
management (or possibly one of those "shared directory"
monstrosities) .... i.e., a chaotic environment where errors are
allowed to be checked in to the trunk and can go unnoticed for some
time.
The solution to coding errors in pages or components is not to wait until your testers (or end users) find the bugs, but to identify and
fix the bugs early. That's called "engineering discipline" and the
reality is that even self-professed "mediocre" developers can do it.
Tapestry helps because it fails early and has great exception
reporting
to guide you right the problem so that you can fix it.
Another factor here is enforced helplessness. If only Fred
understands
page B and he's out when it's broken, then all development stops
waiting for Fred to get back. I hit this problem myself, years ago
working on a large Struts application (those words give me the
heebie
jeebies now!). We had lots of code, a fragile and slow build
process,
and many little code "fiefdoms". I spent too much wasted time
twiddling
my thumbs.
Nobody should "own the code"; if page B is is broken, Julie (who
normally develops page A) should be free to fix it. Julie will
need to
understand the page B code well enough to fix it, but also you
need an
overall environment with shared source, no repository locks (that
is,
nothing that says "Only Fred can change this file"), and no
management
PHB's getting in the way. Pair programming is the best way for
Fred and
Julie to share knowledge so that they can understand each other's
code.
Even if pairing occurs only part time, it's very effective at
knowledge
transfer as well as ordinary coding.
The idea that "mediocre" developers should use JSF as it is more
tolerant of errors is absurd! Tapestry 5 is designed to improve
productivity for all developers, by streamlining, simplifying, being smart and being concise ... not to mention live class reloading and
best-of-breed exception reporting, which makes it fast to identify
and
fix those errors.
If your doctor tells you to eat less red meat, that doesn't mean you
should switch to a diet of fried chicken three meals a day!
Likewise,
if you have concerns with code quality from your developers, you
should
not switch to a less agile, more code-intensive, less supportive
development model and hope to catch all the bugs in QA. Sweeping
problems under the rug is never a winning strategy.
Coming down off my soap box, I should also add that Tapestry 5.1
works
a little bit differently than 5.0 in this respect, so it does (in
fact)
defer more of the page loading and validation until a link is
actually
clicked. This is more for performance reasons than to shield
developers
from application problems. Even in 5.0, the loading and validation
was
the "reach" from page A to pages explicitly referenced (usually via PageLink during the rendering of page A), so it's a highly unlikely
case that a single error in a 1000 page application will keep the
application from starting up, unless the start page of the
application
links to all 999 other pages.
Re-reading the above post I can't emphasize enough: you can't ignore
quality problems. Quality problems lead to development failures,
schedule slips, missing functionality, low morale and high turnover.
Saying "we don't have time to fix the quality problem first" is to
ignore the the second law of Thermodynamics. You are expecting a
miracle, literally writing it into your project plan.
Formos addresses this issue two ways: First, we use Scrum and
deliver
on (typically) 4 week cycles. Thus we set real deadlines and have a
constant check on quality (we're providing working code
constantly). We
don't even try to predict what we'll be doing six months or two
years
from now, we just deliver a steady, manageable stream of software.
Secondly, Formos uses Tapestry because of all the reasons that the
anonymous developer's organization rejected it, and for many, many
more
reasons besides.

--
Posted By Howard to Tapestry Central at 6/16/2009 03:45:00 PM

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



--
Joel Halbert
020 3051 8637
075 2501 0825
j...@su3analytics.com
www.su3analytics.com
www.storequery.com
SU3 Analytics Ltd, The Print House, 18 Ashwin St, London E8 3DL.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


Reply via email to