State of world
data is siloed and trapped inside services
Personal data is in a sad state these days. Let me elaborate.
- convenience of access
- searching data (single source)
- data ownership
- local data access (offline) is important too
- over-reliance on company-made design/interfaces
- backups are non-existent
Imagine if all of this was on your fingertips? If you didn’t have to think about how and where to find information and could just access it and interact with it? If you could let computers handle the boring bits of your life and spend time on fun and creative things?
what is desired
“Easy” is used here in two senses:
easy for humans to look at and browse through
This bit is hard in practice as (typically) the more machine friendly something is, the less human friendly it’s.
easy for programmers to manipulate, analyze and interact with
Let’s concentrate on this part for now. If this is solved, it automatically enables programmers to develop human-friendly tools. In addition, playing with data and building tools on it feels fun as it is (unlike getting the data).
why its hard
- rate limiting
- error handling
- abstract representation
Now, remember when I said it was tedious for programmers? Constant boilerplate, shitty APIs (you’re lucky if the service offers one at all), latency, flakiness, having to code defensively, etc. Now think about ordinary people who have no clue what 'API' is. They deserve to use their data too.
- it’s possible that coda can actualize this…
I’m suggesting a data mirror app which merely runs in background on the client side and continuously/regularly sucks in and synchronizes backend data to the latest state.
### ¶unsolved problems
- deleted content
- synchronizing data
- it’s assumed that these tools/integrations are open source and running on computers you own.
What to do?
- regular data exports
- package to access data
- export layer
- deal with exporting raw data from service
- data access layer (DAL)
- deserialize export script output and provide minimalistic data bindings
idea of adversarial interoperability