On Thu, Nov 6, 2008 at 9:22 PM, <glyph@divmod.com> wrote:
(Moving this off the twisted-web list because it is of more general interest and contains nothing web-specific.)
On 09:48 am, jml@mumak.net wrote:
On the other hand, there's a related invalid argument that gets used a lot by library and framework authors: "if we provide X, people might misuse it, so we should not provide X". This argument is also bogus (that way lies Java). Provide safe, well-documented alternatives for the abusers and let those who want to shoot themselves in the foot do so: sometimes they might actually know better than you.
I find it peculiar that you think this is Java's disease. My perspective is that Java is unpleasant because it is remarkably tedious, redundant, and inconsistent, not because it lacks functionality. If anything, it's a mess of functionality, and there are too many ways to do the same thing.
I was thinking of operator overloading and multiple inheritance, actually. The rationale for not including them in the language was that they are often abused. {{fact}}
Twisted should provide excellent support for valid use-cases, no matter how obscure.
+1
On the other hand, it's equally frustrating to use a library where the incredibly obscure "you probably don't need this" and the 99%-of-the- time positive-path APIs are listed, without any particular ordering, in one giant flat list.
Yes. This is a documentation (or perhaps a navigation) problem. I simply wanted to make the point that I find "don't provide X because people might abuse it" unconvincing. I don't even think you were making that point, but I really really want to be clear that it's not a good one. Also, if you haven't read it, you might enjoy Rusty's interface guide: http://sourcefrog.net/weblog/software/aesthetics/interface-levels.html jml