Note: this project is personal and non-commercial, and instead of using the GPL I will be putting my money where my mouth is and making the source code public domain. It will be written in PHP.
the number of stories that are lost to the readers when they get voted down,
... and a lot of other things besides (including formatting, which has been getting on my nerves immensely while I've been editing this story). I set out to fix these problems, working from the ground up. The result so far is promising, I believe.
The front page, by default, has stories under three sections: Today, Yesterday and This Week. Each section also has a "more..." link. The idea is that the five top rated stories from each timeframe appear on the front page in rank order. While a page is in the Today system, it can be voted either up or down, as well as edited by its author.
At the end of each day, the Today section is frozen and moved to the Yesterday section. This Week offers high-rated stories from the rest of the week, and will not include stories that are currently appearing in the Today or Yesterday sections.
On the right of the front page is a sidebar in a smaller font, which also contains three things. The first is either a username/password/register widget, or a "logged in as..." display. The second is called "front page display options", and includes a dropdown to let you filter stories by topic. If you choose "politics", for example, you will only see stories from the politics section, but they will still appear five-per-timeframe in rating order.
Still with me? The other option in "front page display options" allows you to zoom the front page timescales in or out (for want of a better phrase). In this way you can either have a complete view of Today, broken down by the hour, or a This Week/Last Week/This Month view, or even a This Month/Last Month/This Year view. Note that this option is not a dropdown, the options available change depending on context.
The third part of the sidebar is one that I haven't quite decided upon. It will either be a 'recently-commented-on stories' thing, or a 'watch list' with manually-added stories. I'm erring towards the first.
At the top of the page, finally, is the toolbar, with three links (so far) represented as icons: "make a post" (or "post a thread", or "post a story" -- you get the idea), "your user page" and "options".
Post a thread's purpose is obvious. You can choose a topic to put your thread in (the current topics are life [intended to be a diary-type thing], internet, news, media, politics and meta).
The user page is an account management thing, including options to change your password and registered email address. It also lets you see the threads and comments that you've posted, and write a bio to go on the version of your user page that's viewable by others (when they click your username).
Options will be for things like font faces and sizes and other display options that will no doubt crop up (letting people upload their own CSS, perhaps? -- everything I've written so far is table-free, style-and-content-seperated XHTML 1.1).
Other features
These are suggestions or ideas that I haven't decided on yet.
- Killfiles.
Inevitably the first thing everyone says, and a feature that site owners generally want to leave out. I'm not convinced of the need for them yet. It'd go in "options", as well as being available each time you view another user's profile page.
- "Vote to hide comment"
Somewhere one-click away from the actual comment (I'm going for a relatively clean interface), there could be an option to vote to hide a comment, with the comment becoming hidden at a certain threshold. This would be accompanied by an option in "options" to view all hidden comments anyway, of course.
- Links count as votes / comments count as votes
Inbound links to a thread could give the thread as some small (like 0.01) amount of vote-juice, making it so that it will be represented in the voting if many other sites link to a certain thread. The logic with comments is similar -- if a thread has sparked a large discussion, it should receive a few extra votes for that.
- Private messaging
Instead of giving out email addresses, let people send private messages. I'm reluctant to give everyone a special "PM inbox", forum-style, so I'd probably just want to make this a form that you can use to send email to people without having their address disclosed (with some abuse controls, of course).
- Draconian moderation OR complete lack of moderation
People seem split on this. Personally I'd like to make the thing self-regulating, giving the users the tools to remove crapflooders and the like without the site owner having to go around using the delete tools and banhammer. I've even considered putting a "vote to suspended" option on user pages, with the user getting suspended for an ever-increasing amount of time each time a threshold is reached.
- Paginated threads and threaded threads
Again, an even split. I prefer my comments MetaFilter-style (ie. flat, unthreaded), just because conversation seems to flow better with less repetition. It also solves the absurdly-deeply-nested-comments problem. Adding pagination to this and some kind of mechanism to say which post[s] you were replying to would make it acceptable, I think. Of course, you'll all probably think I'm nuts, but in that case I'd like to hear suggestions for making threaded discussions flow better and look better.
That's all (for now)... what do you think? Where am I right, where am I wrong and what have I missed?