On Sep 30, 2008, at 05:24 , Dave Thomas wrote: > For example, the deprecations are fine in theory. But think about > how tests are supposed to work. You run them, and they're supposed > to be silent. Maybe a row of dots, but that's it. Any output means > there's a problem. I think it is a cultural problem. We don't have or even support a culture of deprecation, of shedding dead weight. Somehow, the idea of announcing ahead of time that you intend to delete code (with a suitable replacement) _sometime_in_the_future_ sends shockwaves of terror throughout the ruby community. Personally, I find that rather embarrassing as I see nothing better than to reduce the amount of cruft we have and still maintain functionality. > But now, when I run my tests, I get pages of stuff flying by, saying > stuff is deprecated. To someone who lives by tests, this is > incredibly scary. > > You might say "change your tests". But I think that's being a little > harsh. Part of being compatible with Test::Unit is providing a > similar user-level experience to it. A minor heart attack the first > time you run is a different experience. Except... we're talking about a __DOT-OH__ release. If this was 1.6.9 I'd completely agree, but this is 1.9.0 and we've had no problems with incompatibilities thus far. Think about the number of tests that are going to fail that expect String#[n] to return an int that are now going to blow up. Somehow that's OK, yet deprecating poorly named API is not? No. Dot-Ohs are where we introduce our incompatibilities. And in this case, we're not even talking actual breakage... that's the thing that is killing me. We're talking about 100% compatible API, telling you that you're going to need to change it in the future. I even documented WHEN I was going to do this and nothing is even remotely close (or etched in stone for that matter): tu_deprecate :assert_nothing_thrown, :assert_nothing_raised # 2009-06-01 tu_deprecate :assert_raise, :assert_raises # 2010-06-01 tu_deprecate :assert_not_equal, :refute_equal # 2009-06-01 tu_deprecate :assert_no_match, :refute_match # 2009-06-01 tu_deprecate :assert_not_nil, :refute_nil # 2009-06-01 tu_deprecate :assert_not_same, :refute_same # 2009-06-01 def assert_nothing_raised _ = :ignored # 2009-06-01 def build_message(user_message, template_message, *args) # 2009-06-01 Yet, somehow, this is a huge thing that is totally freaking everyone out. I just don't get it at all, esp. given how long this has been in the works and how shockingly little feedback there was that whole time.