SoC improving comments 2008
This project was implemented in Summer of Code 2008. The comment improvements are available as of Geeklog 1.6.0. This project outline is therefore only of historical interest and you can not apply for this project in future instances of the Google Summer of Code. Please see our ideas page for a current list of GSoC project ideas.
Comments are a simple and natural way to ask your readers for feedback to a particular article. Geeklog's comment system was originally written at a time when spam and heated discussions on websites were rare. Even though some improvements have since been made (e.g. integration of spam protection, reporting of abusive comments, etc.), the comment system is showing its age and is in desperate need of some changes and additions, as outlined in this project proposal.
The goal of this project is to make comments more useful and attractive again for both visitors (so they are motivated to leave comments) and site administrators (so they are motivated to allow comments, despite the fear of spam). We believe this could be accomplished by implementing the following features:
- a comment moderation queue
- "aging" of stories, i.e. automatically close a story for comments after a while
- make comments editable for users
- being able to actually see the comment or article you're replying to while writing a comment
- allow users to receive notifications about follow-up comments
- allow non-registered users to identify themselves
Note: Geeklog has hierarchical comments, i.e. you can reply to a specific comment and your comment will be displayed below the comment you replied to (indented, instead of at the end of the list of comments).
Just like story submissions, comments should - optionally - be held back until approved by a moderator.
- Option to only hold back comments by anonymous users.
- Option to put already published comments back into the moderation queue for review (including comments that are replies to these comments).
- Option to auto-approve comments by certain users or user groups.
The auto-approve should be implemented as a Geeklog right (permission), e.g. "comment.submit", so that this right can be assigned to groups of users (consistent with the "story.submit" right for stories).
For auto-approving comments by individual users, it may be worth looking at other systems for inspiration. Wordpress, for example, auto-approves comments by users once their first comment has been approved by a moderator. This works by setting a cookie and therefore doesn't require registration of an account.
Once a story has been up on a site for a while, it is less likely that someone wants to comment on it. At the same time, spammers are known to prefer spamming older posts in the hope that it will go unnoticed. Consequentially, it would make sense to have an option to automatically close a story for commenting after a while.
- Option to automatically close the story for comments after a certain amount of time.
- Option to only keep the last x stories open for comments (e.g. set to the number of stories on the homepage so that stories dropping off the homepage are closed automatically).
The option to close a story for comments after some time should be on a per-story basis (with a global default). The option to only keep the latest stories open for comment should override (and disable) the time-based option.
Note: Manual closing of comments is not available in Geeklog 1.4.1 but has been implemented in CVS for the upcoming version 1.5.
Making comments editable isn't going to help prevent spam but is aimed at making the comment system more attractive so that posters can correct typos or rephrase their comment.
Things to consider:
- A comment should only be editable as long as there hasn't been a follow-up comment.
- There should be a time limit for how long the comment should be editable.
- Comments should always be editable for Admins.
- The user has to be identified somehow. So either this feature has to be restricted to registered users or a cookie has to be set to identify the original poster (also see auto-approve above).
In order to indicate that a comment has been edited, it may be advisable to automatically add a (last edited by ... at ...) note to the comment. However, this should be made an option and it could also be left to the discretion of the user whether they want to leave that note in.
Seeing what you're commenting on
This should be a pretty straightforward change in the user interface: Currently, the comment submission form takes over the entire page so that you can't see the comment or article you are replying to (unless you open a separate window or tab).
This will also have to work with plugins that support comments, though, which may make things slightly more complicated than it seems at first.
Users who left a comment will usually be interested in any follow-up comment that is being made. Users should therefore have an option to receive an email when such a comment is posted.
Things to consider:
- This could lead to a lot of emails being sent and should therefore be a global option.
- Possible email options:
- immediate notification
- no further notification until the next visit
- inclusion of comment that was posted
- Ability to unsubscribe needed (preferrably with a link in the email).
- Overview of a user's subscriptions (e.g. under "My Account").
Note: There is some overlap here with the proposal for a Notification Service. Implementing the comment notifications using that service should make things much easier.
Less anonymous comments
Geeklog currently lumps all comments made by users who are not logged in together under a guest user account called Anonymous. If anonymous comments are enabled, there should be an optional text entry field where the commenter can leave a name.
Internally, these comments would still end up in the "Anonymous" account, but the display of a name should at least let them appear less anonymous.
Level of Difficulty
This project will require some wrestling with legacy code when implementing the editable comments, so that formatting and special characters will not get lost. Moderation will have to use Geeklog's plugin API for moderation and will depend on being able to edit the comments (due to the requirements of the API). These two tasks will probably require most of the time and work.
The amount of work required for the notifications will depend on whether or not the project for a Notification Service will be picked up and implemented. This task should probably be implemented last so that it can be cut down or dropped entirely, if necessary.
- Representing Hierarchical Data in a Database - How the comments are stored