* On Wed, Jul 02 2008, Aristotle Pagaltzis wrote:
> On this, I disagree.
>
> Here’s litmus test: would you ever use the opposite adjective in
> a description? If not, it’s not useful. I think you’ll agree that
> no one would call a module Exception::Complicated except as a
> joke. That means “easy” provides no useful differentiation in
> practice. 

I don't think this tests what you think it tests.  People don't name
their module Foo::Complicated because they don't want to admit the
interface is complicated.  People *do* call modules Foo::Easy because
they're proud that they made Foo easy.  So the module naming here
reflects the author's personal or societal hangups, not the validity of
any naming scheme.

> In fact, the “simplified” in “simplified interface” is largely
> redundant. Using an interface by definition means you are looking
> for simplification in doing or accessing the thing that the
> interface provides.

Easy means "less features to learn".  Ever use XML::LibXML?  It's big.
It's hard to get started with it.  If you just wanted to XPath some XML
string, you might like a module like XML::LibXML::Easy to exists.
Instead of creating a parser, parsing a "balanced chunk" into a
"document fragment", initializing the XPath engine, adding some
namespace, running the query, and then printing the returned nodes; you
might just want to say 'xml("<foo>")->xpath("//foo")->stringify'.
That's not nearly as complex as XML::LibXML, so why not call it "Easy"?
Of course, you lose a lot of power with that API.  Tradeoffs.

> Similar words that say something without communicating anything
> are “fast” and “flexible.” No one would say that they are trying
> to achieve slowness or inflexibility.

Usually the slow/inflexible version comes first, so it gets the base
namespace.  If history could be rewritten, then the slow version would
be replaced with the fast one... but that's not always possible,
especially with how CPAN.pm works.

Basically, the names of CPAN modules are hacks around CPAN itself.

> I see a trend here… you are the person who argued loudly that in
> the end, anyone who wants to know how Catalyst works needs to
> read the code, regardless of the state of the docs…

I'm not sure why this upsets so many people.  If you want a complete
understanding of every detail of a codebase, you have to read it.
You're not going to get any better at programming if you never read
code.  This is what I believe and I'm going to stand by it.  (If you
don't want to be good at programming, that's fine with me.  Give me some
money and I can solve your programming problems for you :P)

Anyway... if you don't want to read the code, I hear there's a whole
book about Catalyst.

> Then again, you are the author of a Catalyst-based weblog app
> called Angerwhale, which makes me wonder if you haven’t long
> forfeited your right to take part in *any* discussion about
> naming. :-P

Modules and applications have different naming standards.  I think most
of my modules have names that make sense.

I can't think of any applications I use that have names that make sense,
however.  "emacs" for editing text?  "amarok" for playing music?
"urxvt" for emulating terminals?  "irssi" for chat?  None of those names
make any sense at all.

So I don't feel like I'm alone in coming up with weird-ass names for
things :)

Names for modules need to be somewhat related to what they do, but you
probably shouldn't devote too much mental energy to coming up with a
name.  It's just not *that* important.  (Opaque identifiers)++

Regards,
Jonathan Rockway

-- 
print just => another => perl => hacker => if $,=$"

Reply via email to