2003-09-11 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.16.
* This is a major design and functionality update release, although the
changes are all focused on the SQL::ObjectModel/::* files.
* The proposed C library name "libSOM" has been changed to "libSQLOM". The
NAME for SQL::ObjectModel was also rewritten, and it now looks like this:
SQL::
::ObjectModel adhOg An abstract syntax tree for all types of SQL DUNCAND
* Updated documentation in SQL::ObjectModel so each function and method
description now has an example line of code or two demonstrating its use.
* Updated cct_str_enc definition in DataDictionary.pod to account for UTF-8
and UTF-16 being variable-length encodings.
* Added new file lib/SQL/ObjectModel/XMLSchema.pod which explains
ObjectModels in terms of a suggested XML representation.
* Updated DataDictionary.pod and ObjectModel.pm so that every table and its
corresponding node now have a single-column integer primary key, whose name
is 'id'. This change was to make it much easier to convert ObjectModel
data between in-memory data structures linked by references and database
records and XML nodes. The other fields/attributes were also standardized
in their naming and structure, including the use of shorter field names,
single column foreign keys, and removal of some extra fields. ObjectModel
attributes now all have the same names whether they are in a database or
XML or in-memory structures, and all attributes are used in each place. As
a result, some attributes may appear redundant when in memory or XML, such
as those which say who the parent of a node is, or its order among its
siblings. But this is intentional and accounted for.
* A single model or data dictionary can now manage the commands for
multiple applications, which helps if they have databases in common.
* SQL::ObjectModel now enforces required-attribute constraints, and will
throw an exception if you try to create a node where said attributes are
not valued. At the same time, the logic for assigning default attribute
values has been improved so that it can generate serial numbers or copy
values from parent nodes, in addition to setting static literal values.
The 'id' attribute for all nodes is both mandatory and serially generated,
so it is technically possible (as shown by the example code) to use this
module without explicitely giving any 'id' values as input.
* Added feature to ObjectModel.pm where, if you simply create a node
without indicating a parent to attach it to, the module will make a logical
intuition as to where it should go and assign it there. Specifically, it
takes the last previously created node which is capable of being the new
one's parent. This feature is mainly intended for adding new databases or
namespaces or tables or views or blocks or applications or commands, but
not parts of those. See the updated SYNOPSIS for examples of the benefits.
* SQL::ObjectModel is now implemented internally as two classes, a
"container"/"model" and a "node" (which correspond to an XML DOM "document"
and "node"). All nodes now must exist within the context of a container,
and they currently can not be moved or copied between existing containers.
However, a container with full node complement can be cloned to make a
second container. Each container has a single root node that its other
nodes can descend from; however, nodes can still be detached from this and
be in other tree fragments (akin to an XML DOM "document fragment").
Working within a container context allows the module code to be a lot more
powerful or smarter, without being larger.
* Added a debugging method to spit out all of a node-tree's data as an XML
document, which is more compact and testing-reliable than the Perl-code
spitting function (which also still exists). Also, for all the debugging
methods, the option was removed to produce/hide extra data relating to Perl
variables; these are now superfluous, and were always troublesome.
* Updated the test code, and the partial copy of said code in the SYNOPSIS,
so it works with all the module changes. The code now uses the XML data
representation for testing, and this works without errors on both Perl
5.6.0 and 5.8.1rc4 (both under Mac OS X 10.2.6). Note that the test
failures on the Solaris testbed for release 0.15x appears to be from that
platform using Perl 5.8, and not simply because it was Solaris. So release
0.16 should test correctly on all platforms now.
* Updated the BUGS documentation in ObjectModel.pm to add/replace some
design flaw descriptions. They will be eliminated in near future releases.
* Added some items to supported database list in Framework.pod.
2003-07-11 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.152.
* The previous release failed to fix the test failure on CPAN's
"sun4-solaris 2.8" testbed (the test worked fine on 3 other platforms), and
so I have thought of another thing to change that might resolve it.
Several places in SQL::ObjectModel where a hash was being iterated through
are now sorting the hash elements by key before using them, so serialized
data that would be affected by this should now look the same on platforms
where Perl uses a different hashing algorithm. I should have thought of
this before (as I had on my other Perl distributions) but didn't. If this
doesn't fix the problem on Solaris then I am open to suggestions.
SQL::ObjectModel now is version 0.032; the test script now refers to that.
2003-07-10 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.151.
* This release is largely a minor bugfix update; it is an attempt to get
the test suite to run correctly on CPAN's "sun4-solaris 2.8" testbed, where
it had failed SQL-ObjectModel.t test 3 (note that the tests all passed in
both Perl 5.6.0 on Mac OS X 10.2.6 and a CPAN Win32 testbed). In suspician
that the problem may have to do with differences in newlines between
platforms, I made two changes. First, the get_all_properties_as_str()
method in SQL::ObjectModel received a minor update so it doesn't try to
substitute the trailing comma with a semicolon. Second, the test script
was updated so that the literal string which the result of the above
function is compared to now contains "\n" instead of literal (unix)
newlines (and there were a few other escapes done). If this doesn't fix
the problem on Solaris then I am open to suggestions.
* Also updated the version number in SQL::ObjectModel to 0.031. The number
should have been 0.03 in release 0.15, but I had forgotten to change it
then. The only change to this module since release 0.15, mentioned in the
above bullet point, accounts for the move from 0.03 to 0.031. Also updated
SQL-ObjectModel.t to refer to the new version number 0.031.
2003-07-07 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.15.
* The file lib/SQL/ObjectModel.pm was fully rewritten from scratch. All of
the old code and documentation was replaced by newer code and
documentation. This module is now in alpha development status (was
pre-alpha), which means that it is now fundamentally complete. This also
means that you can start actually using it in your code as if it were
released, except for the fact that I still reserve the right to make
incompatible changes to it (but any changes will still closely resemble the
current version).
* The file t/SQL-ObjectModel.t had actual tests put into it, which are basically
the same as the tested module's SYNOPSIS. While not every single feature
is tested exhaustively, most of the code and data is. The SYNOPSIS code
has been executed and works properly.
* No other modules were changed for this release.
2003-06-27 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.14.
* The file ObjectModel.pm was partly rewritten from scratch, with some of
the old documentation being shoved to the bottom and marked "depreciated".
All of the old code was replaced by newer code.
* The two test files [SQL-ObjectModel.t, Rosetta.t] were simplified so that
each only tests that its respective module compiles; also synchronized the
internal layout of each file. Any tests for code that was replaced in
ObjectModel.pm have been removed.
* Updated DataDictionary.pod to simplify "cct_basic_data_type" so that
there is only one base type for all numbers; updated "cct_standard_func"
and "data_type" to remain compatible with the changes. Also updated
"database" and "namespace" to complete their separation into two entities.
Also moved "trigger" to be under the TABLES main heading rather than under
BLOCKS.
* Updated BRIEF MODULE LIST in Framework.pod to more accurately reflect the
design details in DataDictionary.pod, and in the new ObjectModel.pm. Also
updated EXPANDED MODULE LIST in a similar fashion. Any modules whose names
were SQL::ObjectModel::* are now SQL::ObjectModel::_::* (with the exception
of the POD only files), and those whose names were Rosetta::Engine::* are
now Rosetta::_::* (Rosetta::Engine is now Rosetta::_::Engine). The '_'
signifies an inner class which isn't meant to be instantiated directly.
2003-06-14 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.132.
* This release is mainly a test to see how CPAN indexes handle a module
which contains inner classes that we are trying to hide. The module in
question is SQL::ObjectModel. I saw a certain trick employed in DBI 1.37
which I am now trying 3 variations on (each with a different inner class),
the first one being done the same way as DBI. After seeing the results,
all the inner classes will be standardized on one method, in the next
distribution release.
2003-06-11 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.131.
* This is primarily a bugfix release for the documentation, mainly for
replacing references to "Rosetta" with references to "SQL::ObjectModel", or
for updating SEE ALSO or DEPENDENCIES. Files updated include:
Framework.pod, ObjectModel.pm, DataDictionary.pod, API_C.pod, Rosetta.pm,
ObjectModel.t, Rosetta.t. Also removed mistaken Rosetta::Driver detail
reference from Framework.pod.
* Added new class SQL::ObjectModel::Command to Framework.pod reference.
While both Command objects describe an action to do, the SQL::ObjectModel
version is static and is what you would pass to DBI->prepare(); any code
using it needs to do their own prompting for bind vars specified within.
The Rosetta Command object encapsulates the other kind and also
encapsulates the resolved bind vars; code using the latter would call both
DBI->prepare() and DBI->execute().
2003-06-11 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.13.
* A few small fixes were made to DataDictionary.pod that were discovered
after release 0.12 went out.
* This release was mainly for reorganizaing and renaming the component
files of the Rosetta distribution in preparation for their being split into
3 distributions: Rosetta, SQL::ObjectModel, Locale::KeyedText. The files
that are ending up in each distribution are having their documentation
changed to reflect their new status, but for the moment they still share a
common ReadMe and related files. The file Framework.pod has also been
updated in its BRIEF MODULE LIST to reflect the changes.
* The new file lib/SQL/ObjectModel.pm replaces these previously existing 3
files: lib/Rosetta/Schema/[DataType,Table,View].pm. The new file
t/SQL-ObjectModel.t replaces these previously existing 3 files
t/Rosetta-Schema-[DataType,Table,View].t. The 2 files
lib/Rosetta/[DataDictionary,API_C].pod have been renamed to
lib/SQL/ObjectModel/[DataDictionary,API_C].pod. Any other preexisting
files were not renamed or replaced.
* Small updates were made to the copyright in all files, to remove the
reference to a "Driver" interface. In addition, the copyright in the
files that will be split off now refer to the SQL::ObjectModel library
(libSOM) in place of referring to the Rosetta framework. Small changes
were also made in ReadMe and INSTALL.
* This is the current file manifest following the renames and merges:
- ChangeLog
- INSTALL
- lib/Rosetta.pm
- lib/Rosetta/Framework.pod
- lib/Rosetta/SimilarModules.pod
- lib/SQL/ObjectModel.pm
- lib/SQL/ObjectModel/API_C.pod
- lib/SQL/ObjectModel/DataDictionary.pod
- LICENSE
- Makefile.PL
- MANIFEST
- ReadMe
- t/Rosetta.t
- t/SQL-ObjectModel.t
- TODO
2003-06-10 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.12.
* The DataDictionary.pod documentation file saw some more large changes,
increasing in size from 85K to 96K (added 11K). Mainly this saw the
entirety of the "BLOCKS" main section being written, and the corresponding
sub section of "STRUCTURE" was also written. The previously referenced
entities named [procedure, function, package] are now consolidated into
"block". Added two new main sections "SEQUENCES" and "USERS" (and
corresponding STRUCTURE parts), but they are currently placeholders. Made
several updates to CONSTANT CODE TABLES. "NAME SPACES AND SCHEMA OBJECTS"
was renamed to "DATABASES AND NAME SPACES". The "object" table no longer
exists, with details stored there moved into: "table", "view", "sequence",
"block". Other small fixes or changes were made. The most important
parts of this document are now complete (codes, tables, views, blocks).
* Small updates to BRIEF MODULE LIST in Framework.pod.
* This is the current file manifest; several of these are scheduled to be
renamed or merged in release 0.13, as a precursor for the distribution
being split up:
- ChangeLog
- INSTALL
- lib/Rosetta.pm
- lib/Rosetta/API_C.pod
- lib/Rosetta/DataDictionary.pod
- lib/Rosetta/Framework.pod
- lib/Rosetta/Schema/DataType.pm
- lib/Rosetta/Schema/Table.pm
- lib/Rosetta/Schema/View.pm
- lib/Rosetta/SimilarModules.pod
- LICENSE
- Makefile.PL
- MANIFEST
- ReadMe
- t/Rosetta.t
- t/Rosetta-Schema-DataType.t
- t/Rosetta-Schema-Table.t
- t/Rosetta-Schema-View.t
- TODO
2003-06-03 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.11.
* The DataDictionary.pod documentation file saw some more large changes,
increasing in size from 71K to 85K (added 14K). Mainly this saw the
completion of the "VIEWS" main section, with any undone table descriptions
being fleshed out and others updated; 2 tables added and 4 removed; 2
related tables were added to the CONSTANT CODE TABLES section as well.
Smaller updates were made to "STRUCTURE". Other bug fixes or small changes
were made. At this point all significant parts of the deprecated sections
that were removed in release 0.10 have been replaced. The main sections
"BLOCKS" and "COMMANDS AND RESULTS" still need to be written.
* Updated BRIEF MODULE LIST in Framework.pod to illustrate how the core
Rosetta distribution may get split up, with new modules having names like
"Locale::KeyedText" and "SQL::ObjectModel". Also updated formatting of
some level 2 headings in the document.
2003-05-28 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.10.
* The DataDictionary.pod pure documentation file saw large changes,
increasing in size from 38K to 71K (removed 14K, added 47K). The 3
deprecated sections named ["ROSETTA NATIVE DATA DICTIONARY STRUCTURE", "A
BASIC TABLE STRUCTURE FOR STORING ROSETTA SCHEMAS", "ANOTHER WAY OF SAYING
THAT"] were removed. Large updates were made to the "STRUCTURE" and
"CONSTANT CODE TABLES" main sections. These new main sections were added:
"DATA TYPES", "NAME SPACES AND SCHEMA OBJECTS", "TABLES", "VIEWS"; all
except "VIEWS" are complete, and the last is two-thirds complete. Also
added main sections "BLOCKS" and "COMMANDS AND RESULTS" as placeholders,
but they hardly contain anything yet. Technically a small amount of the
removed sections haven't been replaced yet, but they should be next time.
Note: the rest of DataDictionary.pod should be done for release 0.11.
* Small documentation changes in Framework.pod, mainly in BRIEF MODULE
LIST. Among other things, the possibility that the "Rosetta" distribution
may be split so that the "Schema" modules are distributed independently, as
well as other splits, is documented as being considered. This is meant
partly to help avoid the public perception that Rosetta has a strong "not
invented here" problem; the framework is in fact very separable and
extensible. Also, there is no longer a base class for driver modules;
rather, all Driver modules must simply have a certain documented interface.
* Updated DEPENDENCIES in the ReadMe file (and in Framework.pod) to clarify
that, while the Rosetta core doesn't have any dependencies in other
modules, the various Rosetta extensions (like Drivers) probably do. These
same notes were also added to the DEPENDENCIES section in Framework.pod.
* Added new section to the top of the TODO file, ONE DEVELOPMENT TRACK,
which shows my short term goals (allow tables to be created or changed,
allow records to be fetched or changed); things like stored procedures will
wait until later. The first several of these goals have been assigned to
specific release numbers. The previous content of the file is still there,
beneath the new stuff, under new title of ANOTHER DEVELOPMENT TRACK.
* Added DataDictionary.pod to the SEE ALSO section of several modules, and
also mentioned the file twice in Framework.pod, as the second main
documentation, to read after Framework.pod.
* Fixed a documentation bug in the SYNOPSIS of View.pm; version->0.12.
2003-05-11 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.09.
* Updated a few documentation details in file lib/Rosetta/API_C.pod, in the
"CONTENT OF rosetta_schema_datatype.h" section.
* Updated section SYNOPSIS of Framework.pod to make a few small corrections
or improvements.
* Updated section BRIEF MODULE LIST of Framework.pod, mainly for the Schema
modules (stored procedures et al are getting fleshed out; users are demoted
since they aren't really part of the schema).
* Added new file lib/Rosetta/DataDictionary.pod, which describes a database
that is suitable for storing all of the Rosetta Schema details, including
constant code tables, user data types, user tables, user views, and user
code blocks such as stored procedures, functions, and triggers. This may
be expanded later to also describe not only users and privileges but also a
means for storing any kind of Command or Response object for such things as
logging database activity. This new file is a rewritten replacement for
the last 3 main sections of Framework.pod, which were removed: "ROSETTA
NATIVE DATA DICTIONARY STRUCTURE", "A BASIC TABLE STRUCTURE FOR STORING
ROSETTA SCHEMAS", "ANOTHER WAY OF SAYING THAT". However, since the new
file isn't finished yet, copies of the 3 old sections have been moved to
the bottom of the new file in their original form. They will be removed
when they are fully redundant.
2003-04-27 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.08.
* Added new file lib/Rosetta/API_C.pod, which contains the start of my C
API documentation for Rosetta. It contains yet-incomplete contents for
these 3 C header files: rosetta.h, rosetta_types.h,
rosetta_schema_datatype.h. Also added the new filename to the SEE ALSO of
Framework.pod. No other changes were made in this release.
2003-04-15 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.07.
* The experimental changes made in release 0.062 were rolled back, meaning
that the files lib/Rosetta.pm and t/Rosetta.t were restored to the presence
they had in 0.061. Since those were the only changes, all change comments
below are relative to the state of release 0.061.
* This release was mainly a documentation and licensing update. The
distribution now has these extra files: INSTALL, LICENSE, TODO. No files
were removed. Framework.pod had the most changes, ReadMe the second most.
* The section ABSTRACT in Framework.pod was largely rewritten to bring it
up to date with my evolved plans, and also to greatly improve the
communication of what Rosetta does and does not do. For one thing, a lot
more emphasis is placed on its useability with both embedded and
client-server databases. There were a huge number of content changes.
* The Rosetta database abstraction framework is now distributed under the
terms of the GNU General Public License (GPL) rather than "under the same
terms as Perl itself" (meaning a choice of GPL or Artistic). The new
licensing should be a lot easier to understand. This applies to both code
and design documents; also, any code implemented from my design documents
will be considered a derivative work no matter who makes it, and be bound
by the same license. Note that while the GPL precludes linking to modules
for which the source code isn't freely available, my licensing terms have
an exception for the independent database drivers themselves. That said,
it is very likely that I will change to a dual-licensing arrangement some
time in the future, after Rosetta is actually able to do something useful,
where a GPL license is free, and getting an alternative license requires a
special arrangement with myself.
* A new file named LICENSE has been added to the distribution, which
contains the text of the GPL. All other distribution files, especially
Framework.pod, have been updated such that each AUTHOR documentation
section has been replaced with a COPYRIGHT AND LICENSE section (near the
top of each file); the AUTHOR section had talked about copyright and
licensing itself, and is now redundant. Correspondingly, all code modules
have had their version numbers increased by 0.001.
* The section SCHEDULE FOR DEVELOPMENT in lib/Rosetta/Framework.pod was
removed from there and put in the new file "TODO"; aside from a reformat to
move from POD to plain text, there were no changes. Upcoming plans for
this file is that it will be rewritten to include multiple parallel
development tracks, which more realistically portrays what will happen.
* A few terms were renamed globally in Framework.pod. Any references to
"connecting" or "disconnecting" a database were changed to say "opening"
and "closing" instead. Also, the module "Connection" was renamed to
"Database". This affected mainly the SYNOPSIS and the EXPANDED MODULE LIST.
Also, the DEPENDENCIES of all files were slightly updated.
* The STRUCTURE, BRIEF MODULE LIST, and EXPANDED MODULE LIST have been
expanded, and the diagram in STRUCTURE improved: 1. The list of Driver
modules has been rewritten to explicitely show several dozen databases, and
the expanded module descriptions for all drivers and driver utilities was
rewritten. 2. A new set of Validator modules has been added to be a common
test bed for all the drivers (akin to Sun's validation suite for JVMs). 3.
The Rosetta::Driver::Native driver is no longer intended for testing the
Rosetta core, but rather is to be useful in its own right; it will now be
in the Drivers distribution rather than the core distribution. 4. A new
set of modules named Rosetta::Proxy::* were added (along with a second
diagram in STRUCTURE), so that Rosetta could work as a client-server setup
ala ODBC. Comments on my plan to convert Rosetta into a C library
eventually (with a fully working pure-Perl version coming first) were added
to STRUCTURE.
* Removed one test from Rosetta-Schema-DataType.t which was generating a
warning; there was no point since it effectively tested just the Perl
runtime engine and not the module.
* The BUGS section was removed from SimilarModules.pod and put in ReadMe.
The INSTALLATION section was removed from ReadMe and put in a new file
named INSTALL. ReadMe was further updated to rename REQUIREMENTS to
DEPENDENCIES and to add a CREDITS section (currently empty). The PREFACE
was completely rewritten (and is now much shorter).
* A few more tiny whitespace formatting bits were fixed in several files,
and several parts were re-word-wrapped. Added "use warnings" to SYNOPSIS.
2003-03-29 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.062.
* This release is mainly a test to see how CPAN indexes handle a
distribution named after a registered module where that module doesn't
actually exist. The files lib/Rosetta.pm and t/Rosetta.t were removed from
the distribution to facilitate the test. The rationale is that these files
never actually did anything except serve as placeholders for the framework
on CPAN indexes, but they may not be needed. There were no other changes.
2003-03-09 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.061.
* This is a small bugfix release that mainly is for fixing documentation.
A lot of it was formatting issues that was easy to miss before; the other
bullet points below list the non-formatting issues. These files
had formatting fixes: Framework.pod, SimilarModules.pod, ChangeLog.
* Updated these sections in "ReadMe": PREFACE, INSTALLATION, TO DO.
* Updated BRIEF MODULE LIST in Framework.pod to add SimilarModules.pod.
* Updated SimilarModules.pod so that each module list shown for other
people's frameworks includes the framework release version and date for
which I was looking at them, so it is easier to validate my information.
* Updated Rosetta.pm (now at v0.061) replacing references to
"Rosetta::Framework.pod" with "lib/Rosetta/Framework.pod".
2003-03-08 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.06.
* Created new documentation-only file lib/Rosetta/SimilarModules.pod, which
is where all of the comparisons between Rosetta and other database-related
modules and frameworks will go. There are so many modules to compare with
that this documentation needs its own file.
* Updated the SEE ALSO lines of all the modules. Now Framework.pod is the
place where all of the other Rosetta modules are listed. SimilarModules.pod
has the list of other people's modules. All other modules simply list
Framework.pod and SimilarModules.pod in their SEE ALSO. DataType is now at
v0.02 and Rosetta.pm is at v0.06 because of this change.
* Added new modules lib/Rosetta/Schema/Table.pm and
lib/Rosetta/Schema/View.pm (both are v0.01), which complement the already
completed DataType.pm. There are also two new test files, one for each new
module. Given the greater complexity of the new modules relative to
DataType, and the desire to expedite this release, the two new modules will
only be partly done in this release, and their test files won't do
anything. Table.pm and View.pm should be finished probably by release 0.08
or 0.09.
* References in Framework.pod to a planned module Rosetta::Schema::DataSet
have been removed, as that module's functionality is now part of
Rosetta::Schema::View. Also added references to Rosetta::Schema::User and
Rosetta::Schema::Privilege (or PrivilegeType).
* Removed the entire MODULE DETAILS section from Framework.pod, and divided
its contents into the new Table.pm and View.pm.
* Updated STRUCTURE section in Framework.pod to move the Locale group in
the diagram so it is beside Schema; this signifies that both of these 2
named groups are used by the 4 other groups in more or less the same way.
2003-03-04 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.05.
* Created new file lib/Rosetta/Schema/DataType.pm which implements the
class Rosetta::Schema::DataType (v0.01); this is the first module to be
coded, and it is complete as of its first version. The already written POD
for this class that was in Rosetta::Framework under the section MODULE
DETAILS has been removed from that file and put in the new file instead,
with updates.
* Added new file t/Rosetta-Schema-DataType.t, to completely test the newly
coded module.
* Updated lib/Rosetta.pm (now at v0.05) and t/Rosetta.t to add the "use
warnings" pragma at the top of each file beside "use strict"; the
previously mentioned two new files also have the added pragma, which should
save users from having to put -w on the command line for these modules.
* Updated Rosetta::Framework further, in the STRUCTURE and BRIEF MODULE
LIST sections, to add references to a new set of core modules,
Rosetta::Locale::*. These are to function as constant data resources,
mainly holding user-readable text such as database error messages and so
forth, so that this text is separate from normal module code and easy to
edit. This is a set of files partly so that each file can have a different
localization; adding a new user language is as easy as adding another file.
The set of text strings being stored should be comprehensive enough that
any Driver module can use them, and therefore not need their own Locale
files for displaying error messages. All strings are mapped to short codes
(eg: 'R001372'); these codes are what the normal module code uses to
display a particular message.
2003-02-10 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.04.
* The file Documentation.pod was renamed to Framework.pod; that file's
internal name as declared in the POD is Rosetta::Framework; the file was
also moved into lib/Rosetta/; any references to this file in other files
were updated accordingly.
* In Framework.pod, updated BRIEF MODULE LIST to replace
Rosetta::Driver::Null with Rosetta::Driver::Native. The plan is that this
will be a fully-functional RDBMS implementation, and 100% Perl code; it
will implement all database features that the Rosetta core can interface
to, even if some real databases can't. This includes transactions,
locking, foreign keys, stored procedures, multiple 'users', and more. That
said, it is intended mainly for testing the Rosetta core, and will be
developed simultaneously with the latter. While Rosetta::Driver::Native is
fully functional, it is completely RAM-based for simplicity (nothing is
stored on disk, except perhaps by means of explicit freeze/thaw or the
like), and probably won't scale to more than a few thousand records
(namely, it will hold just whatever can all fit in RAM at once). It also
won't be designed with multi-threaded environments in mind, due to its
intent for testing (usually done by one person at a time); if you plan to
use it for more, you will need to serialize access yourself. Also, the
EXPANDED MODULE LIST :: DRIVER MODULES now describes the new module.
* In Framework.pod, moved section SCHEDULE FOR DEVELOPMENT down below BRIEF
MODULE LIST (leaving STRUCTURE right after DESCRIPTION). Some list items
in the moved section were also moved to be handled earlier.
2003-02-09 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.03.
* The most significant change in this release is that the file "Rosetta.pm"
has been split into itself and the new file "Documentation.pm". The latter
file now has all of the main Rosetta framework POD documentation. The
former now is very small and contains just module-specific documentation.
The new folders "lib" and "t" were also added to the distribution. As of
this release, Rosetta still consists entirely of documentation.
* Note that, as soon as module code starts being written, Rosetta will be
released as multiple distributions. This current distribution will contain
the framework core, mainly all of the Schema and Engine modules, and the
generic base class for Drivers, and continue under its existing name. A
new distribution named "Rosetta-Drivers" will contain most of the Driver
modules, and this is the only distribution that would have DBI and DBD::*
as prerequisites. Another distribution named "Rosetta-Emulators" will
contain the Emulator modules. Sample and utility applications will be in
yet another distribution, such as "Rosetta-Applications".
* Updated several parts of ReadMe file, particularly the Preface.
* Makefile.PL now hard-codes the distribution VERSION; this file now has
the authoritative VERSION for the distribution or framework itself.
* These were the main Documentation.pod sections with updates other than
from the file split (which removed PREFACE from both files):
- DEPENDENCIES - changed to "none" (from DBI) since core has no dependencies
- SCHEDULE FOR DEVELOPMENT - moved to later date stored Views and Pub Syn
- SYNTAX - removed section; content merged into STRUCTURE
- STRUCTURE - removed "Parser" from structure, made relationship graph complete
- BRIEF MODULE LIST - grouped modules by their distributions, added Driver::Null
- ROSETTA NATIVE DATA DICTIONARY STRUCTURE - separated Table, Select definitions
* Note that other POD sections are out of date and will need updating.
2003-01-27 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.02.
* This is the second release. The release and root-level module are now
called "Rosetta", which it was renamed to from "DBIx::Portable". It still
consists entirely of documentation in POD format, and all of that is in the
file Rosetta.pm.
* The documentation was significantly updated, with up to half of it being
rewritten. This release has a completed SYNOPSIS (the previous release
left out some significant parts due to time constraints), and several new
sections on framework design. In particular, the structure of the
internally used "schema" was fleshed out.
* These were the main sections with updates:
- ABSTRACT - new section
- SYNOPSIS - expanded to a complete Perl script with config file
- DESCRIPTION - several more paragraphs added
- SCHEDULE FOR DEVELOPMENT - rewritten from and replaces PROGRESS
- STRUCTURE - new section (not related to same-named old version section)
- BRIEF MODULE LIST - new section
- EXPANDED MODULE LIST - canibalized from the previous versions STRUCTURE
- ROSETTA NATIVE DATA DICTIONARY STRUCTURE - new section
- A BASIC TABLE STRUCTURE FOR STORING ROSETTA SCHEMAS - new section
- MODULE DETAILS
* These other sections had little or no updates:
- NAME
- PREFACE
- DEPENDENCIES
- SYNTAX
- MODULE DETAILS
- AUTHOR
- SEE ALSO
* Generally speaking, this release should be a lot better than the previous
one, although there are still large gaps or sections needing improving.
Subsequent releases will probably start including a code implementation,
with further documentation updates happening at the same time.
2003-01-21 Darren Duncan <perl@DarrenDuncan.net>
The next version of the Module List will list the following module:
modid: Rosetta
DSLIP: cdpOp
description: Framework for RDBMS-generic apps and schemas
userid: DUNCAND (Darren Duncan)
chapterid: 7 (Database_Interfaces)
enteredby: ANDK (Andreas J. Knig)
enteredon: Tue Jan 21 08:20:47 2003 GMT
The resulting entry will be:
Rosetta cdpOp Framework for RDBMS-generic apps and schemas DUNCAND
2003-01-05 thru 2003-01-19 Darren Duncan <perl@DarrenDuncan.net>
* On January 5th, a module registration request was sent to
modules@perl.org for "DBIx::Portable", which was to be the namespace root
for this distribution in release 0.01. But it was not registered. During
the following few days, both Tim Bunce and Brian D Foy replied (but no one
else), and alternate names were suggested instead, which I discussed
further with them. The general consensus was, being that I was making a
framework, my modules should have a unique root level namespace of their
own, which could be "brandable"; they should not be under the DBIx
namespace, or have the characters "DBI" in their root name. I came up with
some new ideas, and in doing so had rethought on part of the focus or
uniqueness of my framework. It was thought that using "Portable" or
"Abstract" were too generic sounding. My first new favorite, "Cipher", was
thought too easily confused with cryptography even though actually has a
wider meaning that was applicable. My other favourite suggestion of
"Rosetta" seemed to meet with Tim's approval.
* On January 9th, a module registration request was sent to
modules@perl.org for "Rosetta".
* On January 19th, a follow up to that request was sent which had a much
better description of what the framework would do, taken from its brand
new "ABSTRACT" POD, part of 0.02 in development.
2003-01-05 Darren Duncan <perl@DarrenDuncan.net>
* Release 0.01.
* This is the initial release. It contains only documentation, and all of
that is in the file Portable.pm. This documentation isn't complete, but it
should be enough for a first version, and I am keeping strictly to a Jan 5
release date regardless of completeness.
2002-12-14 Darren Duncan <perl@DarrenDuncan.net>
* Began creating this new Perl distribution package for CPAN, using an
initial title of DBIx-Portable-0.01, including ReadMe and ChangeLog files.
2002-11-12 Darren Duncan <perl@DarrenDuncan.net>
* Began development on these modules as their own entity that is separate
from the application, which will be distributed open-source on CPAN, using
initial titles of DBIx::Portable and DBIx::Portable::*. The modules are to
comprise an RDBMS-generic DB framework for any application to use. This
development effort was discussed with the victoria.pm Perl Mongers group.
* Modules based on a template created by h2xs 1.18.
2002-07-28
* Posted the first significant update to the second prototype, which added
an index or cache for data that was expensive to calculate for each page
request, and involved rewriting about a fourth of the perl code.
2002-06-07
* Posted to my website the second public prototype demo of the new
self-proprietary database driven application, whose database schema, user
interface, feature set, and Perl application code was almost completely
rewritten. The new version explicitly had separate modules for database
communication and the web interface logic, with MySQL-specific code and
database generic or data dictionary code in separate files, and separate
files for parts of the web interface. The program used the same generic
CPAN modules as in the first prototype, DBI/MySQL and CGI::Portable.
2001-11-24
* Posted the last update to the first prototype.
2001-07-12
* Posted to my website the first public prototype demo of a new
self-proprietary database driven application, which is like a cross between
a multimedia metadata catalogue and a repository for historical or
genealogical data. This application contained the first prototypes of code
that ended up in these modules. All of this application's code, for
database communication and web interface logic, was situated in a single
module, with the rest of the program being more generic CPAN modules like
DBI (and DBD for MySQL) and CGI::Portable.
2000-05-17
* Requested MySQL database privileges on my web host so I have something to
start developing, testing and deploying database driven applications on.