How Twitter Developers Can Combat Abuse
Here's a simple step that Twitter App Developers can do to reduce the amount of abuse which is generated on the platform.
A few friends of mine regularly receive harassment on Twitter. Typically, there are two ways to deal with it:
- Mute the offending user. This means their tweets to you never show up in your replies.
- Block the offending user. The same as muting, except the offender is also prevented from seeing your Tweets while they're logged in.
There's a flaw with both of these tactics - the miscreant can still target messages at you.
For example, a journalist I know has blocked a particularly persistent griefer. This sad-sack continually mentions the journalist and repeatedly links to her articles. This means the abuse appears whenever the journalist searches for people linking to her articles and inevitably, when her followers get drawn in to replying on her behalf.
So, here's a radical solution - if you're blocked by a user, you shouldn't be able to @mention them.
Alice is blocking Bob. Bob cannot see Alice's Tweets. Bob can still send @ replies to Alice. Should our clients block Bob from sending a Tweet containing an @ reply to Alice? Should the Twitter API block these messages from being sent?
Until Twitter gets around to implementing this at the API level, here's a way that app developers can add the functionality.
Friendship API
Using GET friendships/show
we can determine if the logged in user is being blocked by a specific user.
In this example, I (@edent) have blocked the well known troll @monkey. The app can perform this request every time @monkey attempts to send a tweet containing "@edent".
https://api.twitter.com/1.1/friendships/show.json? source_screen_name=monkey &target_screen_name=edent
In return we get a message showing if the user is being blocked.
{
"relationship": {
"source": {
…
"screen_name": "monkey",
…
"blocking": false,
"blocked_by": true,
…
},
"target": {
…
"screen_name": "edent",
…
}
}
}
The app can then either refuse to send the message or tell the user why it has been blocked.
Drawbacks
If enough popular apps start doing this, it might act as a small disincentive - letting abusers know that their messages are no longer welcome.
But until Twitter adopt this as the standard for their API, it will be possible for a harasser to simply switch to using the official apps.
The real change, of course, has to come from within. People have to learn that no means no - if someone chooses to ignore your messages, that's not an infringement of your right to free speech.
I'll be implementing this in Dabr over the next week. I'd be interested to hear from any other developers who make this change.
Andrew Fielding says:
Really elegant solution. I'd love to see this part of the official Twitter product.
If you wanted to go one step further, you could insert an invisible length Unicode character (or two) into the mentioned username. The troll is still able to make their point to people who choose to follow them, but you'd have to search pretty hard to find that mention, and it wouldn't be clickable. I've not thought my idea through in any depth though, so there could be unanticipated issues with this as an approach!
Terence Eden says:
I think altering the tweets is probably against the Developer TOS - it would also fail if the tweet is already 140 chars long.
Andy Mabbett says:
While I appreciate the intention of this initiative, I find it has, regrettably, tossed the proverbial infant out with the bathwater.
It is now not possible to point out that "I've been blocked by @RogueMP for asking them about their expenses", or to post "Please ask @NastyCoffeeCo to pay their taxes, if said coffee company have blocked the poster. True, these tweets can be made without the linked Twitter name (I've had to resort to "@.examplename"), but that's less effective.
Terence Eden says:
I've had a think about this - and I'm happy with the way it is implemented. If someone has been blocked, I don't want to facilitate them encouraging their followers to pile on.
This doesn't preclude using a different Twitter app, or even using invisible character to prevent the name being detected. But I'm OK with the way this functionality works.
jobrodie says:
This is an interesting idea, I'm assuming it can be done though don't really know enough about the API technicalities.
However if I'm stopped from including @NAME in my tweets can I still share their tweets as a link? Currently these autoembed and display as 'This tweet is unavailable' if they've (a) deleted the tweet or (b) blocked me. By that I mean copying and pasting their tweet as http://twitter.com/NAME/alphanumeric0000
Also if I can't type their @NAME I can still type NAME. Even if it's not a clickable link it's sufficiently informative for someone else to retweet my unclickable "hey pile on to NAME" tweet and comment that "their handle is @NAME by the way" so I'm not sure how much of a barrier it would be. Plus anyone can search NAME to bring up a clickable version too.
I did want to highlight one aspect about blocking though, which is "...except the offender is also prevented from seeing your Tweets while they're logged in".
That isn't true. All third party Twitter apps that I've tested (using a spare account on which I've blocked myself!) including Echofon, Janetter and Osfoora on iPhone and Tweetdeck on desktop (others have told me it's the same with Fenix for Android) show all tweets AND profiles of anyone that's blocked you. Official Twitter apps (Twitter for iPhone, Android and desktop twitter.com) won't show profiles (instead displaying the 'you're blocked' note) but searching for tweets SENT to the blocker lets you click on any reply and see the full conversation unfold (including the tweets from the person that's blocked you) thanks to threaded conversations.
In short blocking does absolutely nothing to stop anyone from seeing anyone else's tweets, whether or not logged in, if the account doing the blocking is public. Of course people can toggle between different accounts on phone apps and Tweetdeck and they can log out as well.
I wish Twitter made this a little clearer to users.
Terence Eden says:
You are quite correct. It is up to the developer to enforce the blocking. Something Twitter really ought to rectify.