Since there have been a lot of comments about what the “average” user would do, I thought I would chime in as a new user (as of this morning). Also, please read all of this as someone that is trying to be helpful, not someone that is just bitching. Hopefully I have some useful points of view.
Currently, I am using BTSync, but have grown increasingly annoyed with it over the last little while as they have expanded in directions that I don’t trust. (Like being forced to use URLs I don’t control to connect devices.) So, finding an open source alternative was exciting for me. However, I’m also finding Syncthing to be a bit more difficult to set up that BTSync. Some of this has to do with the UI, so I’ll talk about that here. (And post my other comments in a more appropriate thread.)
My use case is fairly simple. I want to keep my Keepass file up-to-date and accessible on all of the devices that I make use of. Currently, that consists of a few Android devices (tablets and a phone), a few laptops, a couple of desktops, and an embedded Linux box that I use as a small server. The second part of my use case is what I think would be most common. I don’t want Google, or Facebook, or Apple, or anyone else syncing my photos to their “Cloud” and tagging the hell out of all of my pictures to track what I am doing. But, I want pictures that I take on my various devices to seamlessly flow to a server where I can keep backups.
When I first fired up Syncthing this morning, I expected the configuration to be similar to how BTSync used to be. I would enter the big ugly strings of characters and pick the folder to sync. Then, on my test Android device, I would snap a picture of a QR code and give it the folder to use on that device for syncing. After that, it would all connect up and I’d be off and running.
The reality was a fair bit more difficult. (And, I still don’t even have a simple sync working.) From the UI perspective, I found it confusing that on the Android device there was a QR code icon that seemed to indicate I could snap a picture of a QR code rather than type in the long string. However, it took me a while to find where the QR code was in the web interface. At the same time, the web interface showed me lots of information that was marginally interesting, but not very useful for getting the actual syncing done.
Looking at the new mock-up, there seem to be some changes that improve some of the overall situation, but some things are also missing. So, here is my list of suggestions on how to improve the overall ease of use for the web interface.
-
Put the QR code used to link a phone front-and-center on the main web page. I suspect most use cases of something like Syncthing are going to be about syncing data from a phone to someplace else. (The other common use case is probably data backup.)
-
Get rid of most of the “geeky” status information. Most people don’t care how much RAM or CPU a program is using. And, if they care that much, they know how to get the OS to give them that information.
-
Give me a quick “at a glance” front page that tells which of my devices and directories are NOT synced (at the top of the list) and those that ARE synced farther down. Most of the time, when I am looking at the UI, I am wondering if my devices are all up to date or not. I want to know that quickly, and move on.
-
The small “pixel icons” that are generated for each device are cute, but they don’t really tell me anything. Aside from the fact that the Mac I installed it on generated an icon that looks like a butt, I am unlikely to remember which icon belongs to which device. I understand that a good icon can save space on a web page and increase the speed of the “at-a-glance” look, but it needs to be an icon I can relate to and easily remember. So, if that is the desired goal, let me choose an icon for each device (or at least give me the option).
-
Consider either a setting that lets you change the UI between “simple” and “advanced” mode, or putting more of the “advanced” settings in a different part of the UI. Things like the “Addresses”, “Use compression”, and “Introducer” settings when you create a device are things that are beyond the comprehension of most users, and the current default values are probably what most people want anyway. So, hide those settings somewhere. Lots of settings = scary for most people. I would say the same thing goes for configuring a folder. “Rescan Interval(s)” (arguably), “Folder Master”, “Ignore Permissions” (should be figured out automagically), and probably even file versioning should be hidden somewhere in an “advanced” settings area that is hidden from users by default. Most users just want to get a simple sync going. As they grow and learn to use the app they will start to dig for the advanced settings they want.
-
Some kind of a “quick start” wizard when the program is first installed. I think it is reasonably safe to say that when you install Syncthing, you are trying to sync a directory between two devices. When the web UI comes up for the first time, show me a window that says “Welcome to Syncthing! Let’s get started. Please select the folder you want to sync.” Then, take me through setting up my first folder, and maybe even getting the first external device configured. (What type of device are you syncing with? (Android, iOS, Windows, etc. If it is Android or iOS give instructions on how to use those versions to take a picture of the QR code to get the configuration information easily. Then, explain how you would do it again in the normal UI to add another device.) – This would be a good time to ask the user if they care about file versioning. If they do, then show those options in the configuration settings as “normal” settings. If not, move them to the advanced settings.
-
The advanced settings that can only be accessed currently through the configuration file. For settings that aren’t all about making the program easier to debug, expose them deep in an advanced settings area. I’ll probably want to play with them at some point, but my mother won’t. Clearly label them as “dangerous” (if they are) and make it as clear as possible what they do (going as far as linking to developer documentation if necessary).
-
Make it easy to figure out why syncing isn’t working. A friend of mine used to say, “When a program fails, it usually has SOME idea of why it failed. TELL ME ABOUT IT!” Right now, I have a Mac configured, and an Android device configured. Both are claiming everything is working perfectly, with the exception that both are saying “1/2” on “Global Discovery”. The “1/2” is in red text, which leads me to believe that is the problem. Is it? If so, why? It would be better if it was showing me some text that said something like, “There may be a firewall that is blocking access to the global discovery server. If you are having problems with your device syncing, click the following link for additional troubleshooting steps.” (Or, something similar when it isn’t syncing.)
In a nutshell, the UI should be geared toward the 80-90% use case. I really believe that use case is the marginally computer literate person that has a small number of devices, and a small number of files they want to keep in sync. (Although, in the case of pictures, it may be a larger number of files. But, it will still be a few hundred gigs, tops.) They don’t want to figure out how networks work, and they don’t care how Syncthing does “its thing”. They also don’t care about resource utilization as long as whatever they run doesn’t seem to have a huge impact on their device. (They view not overloading their computer as the responsibility of the developer.)