On 01/02/14 00:05, Vladimir Lushnikov wrote:
I disagree. With the same analogy, I could sell you a blunt knife -
you would use it as a letter opener, and then I would fix the bug. Now
you might actually cut yourself!
No. The correct analogy would be:
1) I create a recipe for a sharp knife. The first IMPLEMENTATION of
that recipe is a blunt knife, and so the IMPLEMENTATION is buggy.
2) You see that the IMPLEMENTATION is useful in its own right, and have
thus invented the concept of a letter opener.
3) You fork the code at that point, creating a new "Letter opener"
recipe from the buggy, "blunt knife" implementation of the "sharp knife"
recipe.
4) I fix my blunt knife implementation to create a sharp knife.
5) Everyone is happy.
I think this is a different concern. It should be up to the library
author what they deems as 'compatible'. It does not excuse the
consumers of the library to do their own testing that it produces the
results they want (a version number in any form is not a proof of
correctness).
Absolutely not. If people want to make their OWN, unpublished code in
compatible, then yes, that's their business. But as soon as they
release a library to others, they are making certain promises and
guarantees -- the library API's contract. They are saying that "we're
providing this code, which can do this, and will help with your code.
You can use it in your own projects, and save yourself time. What's
more, many people can use the same code, and save time/space
reimplementing the same things". If they make such an offer to help
others, then go back on it by breaking the code, it's simply
irresponsible: bad code maintenance. We should ABSOLUTELY discourage
that, if our goal is reliable, reusable, libraries which everyone can
use with some certainty.
--
Lee
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev