How we made Notion available offline

Notion은 오프라인 모드를 구현하기 위해 기존의 SQLite 캐시를 강화하여 완전한 오프라인 페이지 사용을 보장하는 지속적 저장소 계층으로 발전시켰습니다. 페이지가 오프라인 상태로 유지되는 이유를 추적하는 복잡한 트리 구조를 도입해 여러 이유로 오프라인 접근이 가능하도록 했으며, 서버 푸시 알림을 활용해 오프라인 페이지를 실시간으로 최신 상태로 동기화합니다. 또한 페이지 및 데이터베이스 구조 변경에 따라 오프라인 상태 트리를 효율적으로 갱신하는 메커니즘을 적용해 사용자 경험을 개선했습니다. 이 기술적 접근은 대규모 사용자 기반에서 오프라인 사용성을 크게 향상시키는 중요한 진전입니다.

https://www.notion.com/blog/how-we-made-notion-available-offline

#offlinemode #datasynchronization #notion #localstorage #crdt

How we made Notion available offline

Offline Mode was Notion's most requested feature for years, but building it meant solving tough technical challenges around our unique block architecture. Here's the architecture and data model that made it possible.

Notion

Explorations techniques (suite)

#localfirst

- Comment synchroniser mes données locales entre plusieurs machines ? avec un serveur ?
- #eventsourcing et #CQRS ?
- #crdt (@inkandswitch.com ) pour la collaboration ? Est-ce qu'il faut de la collaboration ?

🌘 @codemix/graph:具備實時協作與型別安全的 CRDT 圖形資料庫
➤ 打造具備實時同步能力且型別嚴謹的 TypeScript 圖形資料庫
https://codemix.com/graph
@codemix/graph 是一套專為 TypeScript 設計的圖形資料庫,旨在解決應用程式中需要嚴謹型別檢查與離線優先(offline-first)實時協作的需求。該系統整合了 Zod 等 Schema 驗證工具,確保開發者在處理節點與關聯時享有完整的型別安全。核心亮點在於其靈活的儲存架構,開發者能輕易從記憶體儲存切換至基於 Yjs CRDT 的後端,實現多客戶端間的無衝突實時同步。此外,它支援 Gremlin 風格的遍歷查詢,並能解析 Cypher 語句,讓 LLM 或外部 API 也能便捷地與圖形數據互動。
+ 這對於需要構建實時共同編輯工具的開發者來說是個神器,特別是能直接與 Yjs 整合這一點,省去了處理複雜衝突的痛苦。
+ 將圖形資料庫的查詢能力帶入前端,甚至還支援 Cypher 給 L
#TypeScript #圖形資料庫 #CRDT #Yjs #軟體開發
@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.

🚀✨ Oh, look, it's yet another mind-bogglingly complex tech Frankenstein, combining every buzzword imaginable: type-safe, #realtime, collaborative, #CRDT, and more! 🤯🔧 Perfect for making your #TypeScript look like the intricate inner workings of a space station, but maybe next time just try a regular database, like adults do. 🍕👩‍💻
https://codemix.com/graph #techfrankenstein #typeSafe #collaboration #HackerNews #ngated
@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.

@codemix/graph - codemix

Open-source TypeScript property graph database from codemix.

🌘 再談版本控制
➤ 邁向更可靠的版本控制:從「手動重寫歷史」到結構化自動演進
https://bramcohen.com/p/more-on-version-control
Bram Cohen 在本文中深入探討了他在版本控制系統領域的新構想。他指出,目前的 Git 雖然強大,但在「變基」(rebase)和「壓縮」(squash)操作時,往往會人為抹除歷史記錄,甚至產生錯誤風險。他提出了一種結合 CRDT(無衝突複製資料型別)與結構化錨定演算法的解決方案,透過在提交時鎖定差異(diffs),實現更安全且自動化的合併機制。這種方法能完整保留歷史脈絡,並將衝突處理視為時間軸上的更新同步,為開發者提供更直觀、可靠的版本控制體驗。
+ 很有啟發性。Git 的 rebase 確實經常讓人覺得是在「竄改歷史」,如果有一個系統能在保持自動化處理的同時,又具備嚴謹的歷史審計能力,那將是開發者的福音。
+ 對於「壓縮(squash)」操作的定義很有趣。目前多數系統確實把它當作刪除歷史的手段,但如果能像文中提到的那樣保留完整的演化過程,確實能減少
#軟體工程 #版本控制系統 #Git #CRDT
More on Version Control

This may have some legs

Bram’s Thoughts
Conflicted Copies: If you edit files on multiple machines while one is offline, #Nextcloud /#Syncthing will create conflict files, requiring manual resolution.
Direct Editing Lag: Editing files directly on a slow remote server (without local sync) can cause high latency within Emac
Yes these re problems or #orgzly there s to be some way to use #crdt with it
🌗 Manyana:版本控制未來的願景
➤ 告別三向合併的噩夢:以 CRDT 重構版本控制的邏輯
https://bramcohen.com/p/manyana
比特幣發明人 Bram Cohen 發表了名為 Manyana 的開源專案,旨在解決現有版本控制系統(如 Git)在處理合併衝突時的痛點。該專案基於無衝突複製資料類型(CRDT),徹底改變了傳統 VCS 依賴三向合併(3-way merge)的做法。Manyana 的核心優勢在於將衝突視為「資訊展示」而非「系統中斷」,並透過保留檔案變更的完整結構歷史,實現了始終能成功合併的開發流程。儘管目前仍處於單檔案操作的原型階段,但它為下一代版本控制工具提供了一個兼具穩定性與直覺 UI 的技術願景。
+ 這正是我們需要的!Git 的三向合併在處理大型多人專案時,經常產生令人費解的衝突,如果能直接看到具體的增刪邏輯,將大幅減少開發者的心智負擔。
+ 將歷史視為「織網(weave)」結構的思路非常大膽。雖然目前還只是個 Python 原型,但這種「合併永不失敗」的設計理念,極有可能改變未
#軟體開發 #版本控制 #CRDT #技術創新
Manyana

A Coherent Vision for the Future of Version Control

Bram’s Thoughts
I'll be honest: I'm procrastination on the gaps and layers stuff which is a lot of going through the different cases of resizing, moving, adding and deleting clips with and without ripple editing turned on. There's also potentially spooky #CRDT stuff involved. Help

Что больнее OT или CRDT в совместном редактировании? И почему до сих пор нет идеала?

Привет, Хабр! Меня зовут Антон Леонтьев, я старший разработчик в команде ядра

https://habr.com/ru/companies/ncloudtech/articles/1009742/

#collaboration #мойофис #мойофис_документы #мойофис_текст #редакторы #редактирование #ot #crdt

Что больнее OT или CRDT в совместном редактировании? И почему до сих пор нет идеала?

Привет, Хабр! Меня зовут Антон Леонтьев, я старший разработчик в команде ядра редакторов МойОфис . Мы создаём офисные приложения, которыми ежедневно пользуются более 12 500 организаций, и совместное...

Хабр