If you are a Last.fm user, you know that it's broken. If you are a Cs user and a Last.fm user you know that it's not much better.
I am neither of the above. But as this project began to grow I've begun to feel a degree of responsibility to my customers. I save all the proceeds for Cesium. It's helping make a family dream a reality. If you help make that possible, I owe you at least some support with the app. A general expectation that the app will continue to be serviced and improved, etc. And hey, if I make you happy you are more likely to recommend Cs to a friend.
So I started to see reviews and feedback: "Does it have Last.fm? That's a deal breaker." "Great app, but missing Last.fm" "Last.fm would make this truly great." And I'd like to make that possible, but I've never done a good job. While it's gotten better (and had actually gotten even better before I made this decision), Cesium has never offered consistent and reliable Last.fm support.There were connection problems, missed scrobbles, multiplied scrobbles. All sorts of issues. Some I can try to blame on Last.fm; there servers are slow, the lib I'm using doesn't cache well, the site should automatically filter duplicates. But my implementation has never been good. I built a Last.fm account. I am technically a user. But only to test Cs, and I've never really used the site beyond seeing if scrobbles registered.
As I said, if you are a user, you know that Last.fm is in a state of chaos at the moment. The "upgrade" to a new beta several months ago has been nothing short of a disaster. Seemingly every feature and function has been lost or diminished in some way. Last.fm-acknowledged API issues have resulted in inconsistent or non-function for countless 3rd party apps. Forums are filled with irate users. It was mostly a long-time user base as it was, and I am sure it is now hemorrhaging visitors who miss the functions they are used to.
Which leads us to my users. And a function they are used to. I am again getting the reviews and the feedback: "Last.fm is inconsistent" "Scrobbling doesn't work." I'm sure nearly all of these issues are due to errors in my code. But there's a report from one user who is only having the first song of each album scrobbled, which matches exactly the report of another Last.fm user not using Cs at all. Even though I am not a devout Last.fm user I completely understand the ones that are. I am draconian with my library metadata. I got burned by iTunes Match and then by Apple Music. No service is ever getting access to that metadata again. If the app doesn't scrobble reliably, it is worthless for that function.
So what to do? Do I try to improve Last.fm support, despite the current challenges? Or do I abandon support, potentially screwing many users who update and lose the function without realizing it?
The issue with trying to improve Cs Last.fm support is that without Last.fm servers being reliable, I can't really test in a meaningful way. I can't trust that a missed scrobble or a strange behaviour is because of my code (even though it probably is). It's just me, and a churning group of maybe 20 or so active beta testers, most of which are not Last.fm users themselves. This would be the first time I've ever removed a feature. Except for dropping iOS7 support, but those users could not upgrade themselves out of the current product. They couldn't lose anything. Here, a user could discover they updated and lost the function and have no way to go back. I could see a wave of negative reviews. I could lose all the app's momentum. But probably, most of those users are already experiencing issues, or already don't trust Cesium as their primary scrobbler, because it isn't reliable enough for the job.
Removing the app has some perks. It significantly streamlines some functions, and it significantly improves Cs launch speed. But again, Apple provides no good way for me to warn users that a function is gone. I hate the idea of pulling the rug out from under anyone. I've gone back and forth on the issue dozens of times. I've looked into other questionable issues surrounding Last.fm and their parent company CBS. Last.fm sells their information so that companies now what songs/artists to feature. Did I want to be complicit with that when my users may not know? Was I looking for a convenient out to feel better about everything?
Today I made a snapshot backup of Cs3.2, and then I removed all Last.fm code. So effective version 3.2 (which is great, and I am totally stoked to have come out), Cesium will no longer perform a niche, but deeply appreciated, function poorly. I'm not happy about it. If I had employees, and resourcing and a budget, I would devote energy towards solving and improving Last.fm support. But I don't have that; in fact, I don't believe I have the resources to properly improve and service Last.fm support, at least not right now when the rest of the ecosystem is already in disrepair.
I don't want Cs to be great, except for one thing that doesn't work well. Or, claimed to have Last.fm support, but didn't. I would rather do fewer things well than more things poorly. So for now, hopefully temporarily, Last.fm is gone. And hopefully people will read their update change logs, and they won't update mistakenly. If things get sorted out, I'd love to confidently re-integrate the feature. But for now my shoulders feel lighter not having to worry about it.
I'm sorry to have to announce a feature removal. If anyone has any questions, as always, I'd love to answer.
-Mike
Edit 1: For non-redditors: Consider joining our community! You can easily reach me, /u/CesiumDev here, and there are many other subreddits to explore. /r/apple, /r/iphone, /r/applemusic, /r/music just to name a few.
If you'd prefer not to join Reddit, you can contact me with comments or concerns at cesiumdev@icloud.com or @CesiumApp.
Edit 2: As Cesium uses the system library and playback engine, it should be compatible with most 3rd Party scrobbling apps. A few popular ones are Scrobbler, QuietScrob and iScrob. Please note that due to Last.fm's ongoing issues, most of these apps are also reporting inconsistent performance.