localwiki/sapling — Issue #68: Comments framework
Author: philipn
Created: 2011-11-24 09:57:08+00:00
State: open

A rather popular feature of RocWiki (at least) is the Comments macro, which allows logged-in users to append a comment to a page. The community seems to consider this a good place for non-neutral point-of-view contributions, while keeping the "real" page neutral. Oftentimes, especially for restaurants and similar businesses, the volume of comments can greatly exceed the normal page content (https://rocwiki.org/Tap_%26_Mallet), to the point where older comments are manually archived (https://rocwiki.org/Tap_%26_Mallet/Comments).

This has a lot of shortcomings: there is no facility to sort/filter/thread comments, users can edit or delete other people's comments, and the archiving process is somewhat time-consuming.

I am currently working on an application, sapling.comments, based off of the Django comments framework. Some things I have so far:

- Adding new comments
- Displaying existing comments
- In-line editing of existing comments (the front-end, at least)
- Semantic tagging using HTML5 microdata ()

Currently in the pipeline:
- Comment editing (back-end stuff)
- Recent Changes tracking of comments
- Comment deletion (by admins and posters)
- Comment sorting/filtering/etc
- Threading (replying to individual comments)

Stuff that I need to think about:
- Markup: should it go HTML5FragmentField, at least with a subset of allowed elements?
- Edit box: right now, it's just using , but I think I oughta be using ckeditor. Since the Edit Comment stuff is inline, this will be interesting.
- Ratings: I always had this idea of reddit-style vote up/down for comments themselves, but that might be overkill. Collecting "star" ratings for the thing being commented on might be useful, but I dunno. Good news is that adding this should be trivial :-)
- Anonymous comments: I stripped out the support for anonymous comments, but the more I think about it, it might be good to have it as an option under some circumstances.
- Configuration: per-site, per-object, ...