Austin Ziegler wrote: >Aye, so I'll start. If you're going to extend core or standard library >classes, you should: > >1. Do so only at the user's request. > I disagree. requiring a library should extend stuff in the standard library if that is proper behavior for the library. E.g. require 'foo' might well inject a parsing ctor into String as String#to_foo, if it made sense to do so. I don't see any difference between a library and a framework extending Fixnum with #day as per Rails. I agree strongly with documenting it in a very loud tone of voice, however. 1.1 Do not change existing behavior of external classes or modules. 1.1.1 If you reopen an external class and redefine an existing method, should Ruby issue a warning? Is there a safe_level that will prevent a library from touching external classes? 1.1.2 Before adding a new method to a class or method, consider testing with respond_to? to see if it really is a new method, and raising a warning if it isn't. 4. In a library, never change existing behavior of code outside the library. If I have a set of unit tests for a class, and I require your library, all of the unit tests for my class must still pass. It would be really useful if there were an idiomatic way of testing the Core, StdLib and any modules the library required. Then a sanity test could be run against the library verifying that all is as it should be. This wouldn't be a short unit test, but something akin to the exhaustive setup test you can run after building Ruby. It would be useful before *publishing* a library to validate its sanity. Perhaps if you propose to publish a module called foo, you may put test_foo.rb in the same directory, or in ../test/test_foo.rb, and for any modules you require that also provide a test_*.rb module, the sanity checker would run them as well. Finally, modules in the RAA or other major repositories could have the sanity checker's output placed alongside, letting the user know to what extent it has been tested. -dB -- David Brady ruby_talk / shinybit.com I'm feeling really surreal today... OR AM I?