On Saturday 01 July 2006 22:36, Michael G Schwern wrote:
> Those of you who were/are at the YAPC Hackathon might know, I've begun
> work on what started as Test::Harness 3 and is now TAP::Harness.  This
> is brand new, ground up rewrite of the idea of a harness for TAP
> sources (a foo.t file is a TAP source).  Its being designed to be
> extendable to handle all the things we'd like to do with Test::Harness
> over the last few years without having to worry about backwards
> compat.
.
.
.
> * Will I be able to do X with TAP::Harness?
>
> The goal is to encompass the largest set of X.  Another goal is to
> have the extender be able to focus on the display aspects and not the
> TAP parsing.
>
> Right now the use cases I have in mind include things such as
> parallelized test runs, fancy GUI and HTML outputs (for example,
> TAP::Model::HTMLMatrix), multiple, non-Perl TAP sources (ex. contact a
> URL and get the TAP from that; run HTML through a validator which
> produces TAP; run a C program which spits out TAP), "enhanced" TAP
> output (ex. colors; levels of verbosity), and the ability to smoothly
> handle TAP extensions.
>

I can't readily think of other stuff now. One thing I'm wondering about is 
whether you are going to code all of this into TAP::Harness from scratch. 
Plus, I've also been planning similar things for Test::Run too, (and already 
started implementing to some extent) and I'd hate to see some duplicate 
effort.

As some of the people who may know I like to start from an existing codebase 
when I can. This may be due to a bit of hacker's superstition as backed up 
by:

http://www.catb.org/esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s02.html

(Not to mention "Things you should never do part 1" and "Rub a dub dub" by 
Joel Spolsky).[1]

Now, I started Test::Run so it will be an incompatible Test::Harness-like 
module, only more modular, object oriented, pluginnable, etc. I found the 
Test::Harness code to be somewhat lacking in some respects, but believed (due 
to my superstition) that I can bang on it until it exceeds its current 
limitations.

I hope the Test::Harness maintainers can understand that I had no intentions 
of fragmenting, but rather as a way to create a better harness.

Test::Run still has many issues, but I think that it will still be easier to 
start from it than from an empty code. I didn't make a stable release of 
Test::Run yet, and would not recommend people to depend on its API being 
stable, so everybody's who's interested can go there and even break the API 
(as long as he also fixes the tests.)

Refactoring and extension of existing code is much more brainless than 
starting to work on a brand-new codebase, and is more rewarding.

Please do not consider this email as an attack against your attempt to write 
code or fix what's broken with Test::Harness. I don't mind having some 
competition. However, I'm trying to see whether there is some way we can 
consolidate our efforts.

The most up-to-date Test-Run code is here:

http://svn.berlios.de/svnroot/repos/web-cpan/Test-Harness-NG/

I don't mind giving Subversion access to the repository to anyone who 
registers in http://developer.berlios.de/ and is either a CPAN contributor, 
or has sent me one patch for me to commit. With Adam Kennedy's permission, I 
can also move the files to his Subversion repository, where everyone with a 
PAUSE ID can commit to.

A lightning talk I gave at two occassions (OSDC::Israel::2006 and an Israel.pm 
meeting) can be found here:

http://www.shlomifish.org/lecture/Perl/Lightning/Test-Run/

>
> * Will TAP::Harness include X extension to TAP?
>
> No.  TAP::Harness is using the current TAP spec from
> Test::Harness::TAP.  Extending TAP is another problem.
>

It may be a good idea to have a parser that outputs an events' stream and an 
analyzer that reads and analyzes the events. Then we can have a different 
protocol than TAP.

Regards,

        Shlomi Fish

[1] - Another module which I did not write from scratch is 
HTML::Widgets::NavMenu. I was looking for alternatives on CPAN, found 3, and 
chose HTML::Widget::SideBar by Yosef Meller (a fellow Israel.PM-er).

http://search.cpan.org/dist/HTML-Widget-SideBar/

Overtime I had to patch the module, subclass it and write some glue around it. 
Eventually, I wrote my tree-generation logic for generating a site map, and 
ported the rest of my code to it, leaving my module with none of Meller's 
original code.

Would it have been easier to re-write everything from scratch? I can't tell 
for sure, but in any case, it was less intimidating to start from scratch.

ESR has other stories like that.

---------------------------------------------------------------------
Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

95% of the programmers consider 95% of the code they did not write, in the
bottom 5%.

Reply via email to