Yeah, the way Struts does versions kinda breaks this. You could see very major changes between 2.1.0 and 2.1.1 because neither made GA. Once a GA release has been made in a series, however, the normal rules apply. It is beating a dead horse to say I never liked the Struts versioning system, so moving forward, how can we better educate our users on how things work?
Don On 2/21/08, Brian Pontarelli <[EMAIL PROTECTED]> wrote: > > >> 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]