Oh the horror I have been through the last 6 years where I could
randomly call add() inside my page's and panel's constructor. Over
1500 hand crafted pages by about 4 hands of developers and they are
all ready for anti-depressants because of the troubles the component
constructor has caused. Yes, things are really bad when you execute
code in a constructor.

Seriously, in my 6+ years of developing Wicket applications, adding
components to the component hierarchy, I have yet to encounter the
problems you say are so detrimental to developing with Wicket.

Similarly calling methods from constructors that may be overridden.
Those things are easily discovered with a debugger. At my company I
have not encountered anything bad happening because of this. Perhaps
in 5 years one or two days in total lost on a team with 25 developers.
 whooptidoo. not. a. big. deal. Using Subversion, Eclipse, Hibernate,
Maven and Spring has caused much more lost hours than any problem you
mentioned.

There are just a couple of components, or rather models that require
the component path in order to work properly. However those are
typically better rewritten to evaluate their stuff at render time
rather than construction time. If that doesn't work, those usually
were better added in onBeforeRender, or more recently onInitialize or
onConfigure.

Given that in all my Wicket time I have not encountered unsurmountable
problems with using constructors for what they are intended for, I
will not be voting favorable for something that will throw away 6
years of code, libraries, books, blogs, articles and presentations,
just because one person dislikes constructors. If I wanted such an
experience, I'd used Tapestry instead.

Yes, we break compatibility between releases. We do this to improve
our framework and the way applications can be built. We strive to
minimize compatibility breaks and try to keep upgrades of medium sized
applications to a couple of days. We learnt our valuable lesson with
the constructor change—and we're not about to repeat that fiasco again
[1]. We try to balance the improvements we can achieve with the pain
it will cause for upgrading between versions. In this instance, the
pain is huge and community wide. The benefits are slim at best, as
evidenced by 6 years of successful application development. The
balance in this issue is severely off.

So to summarize my rant:

-1 for removing the ability to use add inside a constructor.
+0 for improving the handling of oninitialize
+1 for improving the documentation on the lifecycle of components and
the event chain called during processing [2]

Martijn

[1] we had to rewrite Wicket in Action twice, and still discovered old
2.0 code in the examples days before going to the press
[2] I'll have a go at that soonish if no-one beats me to the punch

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

Reply via email to