A continuation of Where does data live on your filesystem?
Inspired by the Cambria talk Project Cambria Overview with Geoffrey Litt and Peter van Hardenberg
Goal:
Easily use different apps for the same data.
Webnative SDK
To encourage data reuse in apps, we figured the webnative SDK would benefit from common paths such as:
playlistPath = webnative.common.audio.music.playlists(
"Feel Good Songs.m3u"
)
With that reasoning, would it make sense to have the schema in the SDK as well?
webnative.common.audio.music.playlists.schema
Or does our original idea make more sense? Using the schema of a specific app.
/public/Apps/Published/APP_NAME.fission.app/schemas/playlist.json
Iâm not sure. I think we should support this as well, we canât possibly add all schemas to the sdk.
Changes to the schema
Assuming the schema never changes, weâd have to account for schema changes somehow. We could do that by using GitHub - inkandswitch/cambria: Schema evolution with bi-directional lenses. lenses.
Tricky thing here is, where do we store these lenses? Different applications will have different needs, and thus different lenses. What if we stored the lenses, or json patches, along side the data?
That way apps can revert the data back to the common schema, or perhaps a common lens (I think the cambria lens graphs make this possible). Apply their lenses, and then store the data and the lenses they used.