Revision 16181

Date:
2007/05/04 04:45:11
Author:
Darren_Duncan
Revision Log:
ext/QDRDBMS/ : added or large-updated docs sections in SeeAlso.pod, README, Copying.pod
Files:

Legend:

 
Added
 
Removed
 
Modified
  • ext/QDRDBMS/lib/QDRDBMS/AST.pm

     
    1011 1011 analysis can't decompose; only nodes consisting of just system-defined or
    1012 1012 literal entities (meaning zero free variables) can be fully refactored in a
    1013 1013 static node analysys (though there are a fair number of those in practice,
    1014 particularly as C<Var> values.
    1014 particularly as C<Var> values).
    1015 1015
    1016 1016 A consequence of this is that the QDRDBMS::AST classes in general do not
    1017 1017 include do not include any methods for comparing that 2 nodes denote the
  • ext/QDRDBMS/lib/QDRDBMS/Copying.pod

     
    23 23 =head1 COMPOSITION
    24 24
    25 25 For the purposes of this document, the I<QDRDBMS framework core> aka the
    26 I<QDRDBMS framework> aka the I<core> is composed entirely of all the files
    27 included with this QDRDBMS distribution in its C<lib/> directory. This
    28 also includes its main test suite, since that is implemented using modules
    29 in C<lib/> such as C<QDRDBMS::Validator>.
    26 I<QDRDBMS framework> aka the I<core> is composed entirely of, and only of,
    27 all the files included with this QDRDBMS distribution in its C<lib/>
    28 directory. This also includes its main test suite, since that is
    29 implemented using modules in C<lib/> such as C<QDRDBMS::Validator>. While
    30 there are a few other files in this distribution, they are of relatively
    31 little importance as far as copyright issues of the QDRDBMS core go, and
    32 can be ignored for the purposes of this document.
    30 33
    31 By contrast, this QDRDBMS distribution may also include some extra files,
    32 particularly in its C<examples/> directory, which are explicitly not part
    33 of the core, and which may be the copyright of other parties.
    34 While this QDRDBMS distribution could potentially have included
    35 copyright-significant extra files, particularly in a C<examples/>
    36 directory, which are explicitly not part of the core, and which may be the
    37 copyright of other parties, such things will instead be distributed
    38 separately to keep various matters simpler; in the case of C<examples/>,
    39 such would likely be part of a separate C<QDRDBMS::Cookbook> distribution.
    34 40
    35 41 =head1 OWNERSHIP
    36 42
  • ext/QDRDBMS/lib/QDRDBMS/SeeAlso.pod

     
    357 357
    358 358 L<QDRDBMS::Engine::Example>.
    359 359
    360 =head1 PROSPECTIVE QDRDBMS EXTENSIONS
    361
    362 These are some theoretical examples of other Perl modules or documentation
    363 that could be created to work with QDRDBMS, but if so would most likely be
    364 distributed independently from it. The given package names are examples,
    365 and the examples in question could have other names if approriate.
    366
    367 =over
    368
    369 =item C<QDRDBMS::Cookbook(|::\w+)>
    370
    371 Pod files with a potentially large collection of examples, tutorials, FAQs,
    372 and so on that help people learn how to employ QDRDBMS for the things they
    373 need to do. In particular, there should be a lot of help given for people
    374 migrating from other systems that use different paradigms than QDRDBMS
    375 does, for example SQL-using systems.
    376
    377 The Cookbook distro may also be the main repository of executing code that
    378 would otherwise go in the /examples directory of the QDRDBMS core distro.
    379
    380 =item C<Genezzo> or C<QDRDBMS::Engine::Genezzo> or C<Genezzo::QDRDBMS> etc
    381
    382 A QDRDBMS Engine built around Jeffrey Cohen's Genezzo DBMS, or specifically
    383 the class that does C<QDRDBMS::Engine::Role>, could conceivably have either
    384 of the above file or package names, depending on what its author prefers,
    385 or something else yet. A strong name influence could be whether QDRDBMS
    386 forms the sole public interface for Genezzo after its conversion to use it,
    387 or whether Genezzo would retain alternate public APIs that work without
    388 QDRDBMS being present on the system.
    389
    390 =item C<QDRDBMS::AST::Refactor(|::\w+)>
    391
    392 Utility modules that take QDRDBMS AST node objects as input and derive
    393 other nodes as output, such as with the purpose of refactoring them into
    394 canonical representations (such that users can then perform node value
    395 equality tests for potentially any type of node), or forms that are more
    396 efficient for particular uses but are still logically equivalent.
    397
    398 Presumably all of these would work using static analysis methods and not
    399 actually "execute" anything, so they are independent of any particular
    400 Engine environment. This isn't to say that we can't separately have
    401 modules that help implement a specific Engine and do AST optimization that
    402 knows the specific needs of that Engine's implementation environment.
    403
    404 Other words that could go in such module names are like C<Optimize> or
    405 C<Canon>, or whatever authors prefer.
    406
    407 =item C<QDRDBMS::AST::YAML> and C<QDRDBMS::AST::XML> etc
    408
    409 Utility modules that serialize QDRDBMS AST nodes to, or unserialize them
    410 from, logically equivalent YAML, XML, or other generic data interchange
    411 formats. This implementation should be native to the QDRDBMS D language
    412 itself and not output any Perl-specific details that aren't in non-Perl
    413 languages, so that it is suitable for interchange, at the very least
    414 between Perl 5 and Perl 6.
    415
    416 =item C<QDRDBMS::AST::StringRepr>
    417
    418 Utility module that parses the string representation format of QDRDBMS D
    419 into its AST representation format, and also that generates the former from
    420 the latter. The 2 formats should basically have a 1:1 correspondence.
    421
    422 =item C<QDRDBMS::Shell>
    423
    424 Implementation of a command-line user application over the QDRDBMS API that
    425 takes string-form QDRDBMS D as input, compiles it and runs it, and nicely
    426 formats output for user display. This is analagous to L<DBI::Shell>.
    427
    428 =item C<DBD::QDRDBMS>
    429
    430 A wrapper over the QDRDBMS API that makes it work as a L<DBI> driver
    431 module, should that be useful. Depending on what DBI itself permits or
    432 requires, this could take a variety of query definition formats, including
    433 either or both of AST form or string form (most likely) QDRDBMS D.
    434
    435 =item C<QDRDBMS::AST::Translate(|::\w+)>
    436
    437 Utility modules that translate data (including code and declaratives)
    438 between representations that are QDRDBMS AST nodes and representations that
    439 aren't, or between 2 of the latter kind while using the former kind as an
    440 intermediate representation. As a common example, translations from or to
    441 any or all dialects of SQL should be supported. Also, translations from or
    442 to other I<D> languages, particularly I<Tutorial D>. Also important is
    443 translations to/from native Perl data structures, including native Perl
    444 routine definitions (L<PPI> would probably be employed in the Perl 5
    445 version), and including commonly used third party class' objects.
    446
    447 =item C<QDRDBMS::Proxy::(Server|Client|\w+)>
    448
    449 Implementation(s) of a generic proxy server plus client for the QDRDBMS
    450 API, letting the normal QDRDBMS Engine and the user application reside in
    451 separate processes. The client module would do C<QDRDBMS::Engine::Role>
    452 and the server would be an application or server-extending plugin that sits
    453 on top of the QDRDBMS API. Or whatever implementers want to do. This is
    454 analagous to proxying modules for DBI or other DBMSs.
    455
    456 =item C<QDRDBMS::Engine::(SQLite|Postgres|Oracle|\w+)>
    457
    458 A default (but not mandatory) namespace for QDRDBMS Engines to go, that do
    459 C<QDRDBMS::Engine::Role(|::\w+)>. A lot of these would likely be
    460 implemented over existing DBMSs, which results in QDRDBMS being an
    461 alternative API for them.
    462
    463 =item C<DBIx::Class::Storage::QDRDBMS> etc
    464
    465 An alternative plug-in storage engine for DBIx::Class that uses QDRDBMS
    466 rather than DBI. Analagous extensions can be added to other DBI wrappers
    467 modules such as Tangram or Rose::DB or what have you. In either case, said
    468 alternatives can either be bundled with the core distros of those other
    469 modules, or separately from them, as per their authors' preferences.
    470
    471 =item C<QDRDBMS::Emulator::(DBI|JDBC|OCI|\w+)
    472
    473 Emulations of other modules or APIs as wrappers over QDRDBMS. This is
    474 potentially the easiest way, short of the other modules themselves being
    475 appropriately updated, to permit migration for legacy apps to QDRDBMS while
    476 they have the fewest actual code changes. The emulators would likely
    477 employ SQL translator utilities internally.
    478
    479 =item C<QDRDBMSx::\w+>
    480
    481 Unofficial extensions to QDRDBMS could be named in this space, though it
    482 doesn't have to be used if prior coordination happens between developers.
    483
    484 =back
    485
    360 486 =head1 PUBLIC SOLUTIONS BUILT OVER QDRDBMS
    361 487
    362 488 I<This documentation is pending.>
  • ext/QDRDBMS/README

     
    19 19 2002-present, incorporating the Rosetta development/release time-period.
    20 20
    21 21 The QDRDBMS name was intentionally picked to be temporary (it should evoke
    22 "QDOS"), as the current release is a prototype. In the future, when
    22 "QDOS"), since the current release is a prototype. In the future, when
    23 23 QDRDBMS has matured significantly, it is expected that it will be renamed
    24 again to a permanent long-term name.
    24 again to a permanent long-term name. It is specifically guaranteed that
    25 the rename would happen prior to QDRDBMS reaching version 1.0.0, so all
    26 versions 1.0.0 and later, plus likely some before, will carry the new name.
    25 27
    26 28 The long-term name of this project has not yet been decided, though the
    27 29 author has a 6-letter candidate in mind, to be revealed later for feedback.
     
    33 35 plus associated products, is appreciated. Likewise, the author has a name
    34 36 in mind, to be revealed later for feedback.
    35 37
    38 So you need to keep this in mind if you make any extensions for QDRDBMS, or
    39 you use it in your code, or you write any articles or documentation
    40 concerning it. Any extensions whose names embed the old name should be
    41 updated to embed the new one instead, to preserve consistency. Any
    42 documentation or articles that you write now, which mention QDRDBMS, should
    43 explicitly state that it is going to be renamed, to help any readers. And
    44 of course, any code using QDRDBMS will need to search-n-replace in the new
    45 name so that it can remain current.
    46
    36 47 QDRDBMS has 2 co-developed versions, which are written in native Perl 5 and
    37 48 Perl 6 respectively, and which are distributed separately from each other,
    38 49 and which will change names at the same time. But while the 2 versions