There is a new version of Signal out for iOS, that now includes the TextSecure messaging protocol. This means there finally is a free, open source, messaging system that allows users on both Android and iPhone to exchange messages securely (and also make secure phone calls, by the way). This is a big deal, and I am really happy about it. What I am really upset about though is the horrible user interface of Signal on iOS.

It could have been so easy. Simply mimic the user interface of a well designed messaging app, like iMessage, and perhaps change the overall colours to clearly signal that this is the secure Signal app, and not iMessage itself. Integrate a similarly well designed and often used phone application, and voila: you’re all set. I really do not see a need to design a completely new interface for an app that is so similar to what many people already use. By copying the design you make it dead easy for people to switch apps. But apparently the Signal developers saw that need, and decided to do everything differently. With, in my mind, horrible results…

When you open the app, you see a list of ‘conversations’ in the home screen. If you have no previous conversations, that list is empty. At the bottom there is a large blue dot, and a grey dot with a checkbox… First confusion: what do these two dots mean? Second confusion: I expect to be able to make a call or send a message. In other words, I expect to see an envelope icon and a phone icon that I can press to start the job I opened the app for. These icons are not there… Instead I am supposed to either tap the “+” (to create a new conversation), or tap an existing conversation and start what I want to do from the selected conversation. Third confusion: there is no “edit” button that allows me to enter edit mode to edit conversations.

The two dots at the bottom select two screens of conversations, and I can swipe individual conversations to move between those two screens. (It is counter-intuitive that I have to swipe right to move the conversation to the left screen.) It is unclear what the purpose of moving conversations like that is…

When tapping the “+” on the home screen, a selection of your contacts that have TextSecure, Signal and/or RedPhone installed appears. This is nice, because you quickly see which contacts you can reach through Singal, and how. This screen is called “new message”, which is confusing because you can also make calls from here. There is indeed a phone icon next to a name that has the appropriate app installed to receive encrypted phone calls. Great. But where is the message icon that allows me to send someone a message? It’s not there… Ah, I have to click the contact name to create a new conversation that allows me to send messages (and make calls). Again confusing, because I would expect a screen with detailed contact information to appear when I select a name in the contact list. This function is, as it is currently designed, not accessible from this screen.

This function is in fact only available when you tap and hold the name of user in a conversation log. When activated, this displays a user fingerprint screen. If you haven’t sent a message to or received a message from this user in the conversation yet, it only shows your fingerprint (with an option to display it as 2D barcode). You cannot scan a user’s fingerprint in this case. Only after you have sent (or received) a message, the user fingerprint screen also displays the other users’ fingerprint, with the option to scan it from a 2D barcode. This is weird: you first have to trust a user and send or receive a message before you can verify his fingerprint…

If you tap and hold your fingerprint in this screen, it asks whether you want to shred all keying material! Why is this function implemented here, in this screen, and not in settings? And what does ‘all’ mean? All users? All your keys?

I had other gripes when I tested the app further. For example, when you create a group, it sends a message to the group members. (I was happy I created a group of a few friends, that didn’t mind this.) Apparently, when I create a group, I create it for all group members, and all get to see the same group. A confirmation before actually creating the group would be nice, in this case (including an explanation of the consequences of that action). Message order appears to be determined by the local clock of the sender: if the person you communicate with has a clock that lags behind by a few seconds, the messages in your view of the conversation are in the wrong order. In settings, the debug log is on by default. Why? And I can not view my full fingerprint under settings, only copy it (to paste somewhere else). Finally, there are implicit active regions that you can tap to perform an action. These regions don’t show a clear visual clue that an action can be performed by tapping. An example of this is the name of a conversation, that can b e taped to toggle between name and phone number, and can be tapped and held to display the fingerprint screen. It took me a while to figure this out…

It’s a shame. I really would like to be able to like Signal. But it’s so poorly designed, that it is really hard to like…. And signal is really not the only app at fault here. Many privacy friendly or secure apps are poorly designed. We really need to change this!