1/ Roam announced local graphs are available to all Roam customers & many ask for best practices advice. Here are some recommendations. Thanks for help: @elaptics@zsviczian
2/ What is a local graph? It is a Roam database that you create on your computer in a browser. That database lives only on that computer & only in that browser. The data in your local graph is never transmitted to Roam's servers. Theoretically you can have unlimited local graphs.
3/ In fact, if you create a local graph on your computer in Chrome, and then on the same computer you open FireFox, FireFox can't see that local graph because that graph lives in the permanent cache of Chrome and is only visible there.
4/ A local graph is local to #1 the computer & #2 available only in the browser you created it in & NO WHERE ELSE. This opens the door for Trust No One (TNO) security. If TNO is important to you, read on to understand the pros/cons of local graphs. It is TNO if used correctly.
5/ What are the benefits? It can be fast. Since the data lives locally & never leaves your computer, local graphs can be fast. They are great for testing new ideas without putting your personal graph at risk from your experimentation.
6/ However, they are not guaranteed to stay fast. A few noticed they slow with time, especially with many read & write operations. I don't want to nerd out, but depending on your use, but we think due to reconstruction of the transaction database in the local cache it slows.
7/ Additionally, they can be used for privacy. If you need a TNO solution, this is a possible solution as no one but you can access the local graph and no data is ever transmitted. Roam is a great outliner, so this gives you a great desktop like editing experience.
8/ What should you know about local graphs? First they live in your browser cache which is fragile. If your cache gets reset, you lose the local graph. A browser can reset its cache if you empty it, or even software updates can cause a cache reset. reset = wipe out the cache data
9/ Therefore have a very good backup strategy in place. Use Roam's auto backup feature. This way when you lose your local graph (and it will happen) you can always restore from your last backup. Local graphs are fragile since they live in the browser cache. So BACKUP!
10/ Backup strategy: configure auto backup to EDN. EDN file is what you use for a graph restore. I would also recommend an occasional backup to markdown, which allows you to load the data with other tools in the event of EDN corruption.
11/ Images & PDFs? Local graphs do not allow for storing files in them. So if you need to include images or other docs, store them some where else & link to them from your local graph.
Beyond that, for the most part local graphs behave just as an online graph with all features.
12/ Now let me discuss some advanced topics for those who want to go deeper. For those interested in TNO, you should continue!
If you don't want to go deeper, thank you for taking the journey with me to this point. But now its an up hill climb from here.
13/ Recently Roam upper management noted some other precautions. Let me break this down for you.
First point: If you need TNO for extremely sensitive data, Roam recommends no roam/js and I agree!!!
"roam/js permissions are not scoped to graphs or sandboxed in any way yet - pure wild west"
This is a crucial concept to grasp. Read that line a few times. Its packed with info: permissions? Scoped? Sandboxed?
Lets break it down.
15/ Each graph you visit in your browser is basically stored locally in your browser memory, the cache. So your online graphs & public graphs you visit & of course local graphs are all in the cache together. As a user, they look like they are their own islands, but they are not.
16/ Think of the cache (browser memory) as a hotel. Each graph is a “room” in the hotel. While all rooms have a separate space, there is little preventing us from going room to room (that is to say, with code such as Clojure or JavaScript).
17/ Graphs are individual databases in your browser memory, but all databases can be seen by your browser. Why is this relevant? This means roam/js enabled in one graph, could if it wants too, access other graphs in your browser memory. JavaScript can read and write to them.
18/ So if a bad actor gets you to run malicious code in one graph, there is the possibility of them accessing other graphs that are in your browser cache, at a minimum to read (steal) data and even worse, to try to insert malicious code into your other graphs.
19/ What this means is if TNO is important to you, you need to do the following: 1) Create local graphs in a dedicated browser. Do not visit online graphs in that browser (example shared public graphs) 2) Do not run any roam/js code in that browser 3) have a good backup strategy
20/ One other thing, I thought this was public knowledge, but it seems it wasn't. Any user can create local graphs & always have been able to do so. It didn’t matter your plan (Beta, monthly or believer). Believers had UI to manage local graphs. But you could always create them.
22/ Finally, while local graphs have their purpose, I find them less useful because you are basically limited to working with them from one computer. You can export and import between computers, but its a accident prone process.
23/ Long-term we need from Roam: (1) Online TNO graphs & (2) a Roam desktop app could solve this by storing the graph to the local file system for cross-device synchronization. This is the model of @obsdmd@logseq. Its not perfect, but offers more flexibility.
24/ So to summarize, Local graphs have their value and solve certain problems. But you need to know their weaknesses. If you use them for TNO, think through clearly how you will use them. Be informed, be cautious, be smart.
Come back to me with questions, its not a lite subject
• • •
Missing some Tweet in this thread? You can try to
force a refresh
2/ When I saw this I thought "information overload", if he is trying to sell @obsdmd, he isn't helping." I was wrong again! As I say, always learning from community. I love the sidebar.
but always felt it would be useful to have more freedom.
3/ I wrote some code that "detached" sidebar window panes so I could move them and dock them into other places. It looked great and I could see value in it. However, this was a real hack and destabilized Roam. Not Roam's fault, I was "surgically repositioning their right arm".
1/ EMOTIONS & NOTES? One thing that fascinates me about Tools for Thought (@RoamResearch, @obsdmd, @rem_note & @logseq) are the deep emotional connections people make with these tools. But it isn't about the tool, it's about the "thoughts" captured in these tools!
2/ When I started using these tools, I thought people used them because of their features & that really one tool was likely better than another. The truth is they each have advantages. Let me list what I see:
+ Roam: Great graph DB outliner with strong linking
..cont'd
3/
+ Obsidian: Great Markdown editor designed for thought, leveraging speed of local hardware
+ Remnote: integrating spaced learning into its DNA with roots in education
+ Logseq: opensource tool based on graph DB & markdown. Totally unique hybrid that has a solid future.
1/ Over a year ago I tried out Obsidian. At the time I found it to just be another Markdown editor. I was actually frustrated with the @obsdmd devs because it seemed like a shift from @DynalistHQ which is a fabulous product, but needing love. Well I was wrong, they were right
2/ In recent months I have seen many dear friends move to @obsdmd from @NotionHQ, @RoamResearch and other such tools. I honestly thought they are crazy (Ok they are and they know it.) But they are so happy with Obsidian and brag about it like teenagers in love, it is irritating.
3/ But I have to say, these friends, some former Roamans, are really good, smart, hard working and caring people. I told myself, there must be something to @obsidian if these individuals are so happy. They know me, I know them. They would not waste my time.
1/11 Spaced Repetition (SR) is amazing for learning. With it, I learned 2nd language. I wish I had this article by @andy_matuschak when I started. His article: [How to write good prompts: using spaced repetition to create understanding](andymatuschak.org/prompts/) #roam
2/11 Advice from real world experience. I admit, earlier I would have been too stubborn to listen. I am ready now & advice came just in time. Thanks Andy! We may not be friends in real life, but I hope to be twitter pals when you start to use @roamresearch (It's going to happen)
3/11 Let me share some of my highlights and personal takeaways. PLUS: please share your advice with me of lessons learned from your own experience with SR.
So Andy's article is a long read, but well worth it. I recommend reading it a few times spaced over time.
1/ @Conaw really liking new CSS work you are all doing & we appreciate whenever UID's are included in HTML stream. The page UID is often included. Would be nice to get UID when HTML renders for:
+ block refs
+ attributes
+ #tags
+ and bonus, but not crucial Alias #roamosphere
2/ Page UID's in the HTML. Well done team @RoamResearch