Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Perl Programming Technology

Interview With Brian Ingerson 7

comforteagle writes "Brian 'INGY' Ingerson is a well known and prolific Perl programmer. Far from being yet another perl hacker he is the author of several CPAN modules including award winning Inline, YAML, and most notably of late his wiki application Kwiki. I had the opportunity to interview INGY about his work on Kwiki, and his philosophy in programming in general."
This discussion has been archived. No new comments can be posted.

Interview With Brian Ingerson

Comments Filter:
  • Already slowing (Score:4, Informative)

    by Anonymous Coward on Tuesday August 31, 2004 @04:27PM (#10122715)
    OSDir: Why did you develop Kwiki?

    INGY: Kwiki started as a tangent project of a tangent project for a much greater itch. I have this project called FreePAN that will be a better CPAN for source code in *all* programming languages. Ward Cunningham and I were talking one day and he suggested that I use his cross-langauge testing project called "fit" to integrate into FreePAN. Graphical fit tests would be available for realtime visualization of all software on FreePAN.

    So I developed my own fit module for Perl. Fit requires html tables, which are nicely done in wikis. I needed a wiki that did better tables so I created Kwiki. The ironic thing is that Kwiki has become my most active project, and FreePAN and fit are on hold. (although FreePAN looks like it will get another go this Fall).

    For fun, I decided to make Kwiki a completely object oriented Perl project. I brainstormed all the components necessary to make a wiki, about 20 of them, and made a class for each one. Also I always think as abstractly as possible, so I decided that I would hardcode as little as possible. This makes Kwiki a framework for building your own wikis. Kwiki works as a wiki right out of the box, but the real fun is in adding on to it.

    Collaboration is my main drive in programming. Wikis are about collaborative content. Kwiki is about collaboration at the software level. I want to make something that entices all sorts of people to scratch their own itches. The best way to do that is to make things as simple as possible. To remove obvious barriers to entry. To ensure that when entry level people tweak things, the software does the right thing. This is not an easy thing to accomplish.

    Some folks believe in a minimalist approach to design that relies on well known existing environments almost entirely. While I respect that approach, it's not really my style at all. I like to do lots of difficult magic that make the Kwiki environment even easier to end users than well known existing environments would be. Sometimes this even comes down to changing Perl itself. I don't really change the Perl interpreter, but the magic is so well hidden, you'd think that I had.

    OSDir: I heard through the grapevine that you were trying to include Ward Cunningham (Father of the Wiki) in the development of kwiki, but he was unavailable at the time & so you dove in head first on your own.

    INGY: Well that's a little backwards. If Ward Cunningham had been available at the time I never would have started Kwiki.

    I had just met Ward from a common friend, Kevin Altis. We all lived in Portland, OR, so Kevin took me to Ward's house to meet over a couple beers. Ward and I hit it off and started talking like crazy. The next thing you know, it's 1am and Kevin is all but passed out (from boredom, not beer), and has barely gotten a word in. (rare for Kevin!)

    Ward sold me on the idea of his FIT testing project. I wanted to use FIT to test my YAML project. I couldn't find any Perl wiki software that did HTML tables very well. I wanted to borrow Ward's
    personal wiki code to do the tables, but he was vacationing at Disneyworld. So I started Kwiki from scratch and got the original Kwiki running in 2-3 days.

    I believe strongly in software reuse. I also think it's perfectly fine to reinvent the wheel. Especially if you think your wheel has something significant to offer that really wouldn't fit well into an existing project.

    OSDir: Kwiki has really caught on with now over 30 modules. To what do you attribute its success as a project attracting such participation, and as an application with its increasing deployment?

    INGY: In all my projects, I concentrate on how that project can generate community interest. That's the main focus. If I create something wonderful, and nobody notices, I've failed. So Open Source software development is as much marketing as it is writing code.

    My biggest secret, is that I keep no secrets. I do everything in the
  • IngyCommentStyle. (Score:4, Interesting)

    by buttahead ( 266220 ) <tscanlan@so[ ]th.org ['sai' in gap]> on Tuesday August 31, 2004 @05:48PM (#10123514) Homepage
    The only bad thing I have to say about Ingerson's code is that he should use comments. He does mention that he wants kwiki to be easily changed by anyone. His lack of comments are a detriment to many people wishing to contribute. His idea of clean code means no comments. To some extent I can agree, but there are cases where code can't be made clearly understandable (especially when doing serious mojo), and a comment is needed.
    • Agreed. And there's a whole lot of mojo in his code...

      Really Kwiki needs a sort of architecture guide so that people can contribute without reading through several dozen Kwiki and Spoon modules first.
  • I remember going out for beers with Ingy once ... its best described by the frantic words "Put it back on! Put it back on!" (*)

    (*) spoken with a German accent.
  • I've gotten to meet Ingy at a few events put on by the Seattle Perl Users Group (http://www.seattleperl.com/ [seattleperl.com]).

    He's a great guy to talk to and will take time to explain his latest project even to the least technical user. It's great to see him interviewed on a prominent site!

The best defense against logic is ignorance.

Working...