On Feb 26, 10:45 am, "Jones, Brian - McClatchy Interactive" <bjo... / mcclatchyinteractive.com> wrote: > I'd be at least a little interested in potentially offering developers > the chance to 'lock' their classes from monkey patches. This could be > useful to the 'core' library that comes with Ruby, and to at least make > developers look at extension points provided via an actual API instead > of just immediately jumping on monkey patching for solving all problems. That's ridiculous. Look. What is the problem? That I might extend a class and you might extend a class with the same method and thus we can't use each others code in the same program? Forget overriding core/standard methods -- anyone who does that knows they must do so with SUPER EXTREME caution. But if someone is writing and end-user application, it doesn't really matter one way of the other --the code is not intended to be shared. Extend to your hearts desire. One only needs to be aware of potential conflicts with 3rd party libs they might use. And for those, in which the developer is intending for their code to be reusable, then the developer needs to tread more carefully and follow some simple rules. Only extend core and standard classes when it's a very clear and general need. In which case it's a good idea to checkout projects that attempt to provide some general standardization around such methods (eg. Facets). It's likely your method is already available, and your lib's users can have a reasonable basis for knowing what to expect. Beyond that, if you still really want to extend a core/standard class in a way vunique to your particular program then give it an equally unique name --generally putting you project's name as the first part of the method. For example, the YAML lib adds methods like #yaml_properties. By following these rules, getting along with other programs is a pretty safe bet. And we don't need to add restrictions that will just make life harder when we do have good reasons to MP. I should point out one other rule of thumb often overlooked as a consequence of MP: DO NOT use #respond_to? as a means of determining if an object is extended by a module or is an instance of some class/ superclass. That's much more likely to lead to unexpected issues with MPs. T.