The API has yet to be solidified and there are a few things that I'd
still like to discuss and possibly change in that regard. My main goal
is to ensure backwards compatibility in the convention plugin API.

My thinking is like this:
upgrading from [today's convention-plugin] to [final convention-plugin] will be much easier than upgrading from [codebehind] to the [final convention-plugin].
True. The changes will probably not impact most applications, but will be API changes and not compatible.


Furthermore, I think we should all start thinking about when the "true"
stable release of XWork and Struts2 will be.

Isn't a GA release meant to be a "true stable release"?
I think to know what you want to say, but I am still somewhat confused about why releases in s2 are working the way they do.
It depends on your versioning system. I prefer for all minor numbers (2.x) to be compatible and all major numbers (x.0) to be incompatible for the API perspective. I also feel that patches numbers (2.1.x) should not add or subtract features. Therefore, the schema I use GAs don't measure compatibility, the version numbers to. In my world you release GAs for majors, minors and patches when they are final. If the release isn't final, it uses a signifier like A, B, RC, M. For example, 2.1.1-RC1 would be the first release candidate and 2.1.1 would be the GA final release. Struts versioning is much different though.

I think it makes sense to target the next release and jump up to 2.5 or some number to indicate
stable APIs. This would include a number of API clean-ups, OGNL
replacement and a few other things that will severely break plugins and
applications. After that release, API changes should be compatible so
that plugins and applications can be upgraded without requiring
re-compiling.

I am quite sure there will rise another list with new issues that should be resolved before a "true" release in some time... In my oppinion, API stability is nothing that comes with reaching some feature set or project milestone. This would imply stopping innovation at that point. For me, API stability needs to be some kind of project goal or philosophy - which needs to be enforced by defining commonly accepted rules.
I agree for the most part, but also use version numbers to imply API freeze and compatibility. Innovation and API compatibility are not mutually exclusive. Folks just have to understand what they can and cannot do to APIs. For example, you cannot remove any methods or classes otherwise, it isn't compatible. You can add new methods and classes and this implies the ability to innovate. Deprecation can also be used correctly (not like the JDK) to handle API changes between major versions.

But my impression is that this is no (important) goal for s2, and I can hardly imagine that it will be one day just because it gets to a point where _today's_ most wanted features are implemented.
Not yet, but I want to make it one. I think since the plugin system allows developers access to APIs that were at one point internal, it changes things quite a bit. These APIs are now public and need to be stabilized at some point. Otherwise we will end up having developers who are constantly battling with upgrading plugins and applications and get turned off by Struts.

But maybe this is worth a new thread...
Agreed ;)


-bp


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

Reply via email to