Hello to Tim Bunce and Harry Jackson and Robert and whoever else is here.  I don't 
know how many people are on [EMAIL PROTECTED] yet, but in the list's 18 message long 
archives, you 3 were the only posters (mainly you first two).

I have a strong interest in this Parrot DBI project and its ideals, and I would like 
to get in at the ground floor if possible.  

(I would have joined the list sooner, but I only learned about it today, from the 
latest summary on perl.com, which for some reason I didn't get in my mailbox like the 
ones from Jan 20th and before.)

First off, I have read/skimmed through all of the messages at 
http://www.mail-archive.com/[EMAIL PROTECTED]/maillist.html , so I can see what you 
discussed so far.  (The last message implies that you have postponed further talks to 
wait for Parrot itself to develop further.)  I have also looked through Tim's advanced 
talk that was mentioned in his Announcement post.  And I am reasonably familiar with 
how the DBI for Perl 5 works internally, though I have not written any drivers for it.

Second off, I have a few (for now) questions:

1. I need some clarification regarding this text in the Announcement post:

        I anticipate that drivers will be implemented using the Parrot
Native Call Interface (NCI) to interface with the underlying database API.
        This has the significant advantage, if it works well, that drivers
shouldn't need to be compiled on each platform.

Are you saying that one should be able to write PDBI drivers entirely in PASM or IMCC 
and they would actually be able to talk to the various database products, or do PDBI 
drivers actually need to be written in C?  

I would have expected that they need to be written in C, since the native database 
product drivers they talk to are only C-compatible; however, then the drivers *would* 
have to be compiled on each platform.  But if they are entirely PASM or IMCC, then 
what features does Parrot provide that would magically talk to the native C libraries 
for each database product?

2. Is PDBI mainly meant to be a clone of the tried-and-true DBI for Perl 5, with a 
virtually identical feature set aside from the fact that it is meant to work with any 
language running on Parrot?  Or do you truly desire to have some serious innovation in 
features and design over the "old world" framework, which would put a lot more power 
in the hands of users than they ever had before?  

And don't get me wrong here, I'm not discounting that multi-language use is a huge 
step forward by itself, along with the significant savings of labour that would have 
been spent making a separate clone for each language.  It's just that, looking on an 
individual language basis, what I have seen so far implies that users will get the 
same features as before and not more or different.

3. Do you have any plans to use named bind variables (eg ":foo") rather than 
positional ones, like the current '?' design?  I see a switch to named to be a 
relatively simple and yet very powerful improvement.  For one thing, often the same 
value is used multiple times in a SQL statement; for another, it is rather tedious to 
keep track of long lists of '?' and keep them in sync between their appearances in the 
SQL passed to prepare() and the variable list in execute().

Third off, I have been working heavily on my own new database independence project for 
awhile now, which was first announced on CPAN 13 months ago, and which I have talked 
with Tim about a few times since then (mainly around last summer).  While I have been 
prototyping my project in Perl 5, I have intended it all along to be used by 
applications written in any language, and link it to Parrot in particular.  So far, 
there had been no attempt to make the existing DBI work with Parrot, that is, until 
the announcement of PDBI.  

My project was heavily influenced by "classic" DBI in its high level design, namely 
having a common interface that applications talk to, and database product specific 
drivers in the background to mediate between that interface and the native product 
interfaces.

The "current" version of my project is at http://search.cpan.org/dist/Rosetta/ with 
several more large updates due in the next few days and weeks.  In particular, I 
expect to have a version that you can actually use to talk to a database within a few 
weeks now.  Most of my work so far was in design, working out the details for a long 
term API before implementing it.

My point is that, depending on what your goals are with PDBI, I am hoping that you can 
utilize the work I did with Rosetta in order to speed development of a powerful PDBI.  
I know that in the medium to long run I wanted to have a support/developer network in 
my project as DBI does, but if we can combine efforts, then developers can work once 
and further the common good rather than having to choose.  In this way, my work can 
help the community the most.

On the other hand, if it is not among your goals to permit applications to use 
identical SQL for all database operations no matter which database product they talk 
to, then I would alternately like to keep my extra goals as a separate layer from the 
PDBI core, and work with you so that the two are desiged to interact efficiently.  
Likewise, if you have no plans to let applications written in compiled languages use 
the features of this database library.

Keep in mind that my project is designed to have a very granular API that should map 
quite well to basic PASM or C; it is also expected that some developers will want to 
make "higher level" wrappers for it.

Anyway, I hope that this email can spur discussion on this list.  I would love to hear 
from you, and contribute often.

Thank you and have a good day. -- Darren Duncan

Reply via email to