Monday, July 11, 2005

Tech talk

The software that the 2People web site runs is under development -- it's called 'Reef'. A 'reef' is an ecosystem of content. It's a community built around posting, subscribing to, and collaborating on content. Something like a wiki, only with structure -- you can post an article, an event, a discussion topic, etc. (Also akin to structured blogging.) Because it's all based on a unified content model, it gives people the ability to subscribe to exactly the content they're interested in.

I chose to develop Reef in perl, on top of an mvc framework called 'Catalyst'. I'm liking these choices a lot, though it took me a bit of time to settle on them. Originally I though I'd develop in java, but the java mvc frameworks (Struts, Spring, ...) are still a bit daunting compared to something like Ruby on Rails. The java frameworks are definitely doing cool things, but they don't feel agile.

The other thing I expected was to find existing components to build on -- especially, I thought I'd use an existing wiki as a scaffolding for Reef. I looked at many, including MoinMoin, ZWiki, JspWiki, and Kwiki. The latter two became finalists -- they're both well done and relatively light weight, they have good communities, and they're built on languages (java and perl) that have great libraries backing them up and which I know. I actually started work on JspWiki, but immediately stopped bc the codebase just didn't feel stable enough for the kind of re-architecting I needed to do. Then I spent two weeks studying the marvelous, impeccable kwiki code. Kwiki is a wiki designed for extensibility -- the idea is that anybody can contribute a plugin and it should work with anybody else's plugins. I learned a ton about good perl code.

Sadly, within a few days I started to feel the limits of the kwiki architecture. I felt like I was trying to force it into shapes it wasn't meant to go in. Specifically, it doesn't feel very friendly to creating a class hierarchy for different types of pages. This is probably my limitation -- but I'm the one hacking on Reef. (Speaking of page architectures, yes, I also looked at plone. It's so very close to what I wanted -- esp. the new archetypes architecture, but it has so many, many, many layers -- the opposite of lightweight.)

In truth, it wasn't just wikis I looked at -- which is why it took me so long to settly on a toolkit. I also looked at CMSs, blogging software, and java portlet containers... This project cuts across so many categories! So it's kind of ironic that in the end, I'm writing it from scratch on a lightweight mvc framework. But I think this was the right choice. Having a clean page architecture -- by which I mean that every kind of page, whether it's an event or a resource listing, can be treated essentially the same -- makes everything so much easier, and development is going well.

0 Comments:

Post a Comment

<< Home