In article <Pine.LNX.4.44.0210291331210.10883-100000 / candle.superlink.net>,
 <dblack / candle.superlink.net> wrote:
>Hi --
>
>On Wed, 30 Oct 2002, Pat Eyler wrote:
>
>> http://www.onlamp.com/pub/wlg/2225
>
>Interesting.  Simon (hi Simon!) is probably right that "Definitive
>[library module] names discourage wheel reinvention."  The problem,
>though, is that such an approach means that whoever writes the *first*
>module called "XML::Parser" or "Text::Soundex" (or whatever) ends up
>having written the definitive one, whether it's any good or not.
>
>(I guess one could then write and contribute "XML::Parser::Good", but
>somehow that doesn't entirely address the difficulty :-)

Well, perhaps the original writer of XML::Parser can be convined to 
replace his parser with the new one if the new one offers significant 
advantages...  But then again, the new one should adhere to (or at least 
provide a compatibility) the old one's API.

Something that I don't think Simon (hi Simon!) said explicitly in the 
article but was implied: Wise use of namespaces is important.  I think 
this is something that we're not always doing well.

Every library _should_ be wrapped in a module(s) to narrow the namespace 
used by the library, like:

module <major-catagory>::<minor-catagor(y|ies)>*::<lib_name>

But I think we've tended not to do this.

So, should we make it a requirement that every module under the Library 
catagory use a namespace like, for example:

module Library::Datastructure::BitSet

?

Or perhaps, the 'Library' part is just implied, so maybe it should be:

module Datastructure::BitSet

?

Of course if the user doesn't want to type 'Datastructure' all over the 
place, the module can be mixed-in.

Phil