=pod

=encoding utf8

=head1 NAME

Muldis::D::SeeAlso -
External resources that you really ought to look at

=head1 VERSION

This document is Muldis::D::SeeAlso version 0.73.0.

=head1 DESCRIPTION

This document is a central location within the L<Muldis::D>
distribution where any important recommendations of or links to external
resources go.  This includes both resources that were helpful in making
Muldis D, as well as resources that are or could be related to Muldis D.

=head1 CURRENT IMPLEMENTATIONS OF MULDIS D

These externally distributed projects are full or partial implementations
of the Muldis D language.

=over

=item B<Muldis Rosetta for Perl 5> - L<Muldis::Rosetta>

This is the first full implementation of Muldis D that is intended for
production use, written in Perl 5 by Muldis Data Systems, Inc., and
licensed under the GNU LGPL version 3 or later.  It is a sub-language
implementation, in a manner of speaking, such that users would typically
specify Hosted Data Muldis D code using native Perl 5 data structures and
compile/execute them against a Perl 5 module embedded in their otherwise
Perl 5 application.

=item B<Muldis Rosetta for Perl 6>

This is another implementation whose only main difference is that it is
written in Perl 6, for embedding in Perl 6 programs.  Also, it is currently
distributed only with the Perl 6 implementation called Pugs
(L<http://www.pugscode.org/>) in its C<ext/> directory.  This Perl 6
version started out being developed in parallel with the Perl 5 version,
but then focus shifted to just develop the Perl 5 version; eventually the
further improved Perl 5 version will be translated to Perl 6, but that
hasn't happened yet.  Eventually this Perl 6 version will become the main
version, when Perl 6 implementations are in common use; meanwhile, the Perl
5 version is the only main one.

=item B<Set::Relation for Perl 5> - L<Set::Relation>

Set::Relation provides a simple Perl-native facility for an application to
organize and process information using the relational model of data,
without having to employ a separate DBMS, and without having to employ a
whole separate sub-language (such as Muldis::Rosetta does).  Rather, it is
integrated a lot more into the Perl way of doing things, and you use it
much like a Perl array or hash, or like some other third-party Set::
modules available for Perl.  This is a standalone Perl 5 object class that
represents a Muldis D quasi-relation value, and its methods implement all
the Muldis D relational operators.  It is intended for production use, is
written by Muldis Data Systems, Inc., and is licensed under the GNU LGPL
version 3 or later.

=item B<Set::Relation for Perl 6>

This is the Perl 6 version of the same-named Perl 5 module.  This version
as it currently exists is actually a lot older than the Perl 5 one, and the
Perl 5 one is a rewrite of it.  In the near future, the current Perl 5
module will be ported to Perl 6 again to replace it.

=back

=head1 PROSPECTIVE IMPLEMENTATIONS OF MULDIS D

These externally distributed projects are full or partial implementations
of the Muldis D language.

=over

=item B<Parrot Hosted Muldis D>

It is desired to make a Parrot (L<http://www.parrotcode.org/>) hosted
implementation of Muldis D.  This would be the most like a typical
application programming language implementation, such that applications or
libraries are written in Plain Text Muldis D source files, compiled, and
executed, the same way as Perl itself or any other Parrot hosted language.

=back

=head1 INFORMATION SOURCES

While making the Muldis D language, the following resources were found to
be particularly useful:

=over

=item L<http://www.thethirdmanifesto.com/>

This is the Hugh Darwen's and Christopher J. Date's home on the web for
"I<The Third Manifesto>" (I<TTM>), their formal proposal for a solid
foundation for data and database management systems (DBMSs); like Edgar F.
Codd's original papers, I<TTM> can be seen as an abstract blueprint for the
design of a DBMS and the language interface to such a DBMS.  It consists in
essence of a rigorous set of principles, stated in the form of a series of
prescriptions and proscriptions, that the authors require adherence to on
the part of a hypothetical database programming language that they call
B<D>.

The proposal would avoid 'Object-Relational Impedance Mismatch' between
object-oriented programming languages and RDBMSs by fully supporting all
the capabilities of the relational model.  The main objective of The Third
Manifesto, besides being theoretically sound and avoiding arbitrary
restrictions and pragmatic debasement of the relational model, is to make a
simple, restricted and precise definition of the role of object orientation
in database management systems emphasizing the few valid ideas from object
modeling that are orthogonal to relational modeling.

Muldis D has officially incorporated this blueprint into its own design,
and implements its principles without compromise, and so it is a concrete
language that qualifies as a B<D>.  The I<TTM> web site contains various
useful documents and links on the subject, some being specified further
below.

=item B<Databases, Types, and The Relational Model: The Third Manifesto>

Christopher J. Date, Hugh Darwen - "I<Databases, Types, and The Relational
Model: The Third Manifesto>, 3rd edition, Addison-Wesley, 2006 (ISBN:
0-321-39942-0)"; see
L<http://www.aw-bc.com/catalog/academic/product/0,1144,0321399420,00.html>.

This is the thicker, college level textbook about I<The Third Manifesto>,
and it is the most central of the authors' publications, able to stand
alone and present nearly everything important.  It includes an informal
overview of both the relational model and a theory of types, a reference
section with the Manifesto proper and a grammar for a teaching language
based on its principles called B<Tutorial D>, a larger section which
explains and rationalizes the parts of the Manifesto, and sections that do
likewise for type inheritance what the earlier sections do with the
Manifesto proper.

Note that the web site for I<The Third Manifesto>, mentioned above, has
reproduced several chapters and appendices from this book.  Chapter 4
(L<http://web.onetel.com/~hughdarwen/TheThirdManifesto/CHAP04.pdf>) is the
15-page heart of the book and has the actual I<TTM> definition, upon which
the rest of the book expands on, rationalizes, and gives examples of.
Chapter 5
(L<http://web.onetel.com/~hughdarwen/TheThirdManifesto/CHAP05.pdf>) gives
the complete grammar of "B<Tutorial D>", which is a computationally
complete programming language with fully integrated database functionality,
whose principal purpose is to serve as a teaching vehicle.

=item B<Database in Depth: Relational Theory for Practitioners>

Christopher J. Date - "Database in Depth: Relational Theory for
Practitioners, 1st edition, Oreilly, 2005 (ISBN: 0-596-10012-4)"; see
L<http://www.oreilly.com/catalog/databaseid/>.

This is the first printed book that Muldis D's author had read fully, which
is related to I<The Third Manifesto>, and it was their main introduction.
It explains in an easy to follow matter just what the relational data model
really is, a solid and provable logical system, and partially contrasts
with SQL's distorted view of it.  While being easy to follow, the book is
written towards people that are already database professionals, and doesn't
go into the basics that we should already know.

=item L<http://www.acm.org/classics/nov95/toc.html>

Edgar F. Codd - "A Relational Model of Data for Large Shared Data Banks"

Reprinted from I<Communications of the ACM>, Vol. 13, No. 6, June 1970, pp.
377-387.  Copyright © 1970, Association for Computing Machinery, Inc.

This is the second famous 1969/1970 publication that first presented a
relational model of data to the world, which is the basis for the modern
database industry.

=item L<http://www.wiscorp.com/SQLStandards.html>

This web page of Whitemarsh Information Systems Corporation, run by one of
the people on the SQL standard drafting community, has copies of the
official SQL:2003 and SQL:1999 specification documents, and other related
helpful documents about SQL, in PDF format.  For example, "an almost
indistinguishable delta on the actual SQL 2003 database standard" is at
L<http://www.wiscorp.com/sql/sql_2003_standard.zip> (warning, large file).

=item L<http://www.unicode.org/standard/standard.html>

Unicode Standard official documentation.

=item L<http://en.wikipedia.org/wiki/Relational_model>

The Wikipedia article on the relational data model, and related topics.

=item L<http://en.wikipedia.org/wiki/Tuple_calculus>

The Wikipedia article on Tuple calculus, a basis of the relational model.

=back

Also, the vendor documentation for various relational and/or SQL databases
such as MySQL and SQLite were regularly consulted, and various other sites.

=head1 SOME FULLY TTM/D RELATED DBMS PROJECTS

Besides the Muldis::Rosetta framework, other projects exist which attempt
to implement I<The Third Manifesto> fully and without compromise (that lack
anti-I<TTM> features), though their current implementations may be
incomplete and/or in development.  None of these use 'SQL' as their native
language.

=head2 Free and Open Source Software

These software projects are released under a free and open source license,
as Muldis::Rosetta is, so you have the freedom to use the software for any
purpose, to examine the project source code, change it, and redistribute
it:

=over

=item B<Rel> - L<http://dbappbuilder.sourceforge.net/Rel.html>

Rel is a relational database server, written by Dave Voorhis
(C<d.voorhis@derby.ac.uk>), that implements Date and Darwen's "B<Tutorial
D>" language mainly "by the book".  It is written in Java (version 1.5) and
is operating-system independent.  It is licensed under the GNU GPL.

=item B<Duro> - L<http://duro.sourceforge.net/>

Duro is a relational database library, written by René Hartmann
(C<rhartmann@users.sourceforge.net>).  It is written in C (with a Tcl
interface), is implemented on top of the Berkeley DB database library, and
runs on all POSIX/Unix-like and 32-bit Windows operating systems.  It is
licensed under the GNU GPL.

=item B<Dee> - L<http://www.quicksort.co.uk/>

Dee is an implementation of B<D> (built on the relational algebra
operators) as an extension to Python, written by Greg Gaughan
(C<gjgaughan@users.sourceforge.net>).  It is written in Python and is
operating-system independent.  It is licensed under the GNU GPL.

=back

=head2 Shared Source Software

These software projects are released with access to the project source code
but lack permissions on use, modification, or redistribution that are
essential to qualify as free and open source software; some are available
at zero cost:

=over

=item B<FlipDB> - L<http://www.flipdb.com/>

FlipDB is a relational database management system written by Paul Mansour
(C<paul@carlislegroup.com>).  Pending a full implementation of the
relational algebra, FlipDB uses a simple but powerful query technique that
simulates relation-valued attributes and obviates the need for outer join
(or any explicit join).  The author is using Date's and Darwen's work as a
guide, and his intention is to not violate any of the principles set forth
in I<TTM>, if not to implement all of B<Tutorial D>.  It is written in
Dyalog APL, in a functional style with no loops or control structures, and
runs only on 32-bit Windows operating systems.  It is available under a
shared source agreement for personal use and study.

=back

=head2 Closed Source Software

These software projects are released without access to the project source
code or permission to change them, though some are available at zero cost:

=over

=item B<Opus> - L<http://ca.geocities.com/dcauz@rogers.com/opus/>

Opus is a command-line relational database development system, written by
David Cauz (C<dcauz@rogers.com>) and Paul Church, that implements its own
"Opus" language (that has the syntactic style of C).  It is written in C
and only runs on Windows.

=back

=head2 Academic Design Projects

These project designs were made for academic purposes and don't include
implementations:

=over

=item B<Db ("D flat")> -
L<http://web.onetel.com/~hughdarwen/TheThirdManifesto/REAL.pdf>

This is a final year project by UMIST student Peter Nicol.

=back

=head1 SOME PARTIALLY TTM/D RELATED DBMS PROJECTS

Some DBMS exist which desire to support I<TTM> principles but still justify
themselves to provide features that are anti-I<TTM>.  They may or may not
use a SQL dialect as their command language.

=head2 Free and Open Source Software

=over

=item B<Genezzo> - L<http://www.genezzo.com/>

Genezzo is a micro kernel style enterprise-strength SQL database server,
written mainly by Jeffrey Cohen (C<jcohen@cpan.org>), currently under
construction.  It is written in a hybrid of C and Perl 5, and runs on any
operating system.  It is licensed under the GNU GPL.

I<Note: Genezzo sans its SQL interface is currently a front-line candidate
for implementing a production / industrial strength Muldis::Rosetta
Engine.>

=back

=head2 Closed Source Software

=over

=item B<Dataphor> - L<http://www.alphora.com/>

Dataphor is a I<TTM>-inspired commercial database application development
tool set, owned by Alphora (a division of Softwise, Inc.), that implements
its own "D4" language.  While I<TTM> conformant in many other respects,
Alphora found it necessary to support SQL-style nulls.  It is written to
the .Net platform and only runs on Windows.  It is implemented using a
federated server that employs various other database engines for storage.

=item B<Teradata> - L<http://www.teradata.com/>

Teradata is a commercial DBMS that, as far as the developers know, is the
only SQL-DBMS that supports and/or defaults to set semantics.  They also
support, but don't encourage the use of, a mode that supports bag
semantics.  Bindings for many programming languages exist, including for
Perl 5.

=back

=head1 SOME SQL-BASED DBMS PROJECTS

Many DBMS exist which do not expressly support I<TTM> principles and/or
actively embrace anti-I<TTM> features.  Many of those use a SQL dialect as
their primary or only interface; a relative few are listed here.

=head2 Free and Open Source Software

=over

=item B<SQLite> - L<http://www.sqlite.org/>

SQLite is a small library that implements a fully transactional file-based
SQL database engine, written mainly by D. Richard Hipp (Hwaci - Applied
Software Research).  It is written in C (with creator-bundled Tcl bindings)
and runs on any operating system, being particularly suited for embedded
devices.  It is committed to the public domain and can be used in any other
license of program.  Bindings for many programming languages exist,
including for Perl 5.

=item B<PostgreSQL> - L<http://www.postgresql.org/>

PostgreSQL is a powerful SQL database server, owned by the PostgreSQL
Global Development Group.  It is written in C and runs on any operating
system.  It is licensed under a BSD-like license, specifically the license
of the University of California.  Bindings for many programming languages
exist, including for Perl 5.

=item B<MySQL> - L<http://www.mysql.com/>

MySQL is a multi-engine SQL database server, owned by MySQL AB.  It is
written in C and runs on any operating system.  It is dual-licensed under
the GNU GPL (at no cost) and under a proprietary license (for a fee).
Bindings for many programming languages exist, including for Perl 5.

=item B<Firebird> - L<http://www.firebirdsql.org/>

Firebird is a mature SQL database server, forked from the open sources of
InterBase by Inprise/Borland; portions are owned by Inprise/Borland and
members of the Firbird Foundation.  It is written in C++ (newer version)
and runs on any operating system.  Portions are licensed under various
Mozilla-Public-like licenses, specifically the Interbase Public License and
the Initial Developer's Public License.  Bindings for many programming
languages exist, including for Perl 5.

=back

=head2 Closed Source Software

=over

=item B<Oracle> - L<http://www.oracle.com/database/>

=item B<Sybase> - L<http://www.sybase.com/>

=item B<SQL Server> - L<http://www.microsoft.com/sql/>

=item B<Informix> - L<http://www.ibm.com/software/data/informix/>

=item B<DB2> - L<http://www.ibm.com/software/data/db2/>

=item B<OpenBase> - L<http://www.openbase.com/>

=item B<FrontBase> - L<http://www.frontbase.com/>

=back

=head1 SOME OTHER DBMS PROJECTS

Many DBMS exist that are neither I<TTM>/B<D>-based nor primarily SQL based;
a relative few are listed here.

=head2 Free and Open Source Software

=over

=item B<Berkeley DB> - L<http://www.sleepycat.com/>

=back

=head2 Closed Source Software

=over

=item B<FileMaker Pro> - L<http://www.filemaker.com/>

=item B<Valentina> - L<http://www.paradigmasoft.com/>

=back

=head1 AUTHOR

Darren Duncan (C<perl@DarrenDuncan.net>)

=head1 LICENSE AND COPYRIGHT

This file is part of the formal specification of the Muldis D language.

Muldis D is Copyright © 2002-2009, Muldis Data Systems, Inc.

See the LICENSE AND COPYRIGHT of L<Muldis::D> for details.

=head1 TRADEMARK POLICY

The TRADEMARK POLICY in L<Muldis::D> applies to this file too.

=head1 ACKNOWLEDGEMENTS

The ACKNOWLEDGEMENTS in L<Muldis::D> apply to this file too.

=cut
