I say this having run a variety of social networks, from blogs and forums to MUSHes and Facebook ‘Wall’ type things. I’ve been around and I’ve had to manage cats in myriad situations.
The problem they all have is managing spammers and trolls.
Spammers are, weirdly, easier. You use a decent plugin/extension, you block the idiots, you move on. But trolls. Oh lord, trolls. You know those users you just want to take out back and kick until they find a clue, but you know they never will? Right.
When I was on a MUSH, I came up with a tool called the ‘Ban Hammer.’ If you’re not familiar with it, the basic idea is anyone can log on, make a character and join a role playing game. Sounds great. If someone breaks the rules, the people in charge (Wizards) can delete their character. The problem I had was someone was coming and not breaking the rules, but had made himself basically unwelcome. The Wizards wouldn’t delete the account because “Being a Dick” isn’t against their rules. I decided to write a tool that looked for this user and locked every room, door and exit against him. On top of that, if he tried to teleport into a room, it booted him out. And he got a message “You are not currently welcome here. Please speak with Ipstenu.” (or whomever was the local area boss). Then I shared it with everyone on the game.(If you can’t tell, I’m a huge proponent of sharing and Open Source. I gave people the source code too.)
As I see it, the problem is that most social extensions are fantastic in a closed system, but the minute you open things up to anyone, you have the problem of user management. Facebook and Twitter are failing at it today. There’s just too many spammers and trolls to manage. Most people spend time and effort hunting down spammers, which is probably why managing morons falls by the wayside.
The other interesting point I’ve noticed is that most programmers don’t run social sites. They use them, but they don’t manage them as an end-moderator. These are totally different skill sets and, as with all separate skill sets, there’s often a disconnect between what one sees as a need and what the other sees as a want.
I have to rewind here. My high school had a big emphasis on teaching us the difference between a want and a need. You need food. You want hot water. “a simple life school, where one learns to get on without” (Paul Squib – Founder of Midland School”) A lot of my decisions in life roll back to that simple premise. If you needed something, the school provided it. If you wanted something, you worked for it. I learned how to chop wood and make a fire in order to make enough hot water for 14 teenage girls to shower because we wanted the water hot. (Funny Midland story. We basically had an old propane tank, fitted with a small stove ‘hole’ to make the fire. You started the fire, added the logs, and stoked it for about 2-3 hours to heat the water, often augmented by the solar panels. If you made the water hot enough, however, you created steam, which would flip a switch on the safety switch so people didn’t get scalded. It was called the ‘Steam Lock’, and we measured our abilities by how efficiently you could activate it. I learned how to do it on my second shower fire, having been taught by Amber and Katie. Thanks, girls!) Because of that, not a day goes by that I don’t think “Is that a want or a need?” And I am ruthless with myself about that. Because of that rigorous crucible, I am confident what I say that I know what I need, I really mean that.
The tools I need to deal with trouble-making users aren’t many.
Track IPs – only to keep tabs on repeat offenders. A spammer’s IP doesn’t matter. Bob the troll’s does. This is going to always require a level of manual intervention, that a human will have to go in and think about things, but that’s not a bad idea anyway. I made a WordPress plugin called Register IP Multisite to handle that for both single and MultiSite.
Flag as spam – I need to be able to say ‘Bob’s acting an ass. I want him to go away.’ Really this should be ‘flag as bozo’ as he’s not a spammer, but I’ll take either one. A time out feature to put people out of sight from the users for a while. Obviously, again, there’s a level of manual work required. You can do this on WordPress MultiSite, but not single site, and it’s silly to think that you would have to go to MultiSite to enable this.
Bad Words – Sometimes it’s easy to stop the jerks. Sometimes I just want to keep a place clean for kiddies. Most tools, blogging or otherwise, have a way to clean words, but then you have strange problems. If you use, say, “cialis” as a bad word, you block “socialisim.” Ooops! Also, I would like to block people from using bad words in their ‘name’, and not just comments. But again, this needs manual monitoring.
The tools I’d want, but don’t need, are also few:
Report users – Most forums have this ability, to let people patrol each other. Google+ has it. If you’re opening up your site to the world, you have to be able to let the crowd help you. But within reason. You can only report people once, for example, and after X reports, someone should be just blocked for now until a moderator manually steps in.
What about you? What tools do you know you can’t live without?



For a lot of people,
This is actually my favorite thing about BuddyPress. If you post in a blog, or a group, or a forum, all of that gets pulled into ‘Sitewide Activity.’ That’s right, every last bit of your site is on one big page! Now, if you’re only using WordPress as a blog (no groups, no forums, JUST a CMS/blog), you’d think “I want this because I want a page that lists all my comments from all my posts!” To an extent, you’re right. There isn’t a better way to do this! Or is there?
While there are plugins like
If you just want a forum, just install 
We make multiple test environments and platforms, testing with hundreds of users. We perform stress tests (how much traffic can my site take?), and have an obscene amount of checks and balances to ensure that only code that is good makes it into the file product. We have teams who question every change asking “Do you need this?” or “What’s this function for?” We audit every update process and ensure that our work is as good as we can make it. This is all done, we say, to reduce our risk. Our software, we insist, will be better if we do all these things.
Variation is nature. It’s reality. It’ll never go away, either. The point of risk analysis is not to come up with that number to say ‘By doing foo, we are x% less risky.’ The point is to look at the system and understand it better. The point is to learn. The act of explaining and defining the process, whatever it is from changing a tire to pushing software to a few hundred servers, is what makes a process less risky. You understand what it is you’re doing, and you can explain it to someone so they too can understand it, and now you know what you’re doing. The numbers will come, but they’ll also change over time due to variation.
You see, we know we can’t test everything, and we know that we’re going to miss that one variation on a server where code that works a hundred times on a ninety-nine servers will fail on that one where it has a tiny difference. And yet, if a million monkeys banging on a million keyboards could write 
This confuses the heck out of a lot of people. Custom Post Types are’t posts they are post types.