[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