Replies: 4 comments 24 replies
-
Point 2 is not really true with the way they are defined. By embracing optional yet properly documented API it's easier to adapt to different server needs and possibilities. Not all servers will have the internals to support everything. Current Subsonic API is already not properly implemented by all servers so requires tweaks and tests. With the extensions it would not be the case. The main issue if a V2, beside the amount of work and less server following, is that the optional concept still needs to be fully implemented. Not all servers support podcast or music videos or many other details. If there was to be a V2 I would fight for it to support differential sync, that require many internal things on server side. Anyway if for a V2 devs needs to check error codes everywhere to see if API is implemented this is not really better than the extensions. So yes a V2 would be nice for many reasons, but If we want to move we will need to be pragmatic. Most servers and clients won't have the resources. And if not enough emulsion at the start the spark will die sooner than later. |
Beta Was this translation helpful? Give feedback.
-
I don't want to opine too strongly one way or the other, but I think a big part of the decision to go V2 or not would come down to the changes we want to make to the existing API behavior, and how many of them require new endpoints vs can be done with tweaks. It's usually easy enough to add things in a backward-compatible way. If we have a lot of things that require new endpoints, then V2 could be the best option. To that end, here are the existing things I think are broken with the current API:
Any others anyone wants to add? |
Beta Was this translation helpful? Give feedback.
-
Actually, now that I think about it more, there are some additive things that might be hard to shoehorn into the existing endpoints. E.g. Navidrome is starting to have the concept that a single album can have multiple issues (or editions, or whatever you want to call it). Figuring out how to do this with the current endpoints could be messy and might be best done with a whole new object model. E.g. in Discogs, an artist's discography is a list of master releases, each of which has individual issues of that album as its children. |
Beta Was this translation helpful? Give feedback.
-
I would prefer extension now and breaking later. Clients should have the minimum of disruption to incentivise support for new features. |
Beta Was this translation helpful? Give feedback.
-
Preface
I've been following the discussion over on the Symfonium forums and saw that most of the votes went towards the
optional extensions
. I'd like to see if there is any will for client and server owners to reconsider to move to 2.0.Rationale
extensions
would be optional to implement by server owners, clients need to perform checks on each of the endpoints to see what is implemented or not. This may lead to user-experience disparities between servers and also relies on the client owner to have to individually test each server to see if features are implemented uniformly.GET /api/library/albums
instead ofGET /rest/getAlbumList
DELETE /api/playlist/1
instead ofGET /rest/deletePlaylist?id=1
End
I understand this may be a larger burden on both server and client owners, but I believe it would be worth it especially since these upgrades will likely be the new standard for many years to come.
Let me know your thoughts on the above points and anything else I may have not considered.
Aside: @spl0k also made good arguments towards moving to 2.0.
Beta Was this translation helpful? Give feedback.
All reactions