# New Ticket Created by  James Keenan 
# Please include the string:  [perl #53142]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=53142 >


At particle's suggestion, about a year ago I began doing maintenance  
work in, and writing tests for, the Parrot configuration system.  For  
much of this time, the system has been relatively stable.  In the  
past 60 days, however, no fewer than 6 completely new steps have been  
added to the Parrot configuration process.

auto::gettext (r26100 | particle | 2008-02-27)
auto::crypto (r26359 | fperrad | 2008-03-14)
auto::glibc (r26946 | particle | 2008-04-12)
auto::opengl (r27022 | infinoid | 2008-04-18)
gen::opengl (r27022 | infinoid | 2008-04-18)
gen::digest (r27060 | fperrad | 2008-04-20)

AFAICT, in none of these cases was there any advance notice that new  
steps were going to be added to the process.  I just did 'svn up',  
and there they were!  I would have expected RT [TODO] tickets to have  
been created for these additions, and I practiced that myself when I  
did extensive refactoring to, or renaming of, any previously existing  
config step.

I would have been okay with that if I had a good idea as to the  
direction in which Parrot configuration was evolving or if these  
additions were in fulfillment of a previously documented plan -- but  
I didn't and they weren't.  So, while I'm not disputing the merits of  
any one of these new configuration step classes (I like the spinning  
triangle you get with the opengl steps!), I am at a loss to answer  
questions such as these:

* Is new configuration step X::X *necessary* for the functioning of  
the Parrot virtual machine?
* If new step X::X is not necessary for Parrot, what makes it  
*desirable*?  Why should it be included at the cost of increased  
complexity in configuration, build and testing?

These lead to even bigger questions:

* Why do we have all these configuration steps in the first place?    
Which ones are necessary for Parrot?  And which ones are there simply  
because someone with a commit bit wanted that feature?
* As we close in on Parrot 1.0, what "must-have" configuration steps,  
if any, are we lacking?  And what others are people planning?

I've had a few IRC conversations with particle and others about the  
direction Parrot configuration is taking, but those have mostly been  
concerned with how configuration might change after 1.0 -- not what  
has to happen between now and 1.0.

And, of course, there's the cage-cleaner's perspective:  Very few of  
these new config steps have applied cleanly or been tested adequately  
prior to commit.  So there's been a lot of breakage, particularly  
along OS-lines.  And I've had to either poke people to write tests or  
write them myself on a catch-up basis.

I would like to propose both short-term and long-term remedies.

Short-term:  If you are proposing a new configuration step, or doing  
a significant overhaul of any existing step, please post an RT with  
the code and with a [TODO] tag several days ahead of time.  This will  
give people a chance to run it on different OSes right away, without  
compromising trunk.  And if I get advance notice of any new config  
step, I pledge to work with you to develop tests for that step.

Long-term:  We need a Parrot design document on configuration.  Such  
a document should cover what configuration is, why we have decided to  
include the configuration steps already there, what we need and what  
we don't need.  Such a document should distinguish between what we  
need between now and 1.0 OTOH and post-1.0 OTO.

Thank you very much.
kid51

Reply via email to