So - pretty sure I just figured out a way you could get End to End Encryption for some or all of your @RoamResearch notes - as an open source #roamjs plugin - right now.
I'll sketch the idea out in this thread, and in 2 weeks, will award 10k to those who push the idea furthest
I'll also share another big decision we've made -- this week (if God wills it, inshallah, π€) we'll be shipping the first version of #roamdepot - an easy way to discover and install themes, javascript plugins, and community developed features that have been vetted by Roam team.
The obvious move would be to have #roamdepot be a marketplace - but we want to make sure the folks building free plugins are rewarded too - so to start we'll be distributing a portion of our revenue back to plugin authors based on installs and reviews.
Ok so - quick idea for how you might make e2ee work as a plugin.
Step 1 - you have to prevent the textarea of Roam from saving - (maybe insert a textarea of your own above it) -- before any edit actions fire - you are going to run it through encryption algorithm with local key.
I know @roamhacker has done some wild stuff with simulated textareas - so if I was doing this he's someone I'd want to talk to
Possible we might need to add some stuff to our API to help, if you send me requests or questions - I'll have a call and post recording in next few days
Next step - when you're decrypting the text - you're going to run it through that cypher with the private key stored in local storage.
Limitations: if you've got the version of e2ee - you'll get no unlinked references, probably no search, query, autocomplete
Do have other ideas
One idea -- and you could totally get a proof on concept for this done with {{roam/render: }}
You have a tag like #private -- and the blocks created which have that tag - or nested below that tag - or on a page with that attribute - are not saved to the standard graph at all
Instead what you do is first those edits to a different datascript connection -- which could be local - or on a server you own -- or to just another area of our backend eventually
BUT before those edits get sent over the wire π-- and before edits are read into local state π
Beauty of @nikitonsky's datascript is you can do queries across N distinct in-memory databases -- so in theory, you could weave a few different local dbs together that have different sharing settings (provided you have access to them all)
Basically - there are few different ways to approach this -- the weak version is basically just taking the feature we already have - but making it more ergonomic for longer form writing (whole pages or subtrees quickly π and π--no special Roam Features)
The strong version does same thing as above - but rather than the encrypt/decrypt step happening between the text input and the local state - it happens between local state and our syncing backend.
Some parts might be especially tough for a 3rd party developer - but seems doable
β’ β’ β’
Missing some Tweet in this thread? You can try to
force a refresh
Throwback to [[June 24th 2016]] - playing with @TheTedNelson's zzStruct demo
Would be incredible to navigate twitter threads like this
A few days later - trying to design a visual interface for a youtube filter that could express -- Videos about chemistry, favorited by accounts I follow, created by a user who is followed by 3 friends....
and you think my design was bad in 2018 :)
Two years later, starting to look almost like @RoamResearch
How @RoamResearch solves the problems that Google hasn't - ironically, my oldest recorded pitch is probably only thing out that talks about our long term vision.
Not touched in the video - how the layer on top of the web we're building is end-user programmable, an environment for @worrydream style Explorable explanations, and written in #clojure
If you think you should work at Roam, email support@roamresearch.com with your pitch on why we should hire you now. We might not get back to you for a while, and if we do @MikejNorman might be pissed that we didn't have job spec written for the role first, but shoot your shoot.
This is the deepest injustice no one talks about, and one we have a chance to actually do something about with software... without the systemβs permission.
Law is the code of our social operating system, we can build better tools for understanding it, using it, and changing it.