Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

New name for Tangram?

by mugwumpjism (Hermit)
on Jul 19, 2005 at 04:40 UTC ( [id://475963]=perlquestion: print w/replies, xml ) Need Help??

mugwumpjism has asked for the wisdom of the Perl Monks concerning the following question:

Hi all. As pointed out to me, Tangram and Class::Tangram are incredibly ineptly named. It seems that OO persistence systems have this in common - consider Pixie, Alzabo, SPOPS, etc. This is probably because the good namespaces like Object::Persistence, Persistence::DBI, etc were already taken.

I'm thinking of a major refactoring, and a new name would be a good start. Any suggestions for a good new name?

If you don't know what it is, I suggest starting with the Project Home page, or perhaps the tangram guided tour, supplemented with a quick look at the incomplete tangram introduction.

Tangram is a stable tool for mapping objects to database tables, or vice versa at a pinch with various provisos. It is much more expressive than simpler approaches like Class::DBI, and supports a very wide style of database programming styles with exceptionally good support for maintaining transaction consistency.

It is currently ported and well tested on Pg, MySQL, Oracle and SQLite, and has at times supported various other commercial databases too.

It is the only abstraction I know of that will let you make partial queries as expressions and combine them together arbitrarily, including as many joins as you like. This is very useful for doing things like automatically building queries from search forms.

I'd rather not turn this note into a debate of the claims I have just made, I'd much rather those be aired on the T2 users mailing list, or perhaps more appropriately the poop-group list.

$h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/." ."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";

Replies are listed 'Best First'.
Re: New name for Tangram?
by kvale (Monsignor) on Jul 19, 2005 at 05:40 UTC
    Tangram is a map between objects and relational databases; persistence is not the main point, it seems to me. So I'd go with something like Object::Schema or Class::Schema, just to name one of Tangram's core ideas.

    Don't feel bad about Tangram not being an evocative name. I scratched my head about Postgres, which is a pun on Ingres. What does a classical female portait painter have to do with databases? :)

    -Mark

      Besides painting (and later a database) which made him world famous, Ingres also played the violin.

      That's why in French, a hobby is called "violin d'Ingres", that is "Ingres' violin".

      Cheers, Sören

Re: New name for Tangram?
by simonm (Vicar) on Jul 19, 2005 at 16:12 UTC
    This naming problem seems to be common in areas with several large and roughly-similar solutions. Those similarities complicate the "use a descriptive module name" guideline that we'd otherwise aim for. (For example, if people didn't use project names like "Maypole" and "Catalyst", how many modules would we have with almost indistinguishable names like "Web::SimpleMVC", "Web::NiftyMVC" and "Web::FastMVC"?)

    I think that the simplest step is to start by moving Tangram under a descriptive top-level namespace like DBIx:: or Persistence:: so that people who see the name at least have some basic idea of what it does. To quote from perlmodlib and perlmodstyle:

    • Please use nested module names to group informally or categorize a module. There should be a very good reason for a module not to have a nested name.
    • Avoid starting a new top-level hierarchy, especially if a suitable hierarchy already exists under which you could place your module.

    For what it's worth, the DBIx:: namespace does seem to be well known, and it's where I put my own DBIx::SQLEngine. Changing the name to DBIx::Tangram seems minimally disruptive, and people who were looking for it under the old name would quickly find the new one.

    If you want to go further, here are a few more naming tips from perlmodlib and perlmodstyle:

    • Generally the name should reflect what is special about what the module does rather than how it does it.
    • Always try to use two or more whole words.
    • To be portable each component of a module name should be limited to 11 characters.
    • Be consistent with existing modules.

    Based on those suggestions, I'd be thinking of something along the lines of "DBIx::OrthoganalPersistence" or "DBIx::PersistenceMapping" -- those examples are both too long, but at least when you see them you have some idea of what the module does.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://475963]
Approved by crashtest
Front-paged by astaines
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2024-04-26 04:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found