[Dbix-class] ANNOUNCE - Muldis::DB v0.0.0 released, in p5+p6

Darren Duncan darren at DarrenDuncan.net
Thu Jun 21 19:19:10 GMT 2007


All,

I am pleased to announce the release of Muldis::DB version 0.0.0 for 
Perl 5 on CPAN.  You can see it now, with nicely HTMLized 
documentation, at:

   http://search.cpan.org/dist/Muldis-DB/

This is the first formal release of Muldis::DB, which began 
development last year (under the temporary name of "QDRDBMS") as a 
rewrite of my previously released but never functional "Rosetta" 
project.

Muldis::DB is implemented as a library or open-ended framework for 
use by larger frameworks or applications, and is a DBMS resource to 
them.  This project comes in twin Perl 5 and Perl 6 versions which 
are feature identical; the former is for use in today's systems, and 
the latter is for longer term use; if there is a case for doing so, 
some parts may be moved to other languages later such as C.

The equivalent Perl 6 version of Muldis::DB to the CPAN release is 
bundled with the "Pugs" ( http://www.pugscode.org/ ) implementation 
of Perl 6, and its release to CPAN follows Pugs' schedule. 
Meanwhile, you can see it in the ext/Muldis-DB/ sub-directory of 
Pugs' version control.

With both initial versions, Muldis::DB has zero external dependencies 
but for Perl/Pugs itself and what is bundled with it; this should 
ease installation.

If you want to read all the Muldis::DB documentation that exists now, 
I recommend doing so in this order:

   1. http://search.cpan.org/src/DUNCAND/Muldis-DB-0.0.0/README
   2. (opt) http://search.cpan.org/src/DUNCAND/Muldis-DB-0.0.0/Changes
   3. http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB.pm
   4. (opt) http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/Copying.pod
   5. http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/AST.pm
   6. http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/Language.pod
   7. (opt) http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/Validator.pm
   8. (opt) 
http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/Engine/Example.pm
   9. http://search.cpan.org/dist/Muldis-DB/lib/Muldis/DB/SeeAlso.pod
   10. (opt) http://search.cpan.org/src/DUNCAND/Muldis-DB-0.0.0/TODO
   11. (opt) anything else

The "README" file above includes the urls of the public version 
control systems that host the development of Muldis::DB.  The Perl 5 
version is hosted in a public GIT repository hosted by Sam "Mugwump" 
Vilain, for which I am thankful.  The Perl 6 version is hosted in the 
same public Subversion repository as Pugs.

Muldis::DB defines and implements a computationally complete 
programming language with integrated relational database 
functionality.  It is an open-ended framework with a separate 
programmatic API and pluggable implementing engines, one of which is 
bundled with the core so it works out of the box.  The framework is 
intentionally similar to the DBI framework in organization.

Muldis::DB implements a D language (named "Muldis D") as defined by 
Hugh Darwen and Chris Date, and presents a superior interface for 
working with the relational model of data, contrasted with SQL. 
Anyone familiar with SQL or the relational model, or just programming 
in general, should find it easy to learn.

One general strength of Muldis D (truly relational) over SQL 
(quasi-relational) is that there is next to no object-relational 
impedence mismatch since the true relational model can natively 
represent user-defined complex data type structures, constraints, and 
operators; there is no need for "object-relational mappers", except 
for their role in tighter host language integration.

Another general strength of Muldis D is that any arbitrary business 
rules can be cleanly expressed as constraints on a database, so it is 
easier to trust a database to ensure its data state or transitions 
are always conformant to business rules, without hoisting such 
integrity matters to the application, where it is a lot more 
difficult to do it reliably.

Since a D language can represent anything, a SQL database and/or SQL 
features can also be emulated over one, which helps with legacy 
migration; similarly, as much as is possible, existing SQL engines 
can be used to implement Muldis DB over top of, in which case Muldis 
DB acts as a SQL generator to access pre-existing databases in new 
applications.

Conceptually speaking, Muldis::DB is either a replacement for DBI, or 
a replacement for any SQL DBMS itself, depending on how you use it; 
out of the box it replaces both, but plug-in bridges can be made that 
bridge to either.

Taking the Perl 6 development process as a model, Muldis D has an 
authoritative human-readable design document (the Language.pod file), 
which is analagous to the Perl 6 Synopsis documents, and one or more 
separate conforming implementations (the other files).  It is very 
feasible that Muldis D could have multiple implementations, over any 
languages, besides the 2 (Perl 5 and Perl 6) that exist now.

More information is in the Muldis::DB documentation.

I would probably like to say that Muldis::DB would be a panacea to 
all your database ills, but instead I see it more like Muldis::DB 
should provide a more solid skeleton on which to build the solutions 
to all your database ills than are any other solutions.  I will 
contribute to the solutions as best I can.

Several public email-based forums for Muldis::DB now exist (with 
public archives), all of which you can reach via 
http://mm.DarrenDuncan.net/mailman/listinfo (note that Mailman's 
monthly password reminder email is turned off).  There are currently 
3, for 'announce', 'devel', 'users', modelled after the main lists 
for DBI.

I invite you to join one or more of these lists (if you haven't 
already), to better facilitate discussion, support, and group 
development.

As of this version-zero release, Muldis-DB is officially in pre-alpha 
development status.  A lot of documentation and functionality is 
present, but a lot isn't.  What is mostly done is the higher level 
documentation plus an alpha-quality but fundamentally stable public 
API implementation.  What is mostly undone is the reference engine 
implementation, the test suite, and documentation of the API details. 
What is already present should be sufficient to begin study of 
Muldis-DB such that it can actually be put to use within the next few 
weeks or months as Muldis-DB is fleshed out.  Also, it should be 
possible now to start writing code that uses or extends it.

To conclude, I would be very greatful for any and all kinds of 
assistence with the Muldis::DB framework that you can provide, which 
includes building or sponsoring features and extensions.

Probably the very first kind of help that I could use the most is 
with writing cookbook-type examples of using Muldis::DB and/or FAQ 
documents.  This both helps people learn how to use it in an 
effective manner, and also helps flesh out deficiencies in 
Muldis::DB.  Both the "how do I define this kind of database" variety 
and "how do I express this SQL in Muldis D" variety are helpful. 
These examples would be released as a Muldis::DB::Cookbook 
distribution.

I also welcome general feedback, constructive criticism, suggestions, 
corrections, and questions.

Note that I prefer any responses to happen on-list, or that you sign 
up to and post to a muldis-db list (only list subscribers may post), 
so that that and any replies can be for the group's benefit, and to 
save me from repeating the same answers ad nauseum.  Unless the 
response is not suitable for public discourse, in which case, sure, 
go private email; ditto if you're not sure about appropriateness.

Thank you in advance.

-- Darren Duncan



More information about the Dbix-class mailing list