I have no horse in this race, and, thus, no valid opinions on the Spotify/Apple spat.
However, I have written a few Watch apps.
It’s quite difficult, and there are severe limitations, due (I suspect) to power-saving and limited display size stuff (in addition to all the private SDK restrictions, and privacy/sandbox safeguards that all Apple platforms have). The SDK is frustratingly hobbled, and the Watch, itself, wasn’t really (in my opinion) usable, until Generation 4. Nowadays, I see them everywhere (but I live in a fairly affluent area, so I see Apple kit all over the place).
I can’t imagine hybrid apps (like Ionic or React Native) working on the Watch, so it needs to be done in native Swift and/or ObjC. There’s actually a dearth of true native developers (I am one, and find it difficult to connect with others that I can talk to).
I mean I totally get that the watch is a constrained environment and you can’t just slap Electron on it and call it a day or whatever. I have also worked with the SDK and I agree it’s quite limited.
But we’re not talking about a fly-by-night startup - Spotify has a good deal of resources and the requirements for their application are pretty straightforward. Yet every single time I use it it fails in some stupid, unintelligible way. It has a couple of very obvious race conditions in the UI, and it took years to get to this state. I have some sympathy for the difficulty of the implementation but at this point it’s a bit of a joke.
There was a third party developer who made a Spotify app for the watch. Spotify hired him and then dragged its feet for 2 more years. Even now there are third party apps that perform better than Spotify. I think Spotify is finally releasing a decent app but they’re absolutely not without sin in this fight. Even after Apple added some functionality they wanted they didn’t want to build anything because that would’ve made their case weak. They put their petty grievances over caring about their loyal customers.
> They put their petty grievances over caring about their loyal customers.
Could that not also be used to describe Apple's business practices, who forces Spotify to charge higher prices on their platform? Or their move to block Epic Games from releasing their own software storefront? Or how they force people to use a single browser engine?
Petty grievances make the world go round, friend. If you want to throw stones at Spotify though, I should first warn you that your glass house is awfully fragile.
> Could that not also be used to describe Apple's business practices, who forces Spotify to charge higher prices on their platform?
And you could also get a subscription at the lower price by going directly to Spotify. How is this any different than any other product that you can get at a lower price by going directly to the vendor?
Can I put my (hypothetical) music on Spotify without them getting a cut? Hell I can’t even subscribe to a podcast by entering the feed url manually with Spotify’s “podcast player”.
> Or their move to block Epic Games from releasing their own software storefront?
There's a big issue with the reliability of communications between the phone, and the watch.
We can't assume that communications will happen in realtime. Even Apple's apps have some weird lag, and unpredictability. It's far better on the newest Watches. I've watched it improve, over generations (I currently have an 8, but my earliest one was a 2).
Any app that requires realtime sync with the phone is gonna have issues (I have tried writing them, and learned this, the hard way).
> the requirements for their application are pretty straightforward.
Surprisingly, not entirely straightforward. Source: working at Spotify.
Should the app be better? OF COURSE. But the scenarios it can be used in can be weird and complicated by legal matters.
If a user on free tier joins a group session over wi-fi at a friend's house, when the friend has premium subscription, what happens to queues, song skips, and what status is displayed on which devices? :) Note: even getting the device name is often tricky.
And there are hundreds of such use cases per device because different devices have different capabilities and limitations (on some devices you don't even have control over the UI presented to the user).
Without revealing too much, there's an ongoing work to make this stuff better, faster, more seamless, and from personal experience Spotify has been better across devices in recent years. But... It's still weird, brittle at times, and takes time to propagate to some devices and apps.
But it should get better (don't quote me on that :)) )
I really do appreciate your view and want to stress that it’s not a personal attack on you or any other engineer at Spotify. Like any software project it’s very easy for someone outside to point at it and say “this is simple and you are bad for not doing better”, and that rarely reflects the complicated reality.
But the flip-side of that is that every single time I try to use this software—something I fork over money for every month—it fails in some baffling, opaque way. At that level it’s more of a management and prioritisation issue - this is exactly the sort of thing that is likely to make me throw my hands up and switch to an alternative.
It's weird that it actually fails in some ways, and constantly. But then, I myself use it only as a background music player during the week, and as a podcast player in my car, so I definitely don't use it in a variety of scenarios.
> At that level it’s more of a management and prioritisation issue
Actual failures are tracked and prioritised. Sometimes the fixes don't get propagated to all systems quick enough, or they are deprioritised because there's something that affects an even larger number of users (it could be anything from parity of features to bugs to certain behaviours).
Also, and I suspect that you would know better than I, there's usually an issue with The Corporate Library, in $BIGCORP.
Most corporations, over a certain size, tend to develop an internal SDK/dependency, that needs to be reflected in all their software. This can bring all sorts of issues.
However, I have written a few Watch apps.
It’s quite difficult, and there are severe limitations, due (I suspect) to power-saving and limited display size stuff (in addition to all the private SDK restrictions, and privacy/sandbox safeguards that all Apple platforms have). The SDK is frustratingly hobbled, and the Watch, itself, wasn’t really (in my opinion) usable, until Generation 4. Nowadays, I see them everywhere (but I live in a fairly affluent area, so I see Apple kit all over the place).
I can’t imagine hybrid apps (like Ionic or React Native) working on the Watch, so it needs to be done in native Swift and/or ObjC. There’s actually a dearth of true native developers (I am one, and find it difficult to connect with others that I can talk to).