[Dbix-class] ANNOUNCE: reboot of Rosetta/SQL-Routine development, in Perl 6

Darren Duncan darren at DarrenDuncan.net
Sat Oct 1 07:15:54 CEST 2005


2005-09-30   Darren Duncan <perl at DarrenDuncan.net>
--------------------------------------------------

I would like to acknowledge that, despite all the good things that 
have come out of it, I have had some significant problems in regards 
to the past development of my Rosetta rigorous database portability 
framework.

(As a reminder of what this is, a terse, 5-minute introduction can be 
found at http://darrenduncan.net/OSCON/OSCON2005LightningTalk.txt ).

The main problem being that it is taking an order of magnitude too 
long to come out with a product that is actually useable for 
practical work.  I see one root cause of this being my packrat nature 
of not wanting to throw out portions of the project (a lot of that 
being documentation) that I already invested time in, since they 
could still be useful.  Another main problem was a persuit of 
perfectionism that left me spending too long on little details that 
could better have been put off until later, and this multiplied by 
the size of of a system that has a semblence of being 
over-engineered.  Also, in hind-sight it was a mistake to limit 
certain implementation decisions in the core due to a desire to make 
a C version later, which is a less expressive tool.

I have decided that now is an excellent time to start over and remake 
the system from the ground up.  But while this is an opportunity to 
change many things, I see the larger scale design of the previous 
version to still be sound, as well as its planned feature set, and so 
therefore the new version will look like the old one at a distance. 
The main difference will be in the details of the API and in the 
internals, plus the new documentation won't be so verbose.  Many 
valuable lessons were still learned in the first attempt to make this 
project, and will be applied in the new version.  In some respects, 
the new version will actually be akin to a large refactor of the old, 
and not so much a rewrite where the fundamental design and feature 
plan sees change.  However, all of the code and documentation is in 
fact being re-typed, so many things can be changed, even with the old 
version being a rough guideline to follow.

In this process, I also draw a lot of inspiration from Autrijus Tang 
and his Pugs project, which demonstrates ways to come up with 
something amazing in a short period of time, and spark strong 
interest and participation from the wider community, a killer app of 
development models perhaps.

So what are the practical benefits and effects of this reboot, then? 
Here are the most pertinent:

1. Development speed will be several orders of magnitude faster than 
before, measured by the rate at which actual useable features are 
made available to users, even when I'm the sole developer (as I was 
before).  You will actually be able to see progress being made, and I 
will have more personal satisfaction in my output.

2. Development will now proceed vertically first and horizontally 
second, rather than the reverse which was true before.  This means 
that at any given period of time, we will have a small number of 
features that are 100% complete and useable *now* vs a large number 
of features that are 80% complete and wholly unuseable, which is the 
case in the older system.

3. Since people will be able to actually use the system for 
something, whether work or play, it will be a lot easier for them to 
get excited about it, then turn around and participate in its further 
development.

4. Perl 6 is now the primary native platform of the Rosetta 
framework, and Rosetta's design and implementation will be driven by 
what is considered the most natural and best practices in Perl 6. 
This action both helps the development of Pugs itself through the 
extra integration testing it provides, but it also helps anyone that 
wants to make database using applications in Perl 6 to migrate there 
faster.  The Perl 6 version will not be a port of the Perl 5 version 
after the latter is done.

5. But because Perl 6 is still very much a moving target, and its 
implementations unstable, a native Perl 5 version will be developed 
simultaneously and be kept in full parity with it; this task is made 
a lot easier by the multiple modules on CPAN or bundled with Perl 5 
that give it functionality and syntax like Perl 6 has natively, such 
as 'version' and 'List::MoreUtils' and 'Class::Std'; but the Perl 5 
version should still be very stable and efficient, a good Perl 5 
citizen.

6. If you have ideas you want to contribute towards improving 
Rosetta, it will be a lot easier for me to adopt them now that the 
pot has been emptied.  And don't worry if you think that your ideas 
were already in my un-stated plans; its always nice to have 
confirmation of an idea's validity.

7. The code will be visibly smaller and more nimble.

8. Certain classes of features will be available sooner than otherwise.

9. Lastly, I can finally start to build other products of my own that 
employ Rosetta (providing useful benefits to others, and income to 
me), even if at a fraction of functionality, rather than putting off 
the start of their development until Rosetta is done.

So where is this all happening, you may ask?  In 2 main places:

1. The native Perl 6 version is being co-developed with Pugs, like a 
variety of other Perl 6 native modules and applications; you can see 
the newest version in Pugs' own public Subversion repository (see 
http://pugscode.org/ for links) and in its distributions on CPAN; see 
the sub-directory "/modules/Rosetta-Incubator" for now.

2. The native Perl 5 version has a public Subversion repository 
(donated by Sam Vilain / mugwump), at 
"http://svn.utsl.gen.nz/trunk/Rosetta-Incubator/", the same server 
but different directory as the previous project attempt.

Note that the module names and versions will continue directly from 
the series in the previous project attempt, and will show up on CPAN 
as successors later.

Once this rewrite of Rosetta gets to the point of being useable for 
something, I will announce "Rosetta/SQL-Routine developer release 
#4"; this is actually in line with my announced plans that came with 
the September 10th "developer release #3".  Given the acceleration 
resulting from this re-write, I expect that to happen any week now.

Thank you and have a good day.

-- Darren Duncan



More information about the Dbix-class mailing list