-
Notifications
You must be signed in to change notification settings - Fork 0
Description
When users can bring data into a system but not get it back out, trust erodes even if the system works well.
Observed behavior
This isn't specific to Jellyfin, but just where I observed it last. It can import .m3u files (yay!), but it only does it once, and it apparently has to be after the music library is there. First, that's a terrible decision because it means it's for people who are just now setting up a music server, not people moving to their ecosystem.
On a wider viewpoint, many apps will import a file, and it's a temporary source of truth, but they won't update, and they won't export back to that format. If a system imports a file format, it should export the same format.
Why this is a problem
The real issue is, the app was designed to treat these m3u files as disposable, single use, not a source of truth. This thinking is fundamentally flawed because if the files are good enough to update the internal data once, they should be good enough to import always. Granted there is a sync issue, m3u files or internal database - but that should be left to a user decision, not an app developer's decision.
Constraints / tradeoffs
- Conflict resolution UX
- System has to be designed to accept this input from the beginning, not a retrofit
- Retrofits with the incorrect design pattern make using this external data nice and neat nearly impossible. That's when it's time to run a bulldozer through the codebase, lol!!
What success might look like
- App developers need to look at industry-use files and treat them as a way people can & will export from one app to your app and one day may use them to export from your app. As developers, we are simply tool makers. If we make tools too hard or complex to use, our tools won't be used. We only retain so much leverage on keeping people using our tools, but a format-symmetry issue is trying to beat users into submission. It's signaling the road in is smooth and easy, but getting out is hell.
Non-goals
- This is not a feature request
- This is not a proposal for implementation