I found a curious little bug and I’m interested in who you think should take responsibility for it.
My mobile network provider sent me this message:
I clicked on the link, and got this error message from their website:
The error is caused by the trailing full-stop.
Remove the full-stop and the page loads.
There are four potential culprits here…
Virgin Media’s Web Team
Should their website handle stray punctuation at the end of a URl?
Most webservers can be configured to take users to the page the server thinks they intended to go. This is mostly useful behaviour, but occasionally falls foul of the common DWIM (Do What I Mean) problems.
Even if the web team don’t redirect, they should notice the elevated number of 404 errors and investigate the cause of it.
Whisper Systems’ Signal App
My SMS app should parse URls without trailing punctuation. It is rare that a URl will deliberately end with a punctuation mark. This issue has been raised with the team before.
Apparently, according to the developers, this is a problem with Android’s native library
Android’s URl Parsing Library
The same question as above. Android has a built in Web URl regular expression. There are reports that it is inconsistent in the way it parses URls.
A URl which ends with a full-stop is valid. There is a semantic difference between
But the RFC doesn’t take into account how humans actually communicate.
If I send a message saying “visit example.com/go, then example.com/next!” do I really mean for the
! to be part of the path?
I can’t find any evidence of Google testing this feature with users, nor a test suite to show people what URls are and are not matched.
It appears that the library only includes the punctuation if it is the last character in a string.
Virgin Media’s Marketing Team
These are who I think the real villains. Software has bugs. Part of any communications strategy is to test your messages to see whether they work. Not just as calls-to-action, but whether they actually work.
In this case, Virgin should have tested their message on a range of handsets and popular SMS apps. If they had tested the end-to-end journey on Android, this wouldn’t have happened.
There’s no point me asking Virgin to fix this. They have dreadful customer service and seem content to have a crappy user experience.
It’s not Signal’s fault that Android’s parsing is buggy. Both Signal and Telegram greedily gobble up the
. and treat it as part of the link. Interestingly, WhatsApp doesn’t. I assume WhatsApp uses its own library.
So, I’ve raise a bug with Android where – no doubt – it will languish untouched for the next hundred years.