On 9/10/05, Frank W. Zammetti <[EMAIL PROTECTED]> wrote:
> Over the past few months there have been a number of people who have
> attempted to evolve Struts to "catch up" in some ways with what other
> frameworks are doing.  They have been turned away, sometimes for
> obviously legitimate reasons, sometimes for more debatable ones.

Usually, the problem has been retaining backward compatibility. When a
suggestion breaks backward compatibility, we tend to pass, at least
until we can setup a deprecate/ remove/ release cycle. Since this
cycle can take a year or more, some people drift away before we can
implement a suggestion.

Some suggestions have been out of scope, mainly for the taglibs. Along
the way we decided that the original taglibs should stick to the HTML
4.1 specification. Some taglib suggestions are non-starters because of
the product's scope.

The big fix for both of these problems, and several others, is to
subdivide the one-size-must-fit-all Struts distribution into
subprojects. If a suggestion is not backwardly compatible, then
perhaps we can make it an optional component in the Extras subproject.
If a taglib is not HTML 4.1 compliant, then maybe we can start another
taglib subproject.

But, until last month, we simply didn't have the infrastructure to
even consider such things.

Another problem is being sure that there be someone around to maintain
the code. We like to see broad enough support for any suggestion to
ensure that there will be at least three people around who will
support the code. It doesn't matter if comes from a developer or a
committer. A lot of suggestions from committers die on the vine
because too few people seem interested.

Many folks don't realize that extensions we now take for granted, like
Validator and Tiles, were being used in production applications for
*years* before we added them to the distribution. (I used both myself
in April 2001, before Struts 1.0 final.)

In the same light, I expect we will see an Ajax subproject for Apache
Struts one day. But before that happens, we'd like to see broad
support for Ajax among Struts users. Then, we can be sure there will
be committers around to support the subproject later.

As it stands, we are just now completing tasks we planned *18 months*
ago. But, we are completing them, slow and steady.

In fact, I remember Don Brown making the first "subproject
reorganization" commits at ApacheCon 2004 last November. Martin and I
were sitting at a table with him at the Hackathon, jovially giving Don
verbal +1s. :)

Ten months later, we're finally at the point where we can build and
distribute the original Struts subprojects, along with the new kids on
the block, Flow, Scripting, and Shale.

> Everyone seems to want to go off and create something entirely new when
> I haven't seen a single good, concrete reason why Struts as it exists
> today can't be evolved.  Why?

It *is* being evolved. It's just that evolution takes time.
Personally, I still fully intend to walk down the Struts Classic
Roadmap that we posted over a year ago. We're just now hitting the
first milestone: subprojects. We hit this one, and we'll hit the
others too.

* http://struts.apache.org/roadmap.html

Meanwhile, exploring alternatives like Ti can be good for Struts
Classic too. Like as not, there will be techniques used in Ti that we
can retrofit to Struts Classic. And, perhaps, one day, they might even
evolve into the same product. Or not. At this point, Ti is still
hypotethical.

> 
> Many of the things that people claim to want in a modern framework I
> have either myself done or seen done with the current Struts codebase.
> Things like components that remember and render their own state ala JSF,
> a simple managed bean facility (IoC), built-in AJAX support, something
> akin to a prerender facility, the work of Michael Jouravlev, all of
> these things have been done in Struts, so clearly it is not a case of
> Struts not being expandable or "fixable".  Why is there so much seeming
> resistance to doing this I wonder?

It's not resistance, it's as you say: If we want to, we can already do
all of this now in our own applications. I expect that many of us are.
But, going the extra yard and making what we do for ourselves
available to everyone is a lot of work. We're doing the work, but it's
on a time available basis, and most of us have very little time
available. Unlike some open source projects, we don't have any
committers who are paid to work on Struts during company time.

Because committers tend to have busy professional lives, we try to
bring on new committers whenever we can. Last month, we brought on
Wendy Smoak, who has been a godsend. With help from James, She's
propelled the Mavenized web sites forward, and we can see the light at
the end of the tunnel.

Meanwhlile, after adding the "extends" feature, our other new hand,
Hubert, cleaned up the stale deprecations, so we can continue to
steadily evolve the codebase. Now, it's left to me to finish
refactoring the documentation, and push Struts Classic 1.3.0 out the
door. It won't be a final release, but it will tap the keg.

Once we have a 1.3.0 distribution out for review, I plan to review the
22 enhancement tickets with patches, and apply as many as we can.

If someone wanted to preview those patches, and post a summary to
dev@, that would be helpful. There are prefab bugzilla query links on
the RoadMap page.

* http://struts.apache.org/roadmap.html#Bugzilla

There's a wiki page already setup for 1.3.1, and we can start making
notes on what to do about these other outstanding contributions.

* http://wiki.apache.org/struts/StrutsClassicRelease131

-Ted.

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

Reply via email to