Mauro Talevi wrote:
Elizabeth Keogh wrote:

Hi all,

You know the ethics of release better than I do.

Is it OK to deprecate classes, if I don't actually remove them prior to 2.0?

Deprecated classes don't need to wait necessarily until major release to be removed, ie can be removed at release 1.n if it deprecated at release 1.m with m < n.
Hi folks.

Versioning in jbehave and similar projects works like this: the version numbers are of the form /major.minor.point/.

   * A point release is purely bug-fixing or refactoring, with no
     changes to any visible APIs.
   * A minor release can also introduce new features, so it changes the
     API (you can do more stuff, or do different stuff) but respects
     compatibility. Any 2.x code will work on a 2.y build if y > x. You
     can deprecate functionality in a minor release but it has to still
     work.
   * A major release is the only time you are allowed to break
     compatibility. This usually represents a major changed to the
     application, based on new language features (e.g. jmock using
     generics in 2.x, or junit using annotations in 4.x). This is where
     you would remove deprecated features from the previous major series.

If you remove a deprecated feature, you will by definition break anyone's code who is relying on that feature (and who wrote their code before you deprecated it!). So we can't remove any deprecated features in 1.x, just recommend - both explicitly in docs and implicitly in our own usage - that people don't use the deprecated stuff.

hth,
Dan

Typically, the usual convention people adopt is to keep the deprecated classes until the next major release, but often because it's less hassle and safer, as it does not assume users have removed deprecated usages.

I guess the call needs to be made on how essentially they are bound to the API contract of 1.0 release.

I would like to move all the Matchers into an org.jbehave.core.matchers package as Michael suggested, but I want to maintain backwards compatibility. I also need to do this if I want to move CustomMatcher into its own class but still maintain compatibility with UsingMatchers.CustomMatcher .

+1

PS: UsingMatchers is going to be very much smaller too.
PPS: UsingMatchers will still be non-static, but all submatchers will be static. This should allow 1.5ers to statically import matchers, while also allowing people to eg: override eq(...) to include Hibernate deproxifying.

cool!




---------------------------------------------------------------------
To unsubscribe from this list please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to