| 1 | Muldis::Rosetta |
|---|
| 2 | --------------------------------------------------------------------------- |
|---|
| 3 | |
|---|
| 4 | Following is a summary of things that still need doing. It is specific to |
|---|
| 5 | the Muldis-Rosetta core distribution only, and doesn't talk about things |
|---|
| 6 | that would go in other distributions. (But, look at |
|---|
| 7 | lib/Muldis/Rosetta/SeeAlso.pod for a list of other related distributions |
|---|
| 8 | that should be created.) |
|---|
| 9 | |
|---|
| 10 | The following list is loosely ordered by priority, but list items may |
|---|
| 11 | actually be addressed in a different order. There is no specific time |
|---|
| 12 | table for these items; they are simply to be done "as soon as possible". |
|---|
| 13 | |
|---|
| 14 | * Generally speaking, make a new release to CPAN once every week, assuming |
|---|
| 15 | the progress is non-trivial, so there are regular public snapshots with |
|---|
| 16 | nicely rendered documentation. |
|---|
| 17 | |
|---|
| 18 | * Implement the Muldis D metamodel, that is, the catalog. This is the main |
|---|
| 19 | prerequisite for doing anything moderately more complex than what has |
|---|
| 20 | already been done, including the support for user-defined data types, |
|---|
| 21 | stored routines, constraints, virtual variables, and persisting databases. |
|---|
| 22 | |
|---|
| 23 | * Flesh out the user-input validation code in the Example Engine, as is |
|---|
| 24 | appropriate, so that all bad input results in graceful failures rather than |
|---|
| 25 | ungraceful ones. |
|---|
| 26 | |
|---|
| 27 | * Flesh out the various parts of the test suite. There are currently 2 |
|---|
| 28 | main parts envisioned: 1. Several t/*.t files that test support libraries |
|---|
| 29 | of Example.pm in isolation. 2. The Validator(|*).pm files which test |
|---|
| 30 | Interface.pm and the Example Engine as a whole, as well as being reused for |
|---|
| 31 | other Engine distributions. Note that the core test suite should execute |
|---|
| 32 | in the above given order, so consider renaming the Validate Example test to |
|---|
| 33 | a higher number than 50 to make more room for others, such as to 80 or 90 |
|---|
| 34 | or 99. |
|---|
| 35 | |
|---|
| 36 | * Update the Example Engine to implement the rest of the relational |
|---|
| 37 | algebra|calculus operators, as well as all the reasonable operators for |
|---|
| 38 | other core data types: Bool, Int, Rat, Blob, Text. |
|---|
| 39 | |
|---|
| 40 | * Update the Example Engine to implement persisting databases. For |
|---|
| 41 | simplicity of implementation and learning, a whole depot will simply be one |
|---|
| 42 | file containing serializations of all the relevant Perl data structures |
|---|
| 43 | defining its catalog and data. While this is very much non-scalable, the |
|---|
| 44 | Example Engine is not intended to be scalable, just provide the correct |
|---|
| 45 | semantics in the simplest way possible. Other Engines will presumably do |
|---|
| 46 | persistence in an intelligent and scalable (and more complicated) manner. |
|---|
| 47 | |
|---|
| 48 | * Update the Example Engine to implement the optional system-defined data |
|---|
| 49 | types: temporal, spatial. |
|---|
| 50 | |
|---|
| 51 | * Optimize the Example Engine as can be done without making it too |
|---|
| 52 | complicated for its primary use as an Engine reference implementation / |
|---|
| 53 | learning tool. |
|---|
| 54 | |
|---|
| 55 | * Judiciously add external dependencies (besides Perl itself) to this core |
|---|
| 56 | framework, at such times that a reasonable case can be made for it. |
|---|
| 57 | |
|---|
| 58 | * Applicable to the Perl 6 version only: Exploit additional Perl 6 |
|---|
| 59 | features as they become implemented in Pugs and/or elsewhere, so to |
|---|
| 60 | simplify our own code, which currently does manually what Perl 6 should do |
|---|
| 61 | for us. Examples being that if Perl actually enforces routine signatures, |
|---|
| 62 | we won't have to manually check our arguments as much as we do, or at all. |
|---|
| 63 | |
|---|
| 64 | * Applicable to the Perl 5 version only: Consider adding dependencies on |
|---|
| 65 | version.pm and/or the Moose framework and/or Module::Build and/or some |
|---|
| 66 | better exception handling module. Consider raising the Perl version |
|---|
| 67 | dependency to 5.10 from 5.8.1, to simplify further dependencies. |
|---|
| 68 | |
|---|
| 69 | * Applicable to the Perl 5 version only: Consider lowering the Perl |
|---|
| 70 | version dependency to 5.6 from 5.8.1, so that other projects which may |
|---|
| 71 | become dependants of Muldis-Rosetta and already work under 5.6 won't have |
|---|
| 72 | to force Perl core upgrades. If this is done, the list of further |
|---|
| 73 | dependencies will doubtless increase to include some things bundled with |
|---|
| 74 | Perl 5.8, and/or Unicode may not work so well here. Note that this may |
|---|
| 75 | likely only happen if Moose was adopted, in which case the minimum Perl |
|---|
| 76 | version we support is the same as the minimum that Moose supports. |
|---|
| 77 | |
|---|
| 78 | * Whatever else needs doing, such as, fixing bugs. |
|---|