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

Reply via email to