App.net is a freemium, paid alternative to Twitter. (Need an invite?) Many third-party Twitter developers released App.net versions of their software when Twitter changed its API policies1 to prevent unofficial Twitter clients from gaining popularity2. Understanding that adoption of App.net would take time, many App.net clients allow users to post simultaneously to App.net and Twitter.3
However, seemingly small differences between App.net and Twitter have resulted in a suboptimal user experience when using the cross-posting functionality. There are two primary differences between the services that App.net clients must account for when cross-posting to Twitter: maximum status message length and how URI length is calculated.
App.net supports status messages up to 256 characters. Twitter only supports status messages up to 140 characters. When a status message exceeds 140 characters, App.net clients must decide how to proceed.
Some App.net clients abandon the user.
The second difference is in how Twitter counts the number of characters in a link. Regardless of actual length, links on Twitter count as 22 characters (or 23 characters if the link uses HTTPS)4. Twitter, behind the scenes, converts all links to its t.co link wrapper. Even though Twitter displays links as they were originally shared, when you click on a link from Twitter, you can briefly see a t.co link redirect your browser in the browser’s address bar.
None of the App.net clients that I have used accommodate Twitter’s link length calculation. Ignoring how Twitter counts the characters in a link results in original links shorter than 22 characters being undercounted by the App.net client and the Twitter API potentially rejecting a status message for being too long. It also means links longer than 22 characters take away more characters than necessary from the rest of the status message.
This suboptimal behavior has led to me, as a user, untrusting of the cross-posting feature. My workflow currently looks like this:
- Composing status messages in a Twitter client (usually Tweetbot to check for proper length.
- Copying the text from Tweetbot.
- Pasting into an App.net client (usually Wedge on my Mac and Netbot on my iPhone).
- Verifying that the total character length with actual link length is under 140 characters for proper cross-posting to Twitter because the App.net client doesn’t consider Twitter’s link calculation. And because App.net clients only show remaining characters in a status message, I have to do the math “256-140=116” to know if I’m within Twitter’s character limit.
- Submitting the status message in the App.net client.
- Double checking the status message appeared properly on Twitter because I don’t trust my math.