5 ms·
Are relative paths supported? Probably in this day and age it would have better chance at adoption if it would be a JSON file. It's just network effects.
by hawski 10y ago
Are relative paths supported?
Probably in this day and age it would have better chance at adoption if it would be a JSON file. It's just network effects.
- deleted 10y ago[deleted]
- StavrosK 10y agoNot yet, but great idea, I've added it, thank you! YAML is a superset of JSON, so the file can look like JSON if you want, although that's not mandatory. I don't think there are many languages that don't support YAML these days, and one of my goals was to make the format not-entirely-unreadable by humans.
- masklinn 10y ago> I don't think there are many languages that don't support YAML these days YAML is a big and complex format though, libyaml's header is bigger than the entirety of libtoml. I think hand-editable playlists are a good idea, just not a fan of yaml.
- StavrosK 10y agoHm, yeah, that's true, and I see your point. Right now I think the benefits outweigh the costs, but I'll definitely think about this (for embedded players, etc).
- TazeTSchnitzel 10y agoAnother consideration is that yaml's sheer complexity creates more possibilities for interoperability issues. No two parsers for JSON behave identically, let alone for something as large as yaml.
- StavrosK 10y agoYeah, I looked at pyyaml's documentation last night while writing pls2upl, and the format is so complex that this looks like it's going to be a clusterfuck. I'm thinking of switching to JSON in the end...
- hammerandtongs 10y agoIn practice there aren't many languages that support anything more than yaml 1.0 from my last look a few years ago. Ie yaml isn't nearly as supported as it looks once you start actually trying to use it between languages with anything more than 1.0 as most of the purported library support seemed to be roughly 2009 abandonware. Yaml also precludes easy https://www.sqlite.org/json1.html https://www.sqlite.org/json1.html and postgresql jsonb etc. Not to mention trivial js consumption of the file. Superset or not, Yaml automagically introduces bugs to and from json through the magic powers of more lines of code involved. Most projects would have a hard time not having a json library these days? I've not done a survey of music apps though. In practice, as someone that has been vim/emacs for a few decades I'd put a low priority on yaml vs json text editability. They are about the same for changing a few characters and I'd probably use orgmode+ python to do anything non-trivial but not full program(and probably drive the transform via json data from somewhere...). In 2017 yaml doesn't seem tasteful for this format.
- StavrosK 10y agoReally? For me, editing JSON is always a chore, because you have to match the multiple nested brackets, otherwise your whole file is invalid and you get to have fun finding out what you did wrong. YAML, in comparison, can be visually inspected quickly. However, with all the apprehension in the thread, I'm rethinking this decision. Maybe TOML would be better?
- hammerandtongs 10y agoPretty printed json isn't too bad, but I intentionally never bulk edit it. This format shouldn't end up heavily nested anyway? Toml is nice for simple configs/Cargo.toml but I think everything I said basically applies to it as well. Toml has recent work on it in 2017 for some (but not broad) library support but what does it look like in 2024?
- StavrosK 10y agoYeah, good point (plus it's not fantastic for this project anyway). I'm going to think hard on this, I quite like YAML...
- zeveb 10y ago> Probably in this day and age it would have better chance at adoption if it would be a JSON file. It's just network effects. And here I was feeling badly for thinking that it'd be better as S-expressions! I wasn't going to post that, but since you already did, here's the same example in the original YAML: --- format: UPL1 name: Favorites id: 2b43009f-d6a6-4f00-8533-09a9a73d8b54 entries: - artist: Anciients title: Following the Voice duration: 408.764081632 ids: sha2: e577cce68a69735acccd5d8603b3e663f6aa5bc9 sha3: e577cce68a69735acccd5d8603b3e663f6aa5bc9 mbtrackid: b00a2b97-53f1-485a-9121-1fe76b55e651 filepath: Anciients/Following the Voice.mp3 uri: nfs://example.com/music/ftv.mp3 as JSON: { "format": "UPL1", "name": "Favorites", "id": "2b43009f-d6a6-4f00-8533-09a9a73d8b54", "entries": [ { "artist": "Anciients", "title": "Following the Voice", "duration": 408.764081632, "ids": { "sha2": "e577cce68a69735acccd5d8603b3e663f6aa5bc9", "sha3": "e577cce68a69735acccd5d8603b3e663f6aa5bc9", "mbtrackid": "b00a2b97-53f1-485a-9121-1fe76b55e651", "filepath": "Anciients/Following the Voice.mp3", "uri": "nfs://example.com/music/ftv.mp3" } } ] } And as S-expressions: (playlist (format UPL1) (name Favorites) (id 2b43009f-d6a6-4f00-8533-09a9a73d8b54) (entries (entry (artist Anciients) (title "Following the Voice") (duration 408.764081632) (ids (sha2 e577cce68a69735acccd5d8603b3e663f6aa5bc9) (sha3 e577cce68a69735acccd5d8603b3e663f6aa5bc9) (mbtrackid b00a2b97-53f1-485a-9121-1fe76b55e651) (filepath "Anciients/Following the Voice.mp3") (uri nfs://example.com/music/ftv.mp3))))) I wonder which in general people think are prettier.
- StavrosK 10y agoFor me, it goes YAML, S-expressions and JSON, in order of prettiness.