Over the past couple of months, I've been considering the problem of the decline in comments on HN, against sites where I've seen the quality hold over time. As a result of this, I've come to three conclusions:<p>1. Community size (that a user can see & engage with) must be artificially limited (although total community size doesn't)
2. A weighted voting process needs to be in place
3. To scale, the controls must be algorithm-based, not moderator-based<p>Therefore I've come up with the following system that I'm going to be building and trialling on a site in the near future:<p>1. When a user joins, they're initially put into the city population. Here they are shown the firehose - an unfiltered news stream, with all users present<p>2. Each time a user interacts, either by adding a comment, posting an item or clicking a link, the action is recorded<p>3. Over time, the accrued weight of this will ensure that what they're shown is limited by the types of content they've historically interacted with, the users who've submitted that content, and the users they've engaged with in commenting<p>4. To ensure freshness/adaptability, a certain amount of the hose will always be shown, and the selection will have a time component, so that they can view different content and thus the selections can change as the user changes<p>5. Users will only be exposed to other users who loosely fit the profile that they've selected in to, with a maximum of around 150. Users will be able to follow other users, thus ensuring that these people are never swapped out of their engagement circle, and all content or comments that they submit are presented<p>6. To solve the obvious issue of thousands of people following single users, a power user will see content from their own followed list first, then other data below<p>Looking at the content side:<p>1. Each item would be tagged according by key terms in the content & the user who submitted the item<p>2. Each submission & comment would allow voting, thus allowing for segregation between casual browsing and active engagement, to allow for more refined user-level filtering<p>Thoughts/suggestions appreciated.