The Synergy 3 Alpha 1 launch: A developer retrospective
It has been in the works for several years, and wow has it been a struggle, but on January 17th 2022 we finally launched our very first version of Synergy 3, called Alpha 1. UX design was our primary focus (thanks Simon for your excellent work) and we think it turned out great. Over the last few years, Synergy users have been signing up to become alpha testers for what we were calling "the next major version". For the first alpha launch, we decided to pick 10 alpha testers at random to try out the first version, and so far we've had some extremely valuable feedback.
How it's all put together
First, a bit of background. Synergy 3 is made up of 3 components:
- The existing Synergy Core (this makes up most of Synergy 1 and is written in C++)
- A temporary prototype Node.js service written in TypeScript
- Our new Electron configuration GUI (graphical user interface) using React
For those who really don't want to use Electron (we get it, Electron is quite a heavy framework), we'll be including the old Synergy 1 GUI as Synergy Classic. However, we're going to take a more technical direction with Synergy Classic, since those who will be using it will likely be highly technical individuals.
So, how'd the user testing go?
Feedback ranged from "it just works", to "I get an error code" which is pretty much what we expected. A few users managed to install without a hitch, and were going within minutes which is a far cry from what most people experience with Synergy 1. This was the whole design philosophy of Synergy 3; we wanted people who either didn't have time or experience to poke around with settings to be up and running in minutes. But, crucially, those who do need to unlock advanced settings, well it's all there now for them to tinker to their heart's delight (unlike Synergy 2).
The main problems we uncovered (and prioritized) were...
macOS accessibility security UX issues
Well, this is a bit of a minefield...
Apple wants to protect their users from malicious software such as keyloggers, and make sure privacy is protected too from things like malware. That's fair enough. But, it makes life difficult for users who want to use productivity tools such as keyboard and mouse sharing apps, remote screen viewers, and so on. So, as the developers of such an app, this means that we need to work hard to create a good UX (user experience) when it comes to adding our app to the macOS accessibility security settings.
That's a big challenge. The Apple design guidelines say something along the lines of "just prompt the user with the standard dialog" (but the user isn't entirely sure why they need to do this, and it can be a bit scary the first time... but I suppose that's the point). This actually worked OK-ish for Synergy 1, but we still get support tickets about this.
Many apps have solved this by providing a help screen that guides users (or, rather, teaches users) how to use the macOS accessibility security settings. We may end up doing something like this to improve the UX for our less experienced users.
Oh, and we also managed to get macOS working on the login screen in Synergy 3, which is brilliant. However, this only works if you don't have FileVault enabled. We're not sure if it's going to be possible to run Synergy at macOS login if you use FileVault, but we'll sure try.
The service needs to be installed on Linux
Ok, so the original plan was not to release Alpha 1 for Linux, but at the last minute we decided to see if it was working on Linux and (with typing in an extra command) it worked brilliantly!
So, since Synergy 3 now runs as a service on every OS (much like Synergy 2 did), it's essential that our Linux installers create the needed systemd files, to automatically start Synergy on boot (which will be optional, of course). Our aim is to get it working at the login screen for every OS (again, optional). So far we managed to successfully do this for both macOS and Windows, but Linux is the final challenge (we've done a bit of research into this in the past, and it seemed doable).
Windows C++ redistributable needs including
Ah, this was an obvious mistake. We simply forgot to include the redistributable. This is an optional extra that Microsoft provides, so that you can install the libraries needed for certain C++ applications to function properly. Why they don't include it in the OS is a bit of an interesting case, but you could suppose it's to reduce the installation footprint or reduce conflicts. I'm sure someone has an explanation for this, but in any case, the developer either has to tell the user "Go install this redistributable" or you can bundle it in with the installer (which is what we do in Synergy 1).
What's the plan for further testing?
Ok, now that we have that valuable feedback, we've already started fixing those exact issues. Our plan is to release a hotfix for Alpha 1 and invite 10 more random users who signed up to our alpha testing list. This is to make sure we've figured out the macOS accessibility security UX problem, that the Linux service installs, and that the Windows redistributable is good to go.
If all goes well with the hotfix, we'll move on to Alpha 2 which will include a significant rewrite of the service (as mentioned, using either Rust or Go to replace Node.js). At the point of releasing Alpha 2, we're planning to invite 100 alpha testers from our list to make sure the new Rust/Go service code works as well as the Node.js code.
When will Synergy 3 be in beta?
In case you're unfamiliar with the terms "alpha" and "beta": Right now, Synergy 3 is in alpha, which means that the new code is really buggy and likely to break. It's the part of development where we're still mostly adding features and enhancements to get the UX right. It's what we call "bleeding edge". The next stage from alpha is "beta", which is where we stop adding new features in, and start polishing the code, fixing the final bugs, getting it ready for public release.
Right now, we're optimistically expecting that we might have a beta by June, but plans change, so don't hold me to that.
What if I'm already an alpha tester?
You'll stay on the journey with us, getting every hotfix, new alpha and beta version. We may need you to run some extra commands between updates though.
Will I get a free upgrade to Synergy 3?
A year is quite a long time away and we're still planning, but for now, the plan is to give Synergy 3 to all existing Synergy 1 customers as a free upgrade. But...
That said, we're planning on introducing an optional maintenance license soon. From the date we roll out the change, new users (not existing Synergy 1 customers) will have the option to pay a small yearly maintenance cost to get access to latest updates (and the 1st year is included for free). Synergy customers who purchase before the introduction of maintenance licenses will get updates forever. If the new users chose not to pay for a maintenance license, they'll still get download access to the version of Synergy that they paid for (but not the latest updates). We'll host the version that the user purchased, for at least the next 10 years from when they purchase, but we'll try to host that version for longer if we practically can (and if there's enough demand for it).
What does that mean for Synergy 3? Well, if you buy before the maintenance license comes in, you'll get Synergy 3 for free. If you purchase after the maintenance license is introduced, you'll need to make sure you have an active maintenance license (which will be renewable 1 year at a time).