The Perl Foundation took part in Google's Summer of Code program and managed to get 8 projects funded. This is the fourth in a series of informal interviews finding out more information about these projects. Up now is Brent Royal-Gordon with "WWW:Kontent - A Perl 6 Content Management System".
Hi there! Tell us a bit about yourself, including age, where you
are a student and what you are studying
I'm a nineteen-year-old Californian who has been working with Perl
since about the second semester of high school. I've been watching
the Perl 6 effort since shortly after the RFC deadline, and made some
contributions to Parrot during my junior year of high school.
Simultaneously, I've been doing a lot of HTML and CSS work, including
a website for my mother, an author.
You've had a Google Summer of Code project funded. What will you be
doing? How will you be doing this? What's the final product?
I'm writing an extremely flexible content management system in Perl 6.
The idea is to take all the common parts of systems like the
Everything Engine, MediaWiki, Slash, and so on, and write a base
system that handles all of those tasks. Each page--actually, each
revision of each page--is then given a "class" specifying the
behavior it should have. For example, a class for a wiki page would
allow anybody to edit it, while a class for a Perl Monks-style page
would only allow its author to do so. The classes are actually Perl 6
roles, which are composed into the page objects at runtime--something
Perl 5 could never do without some serious trickery.
At the same time, the other parts of the system are built to be
pluggable. One module, for example, will handle talking to whatever
backing store--SQL database, DBM file, directory full of flat files,
whatever--is being used; the administrator can easily switch between
backing stores, and a carefully-designed page class might even bridge
to another store a la Unix's mount(8) command. A set of "renderers"
will be able to display pages in multiple formats, so that the same
database entry could be displayed in HTML, PDF, or OpenDocument. The
normal markup language for it will be a specialized language called
Kolophon, but it's designed to handle other markup languages as well.
Basically, I want to build a system you could use to run any kind of
website, even if different sections have different behaviors or rules
of operation. It's a system that can be a normal website, a wiki, a
news site, a bunch of blogs, and a message board all at once, and
which can work with any database you have the tuits to connect to it;
it keeps a complete revision history and allows you to edit pages from
anywhere.
Even more basically, it's what the webmaster in me has spent five
years wanting computers to do for me.
How did you get interested in this topic?
My early work with crappy, homegrown web templating systems kind of
laid the groundwork. Since then, I've seen and experienced a few
things that made me want to do this project: an attempt to design an
open-contribution site that was just too hard to do right in Perl 5; a
friend's site that will require four completely separate components (a
wiki engine, a message board, blogging software, and a news system)
and still have a few static pages; some experiments with Everything,
Slash and MediaWiki; and of course lots of time spent examining Perl
6.
Where do you see your project going after this summer?
On the CPAN. ;^)
My proposal to TPF purposefully excluded some of the harder but more
compelling parts of the design, like the message board and image page
types, from having to be finished before the deadline. There will be
plenty to do after September 1.
I hope Kontent will become fairly important. I'd like for this to be
one of the first things people download when they get a brand-new copy
of Perl 6.0.0. Of course, that's not very likely, but a hacker can
dream, can't he?
One thing I pretty much know will be helpful is the side effects on
Perl 6 development. I've found a few bugs in Pugs so far, and I'm
also compiling a list of "Perl 6 nits", little annoyances in the
language. (Overall, though, I love the language so far; it's a dream
to program in, because the construct you want is always there.)
Is there any way to track your progress over the next few months?
Got a blog?
I have a personal blog on LiveJournal, but I'm mostly tracking my
progress on my Use Perl journal.
Did you expect to get funded?
Not really. I tried to write the most compelling proposal I could,
but with 9,000 applications it really seemed like a long shot.
Got a silly fact about yourself or the project?
Like many amateur webmasters who know Perl, I reinvented the "web
templating system" wheel at least three times before I realized I
should just use one of the much-better-designed systems on the CPAN.