Some features that are normally "free" when you use the usual tools provided by each platform (like user-interface controls---as simple as a button or as "complex" as a scroll bar---or detecting a pinch gesture on a touch screen) can take considerable effort to implement from scratch. The benefit is that I can count on all those things working identically across all Synthesia's platforms, but there is no arguing that it isn't a lot more work than had I take a more sensible approach.
That extra work has a tendency to make me put off fit-and-finish tasks that aren't "absolutely necessary", where historically I've defined "absolutely necessary" pretty laxly as "so long as people can use it and it's not too confusing". But, I've learned via (thousands!) of emails and forum posts that sometimes my "not too confusing" isn't quite the same as yours. Once identified, it's still been easy to point to some workaround and keep pushing the fit-and-finish a little further down the task list.
I remember an outraged message from a user a long time ago that went along the lines of "it's the year 2012, what do you mean I can't resize the window?!" Of course, reworking Synthesia's UI framework to add support for control "anchoring" to support automatic resizing was a tremendous effort that was the bulk of the work required for the initial iPad release back in Synthesia 8.4. It's already there when you use OS widgets (like everyone else) so the expectation led to a lot of frustration. I agreed it was absurd that it had taken so long and felt a species of guilt that these baseline assumptions weren't being met, so I made sure window resizing was added shortly thereafter.
The trouble is that window resizing isn't the only baseline expectation not being met. There are lots of them. And now it's the year 2019.
As this project continues into its second decade of development, I've learned a lot about myself and how my health is impacted by my work on Synthesia. One example: sometimes life gets in the way a little and support email reply times can begin to drift out into the 2-3 week range. Beginning each of those messages with a heartfelt apology for the inconvenience of having to wait so long for an answer actually takes a lot out of me... so I've learned that it's very important to avoid email getting backed up.
I've also learned that answering one of these "it's year X, what do you mean you can't do Y?!" with "I'm so sorry, that's been on the list forever now and we're hoping to get to it sometime in the next 5 years" when Y is something perfectly reasonable in every other app, it also takes a lot out of me.
I don't like it.
So, for my health and my pride in my work and the improved user experience and ten other good reasons, I've decided those things are more important than I've been giving them credit and I should add them sooner rather than later. I suppose I've already been doing this a little: the sheet music display was/is one of the worst, most embarrassing areas, prompting the multi-year Synthesia 11 effort. That's a huge project though and the other problems have had to sit and wait far too long (leading to more apology emails and general wear-and-tear on my person).
So, the new goal is to work (at least) one of these into each dev preview and to have more frequent previews than we've ended up with these past few years while we're at it.
In no particular order, here are the outrages, most embarrassing bugs, and outright confusing (lack of?) features that I've been able to identify so far:
Sorry, that's been on the list forever and we hope to add it soon...
- The sheet music is terrible.
- The song list doesn't show new files until restarting the app.
- The song list completely buckles under the weight of ~500 or more files.
- There is no way to create a simple song / there is no way to save your output in Free Play (ten years into this being the most frequent email we receive, yes, I've changed my mind!)
- 10.6: "What do you mean I can't use Ctrl-V to paste my short code into the box?"
- On some computers, very rarely, data is written incorrectly when the app is closed, leading to data loss and error messages.
- Data is only written when the app is closed, so a crash at any other time means all new data from that session is lost.
- The video on the front page of the website is a joke: eight years out of date, showing features that haven't existed in four.
- 10.6: Dragging the app between a Retina and non-Retina monitor leads to a useless, double-size view of one quarter of the screen.
- There is never an excuse for a single dropped frame during play; Synthesia knows everything about a song in advance.
- High mobile power usage because we're wasting 95% of our effort. Synthesia shouldn't build and send the list of all the falling notes (and everything else) to the GPU every frame.
- Consuming MIDI input on the main rendering thread adds ~10ms of extra, needless latency.
- Bookmark and loop placement interactions are amateur hour.
- A surprisingly large percentage of the 1-star mobile reviews that aren't about the app's price: "The keyboard keys are way too small!"
- The song list "Search" box is actually just an in-place filter. A real search (that checks every folder and shows up on the address bar) would be more useful and less confusing.
- The guides cover only a tiny fraction of the app and there is no other source of official documentation.