Slashdot: News for Nerds


Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Slashdot Prevents Abusive Content

Slash Privacy Watch (532708) writes | more than 12 years ago

Slashdot and Censorship

Slashdot and Censorship

It is a well known fact that Slashdot as a community does not advocate censorship or Censorware of any sort. Slashdot's own Jamie McCarthy is an active and effective member of The Censorware Project, one of the Internet's leading watchdog organizations for monitoring Censorware. What is Censorware? Jamie defines it here as:

"software which is designed to prevent another person from sending or receiving information (usually on the web)."

This succinct definition can be applied to any software package to evaluate whether or not it is Censorware. However, this definition attempts to define in black and white what is actually a very grey area. In order to maintain an effective and intelligent forum, Slashdot must have facilities to prevent abusive users from posting comments in order to disrupt and harass the effective functioning of the site. This does not mean that "Slashdot is Censorware"; far from it. However, Slashdot does contain some Censorware components.

The Power of Open Source

Slashdot, thankfully, is an Open Source project. In fact, you can view every line of Slashdot's code from it's home on Sourceforge. Slashdot contains many facilities for tracking abusive users and banning them from access. For the sake of simplicity, we'll avoid the facilities for tracking scripted form abuse and focus on the facilities for detecting abusive content (sometimes called "trolling").

Detecting Abusive Content

The story begins in, at line 1082. The function isTroll() quickly checks to make sure that the user is not an editor (editors do not post abusive content) and then hands off to the perl module which interfaces with the MySQL database. contains the function getIsTroll() which runs a series of checks on the user to detect abusive content. Because no filtering system can reliably detect abusive content, getIsTroll() relies on Slashdot's Moderation System (specifically M1) to highlight abusive content. If a particular comment receives a signifigant quantity of negative moderation, it is likely abusive content. If multiple comments from the same account receive a signifigant quantity of negative moderation, the account in question is likely a source of abusive content, and must be prevented from communicating with the Slashdot audience. However, many abusive users create "multiple personalities" for themselves on Slashdot. To detect this, getIsTroll must identify the total number of negative moderations received by a particular IP address. Because some abusive users even go so far as to change their IP address frequently, getIsTroll also checks the number of negative moderations received by a particular IP subnet (class C network). If a large amount of negative moderation has been applied to an account, IP address, or IP subnet, getIsTroll returns "true", which in turn prevents the abusive user from communicating with the audience of Slashdot; this keeps abusive users from disrupting the free and open exchange of ideas. To see how getIsTroll detects and marks for gagging abusive content in comments, read the source code carefully before continuing.

Some examples of abusive content which is regulated by getIsTroll:
  - links to vulgar or deeply offensive web sites.
  - links to web sites advocating hate crimes.
  - comments which contain ludicrous "anti-Linux" or "BSD is dying" arguments
  - general abuse.

The Last Step: Gagging Offensive Users

Once getIsTroll has identified the abusive content, Slashcode must prevent it from being posted. Remember, this is not Censorware, it is a very limited Censorware component. Comments or IP subnets on Slashdot are never moderated down without very good reason. Returning to at line 489, a quick check is made during comment posting for isTroll (our first function) to return true. If isTroll returns true, Slashdot returns the "Troll Message" from one of its' administrator defined templates and returns without posting the comment. This prevents the abusive user from communicating with the Slashdot audience. Slashdot's standard "Troll Message" comes from the default error template:

CASE "troll message" %]
This account or IP has been temporarily disabled. This means that this IP
or user account has been moderated down too much in the last
[% constants.istroll_ipid_hours %]
[% IF constants.istroll_uid_hours != constants.istroll_ipid_hours %]
                (IP) or [% constants.istroll_uid_hours %] (account)
[% END %]
If you think this is unfair, you should contact [% constants.adminmail %].
If you are being a troll, now is the time for you to either grow up, or
change your IP.

Note: Gag time starts at 72 hours (3 days) per abusive comment posted.


This should shed some light into why Slashdot maintains comprehensive customer profiles on every visitor in the Slashdot database. For ever person posting to Slashdot, there is a chance, no matter how small, that that user may intend to post abusive content. It is the responsibility of the management of this site to prevent these users from communicating with the Slashdot audience in order that intelligent communication be preserved. Again, this is not Censorship. It is merely order.

cancel ×


Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account