[Dbix-class] RFC: renaming SQL::Routine out of SQL

Darren Duncan darren at DarrenDuncan.net
Sat Jan 7 03:13:43 CET 2006


P.S. I'm sending this to dbix-class too, since some people whose 
opinions I respect don't appear on the other lists.

------------------

This RFC is an early probe, and is only being sent to 2 discussion 
lists for now, dbi-users and poop-group.  If necessary, I may derive 
a better version later for wider dissemination, based on your 
feedback.

In the course of my rewrite of the Rosetta database access framework 
(started on October 1st), the system has evolved so much that it is 
now based a lot more on relational algrebra than on SQL, and I am now 
doubting that the major component named SQL::Routine should keep that 
name.

To put things in context, the main purpose of "SQL::Routine" right 
now is to define a language, similarly to the purposes of the Perl 6 
Synopsis, but that it also provides objects to store something akin 
to a parse tree of it; I say "akin" because the tree is actually the 
native form; there is no native string version like Perl 6 is. 
Continuing this context, the main purpose of "Rosetta" is to be a 
federated implementation of that language, similarly to what 
Pugs/Parrot do.

This RFC is concerned with whether SQL::Routine should continue with 
its current name or be rebranded into a different name that doesn't 
contain 'SQL' in it, and is otherwise more appropriate to its altered 
direction.

Part of the issue is that the new system is meant to be centered 
around the concept of a "truly relational" database, such as Codd, 
Date, Pascal, Darwen, etc promote, rather than the "sort of but not 
really relational" model of a database that SQL describes.  While it 
is popularly thought that SQL = Relational, there are strong 
arguments from serious database people that say otherwise.

I want to distance my project from the word 'SQL', using the term 
only to indicate something in a similar problem domain to my project, 
also taking examples for the purpose of explanation; I do not want to 
say that my project *is* a SQL model or implementation.

Now, while a lot of influence is taken from the SQL language, various 
database products implementing flavors of it, languages like Tutorial 
D, and even the Perl 6 language itself, and other mathematics, the 
language of my project is my own new language in the end.  It is 
sufficiently different than SQL that it shouldn't have 'SQL' in its 
name, just to not confuse users if nothing else.

At the same time, still focused on serving the interests of both 
portability and practicality, my language still supports all the 
significant concepts of SQL that are frowned upon by "truly 
relational" people, such as nulls and duplicate rows, but you have to 
explicitly indicate that you want to use them, and in the absense of 
that, relations can not contain duplicates or nulls.  Both types of 
behaviour can be mixed; it is the data types that you choose to use 
on a per-container or per-value basis that determine whether those 
are allowed.  The distinct data types in question are implemented 
separately, and the ones not allowing nulls or duplicates will happen 
to be simpler and perform faster, since there is less logical 
complexity to deal with.  So both "truly relational" and "SQL" people 
can have their cake and eat it too.  And porting between the both 
types (and other types) of systems can be accomplished with little 
trouble.

For some details of the new language, see either of the following 
(they are not on CPAN yet):

1. 
http://svn.openfoundry.org/pugs/ext/Rosetta-Incubator/lib/SQL/Routine/Language.pod

2. http://svn.utsl.gen.nz/trunk/Rosetta-Incubator/lib/SQL/Routine/Language.pod

That document is in the process of being written right now, but a 
substantial portion already exists.  By the time you see this RFC, 
more may be done.  See also the DESCRIPTION pod of lib/SQL/Routine.pm 
and lib/Rosetta.pm in either repository.

Now, the documentation currently refers to the language as "the 
SQL::Routine language", but that seems very cumbersome.  What I 
really want to do is come up with some new catchy and/or descriptive 
name for the language that I can use by itself as a noun, and people 
generally know what I'm referring to.  Eg, just as people can say 
"Perl 6" or "SQL" or "Tutorial D" and readers just know that those 
are language names, I want someone to say "<Foo>" and it is fairly 
unambiguous that this is a language name, and not, say, just a module 
name.

The main kind of feedback I need is, what a good *language name* 
would be for what I'm making here.  The new name of the module can be 
determined afterwards, and be derived from the language name.

The name of the language should say "relational" or "relational 
database", but not so much just using those words, since they are too 
generic and are used as adjectives everywhere.  It could just be a 
catchy made up name or acronym too.  Being short is good.  (Note that 
I can't use "Rel" as a name since its already in use by Dave Voorhis' 
project at http://dbappbuilder.sourceforge.net/ .  It shouldn't be 
the same name as any other project either.)

Moreover, I suspect that the renamed module should perhaps be 
reclassified on CPAN to a different category than "string language 
processing"; perhaps it should go where ever PPI is classified, 
though I don't know where that is, or perhaps where PDL is, or 
perhaps under "database interfaces" even though it only defines one 
and doesn't implement it.  (In any event, Rosetta sits under 
"database interfaces" and will reference it.)

Thank you in advance for the feedback.

-- Darren Duncan

P.S. The chosen names would be used for and identical in the perl 5 
and perl 6 versions of this.



More information about the Dbix-class mailing list