If we want stable conventions, then we should try to exercise the
conventions against more applications, to be sure we're covering the
core use cases. I know some of us are trying these with our own
applications, but we should also try them with more example
applications that we can all review.

In-house, we have MailReader and Showcase. I've a preliminary
implementation of the MailReader up that works (at least in a single
namespace). Perhaps we should move the work-in-progress from
GoogleCode to the sandbox, or even to SmartURLs as its 2.0.x example.

Another likely candidate would be a "Petstore Zero". I have a Petstore
site started on Google Code, if anyone would like to join in. A JPA
implementation might be especially helpful.

If we had these three applications working well, with no XML actions,
bare minimum annotations, and sensible validation, then there would be
a good chance that we would be covering enough of the basis to keep
the conventions stable moving forward.

Moving forward, I'm willing to consider the conventions a core
feature, even if we ship them as a plugin. Meaning that if we do want
to break backwardly compatibility to introduce a different set of
standard conventions, I'd vote to roll the major version number, for
that reason alone.

Of course, before we get to the point of rolling a version number, we
would have had been able to try the conventions in the form of an
alternate plugin for some time. As mentioned, distributing features in
a plugin format makes it much easier to throughly test new things
ourselves, before we make changes to the standard distribution.

(And encore kudos to Don for bringing us the plugin feature and
initial codebehind plugin that have made all this possible!)

-Ted.

On 10/8/07, Don Brown <[EMAIL PROTECTED]> wrote:
> On 10/9/07, Ted Husted <[EMAIL PROTECTED]> wrote:
> > So, in the same way that WebWork 2 became Struts 2, SmartURLs 2.1 will
> > become CodeBehind 2.1.
>
> I'm fine with this on one condition: 100% backwards compatibility.
> Backwards compatibility is so crucial for convention-based designs,
> because there is no clear feedback to the user that changes have been
> made.
>
> If you change an API, you probably deprecate the old methods, which
> gives immediate feedback to the user that something has changed, and
> they can usually view the javadocs on the deprecated method to see the
> suggested fix.  If you just remove a method, the compiler will
> immediately tell the user something has changed. With a
> convention-based system, things just stop working and the user has no
> immediate reason why or how to fix it.
>
> This is one reason I like the idea of moving the zero conf out to a
> plugin is it is easier to develop new convention-based systems, while
> allowing legacy apps to continue working using the older system.
>
> Don

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to