Patterns, and cookbook capture the sweat, and inspiration of those who have gone before you, boiling it down to a few key concept, and helpful howtos. Most common are the object and coding patterns ala GoF, and Portland Pattern Repository.Then there were web design patterns (called interaction patterns). Now I’m looking for a collection of patterns for building and running community software.

Community Patterns:
Web-based software designed to facilitate participation from the websites visitors is more the rule then the exception these days.
Slash (and descendants), phpNuke (and descendants), Scoop, the myriad of solutions running the Indymedia sites ( Mir, Active, SF-Active, Dada) all run up against some of the same problems, and get stuck experimenting, and rebuilding simliar solutions.

Some problems that jump to mind: comments (threading, sorting, etc), moderation, categories, reputation mangement, privacy, and dealing with abuse.

Thoughts on threading
Derek of {fray} with a brief blurb on the threading vs. flat debate

Handling bad or malicious mark up
What I’m really thinking about this morning is cleaning HTML. An email just went across the Mir (Indymedia) list on the best way to handle javascript that is being attached to links, and images in the open publishing newswire, for the purpose hijacking the page.

  • On Protest.net we use the approach of building a parse tree, and then stripping invalid tags from the tree.
  • On Indymedia we use are a series of regexes, that have accreted over time, like coral, responding to each new intrusion. Neither one handles Javascript all that well.
  • Slash and Scoop seem to use hand built parsers, built arund regular experssions.

Building a parse tree is expensive, IMC’s regexes never seem quite complete, (and can cause maintainability headaches) An exmaple of the parser approach (in Python): http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52281

ack! getting kicked off the phone line more to come…