🌗 關於協同編輯的迷思(二):為什麼我們棄用 Yjs
➤ 擺脫過度設計:以極簡架構實現高效協同編輯
https://www.moment.dev/blog/lies-i-was-told-pt-2
本文探討協同編輯領域中廣泛存在的迷思。作者指出,Yjs 等熱門 CRDT(無衝突複製資料型態)函式庫在處理離線衝突時會導致文件損毀,且在即時協同編輯中存在效能設計瑕疵。作者實測發現,Yjs 為了維持運作,竟會在每次按鍵時銷毀並重建整個文件,導致效能低落、節點狀態不穩定及外掛程式衝突。相比之下,利用 `prosemirror-collab` 這類基於單一權威節點的機制,僅需極簡程式碼即可實現離線同步與樂觀更新,不僅架構更輕量,且能更有效地達成 60 fps 的流暢效能目標。
+ 這篇文章真是當頭棒喝。大家盲目崇拜 CRDT,卻忽略了它帶來的效能成本和不可預測性。確實,很多應用場景根本不需要無主(masterless)架構。
+ 看到 Yjs 為了兼容性選擇「每次按鍵重繪」的設計細節令人震驚。難怪在複雜文檔編輯時,外
#軟體工程 #協同編輯 #技術架構 #Yjs #ProseMirror
Lies I was Told About Collaborative Editing, Part 2: Why we don't use Yjs / Moment devlog

Lies I was Told About Collaborative Editing, Part 2: Why we don't use Yjs / Moment devlog

Dear Diary...

Another quick #development #diary update on my research notebook software project Orsn.

This episode: ProseMirror text editor

https://orsn.io/v2/

#research #notebook #orsn #prosemirror

Moving. Forwards. Slowly. | Orson

Progress with ProseMirror.

Finally getting a handle on https://prosemirror.net/.

Managed to make my own toolbars and a prototype dialogue for inserting @mention type links.

It will be very powerful, in combination with codemirror, but has proven a bit tricky to get started with, in the context of the Vue framework, which tends to create proxy objects for reactivity.
Prosemirror spits those out in disgust.

#prosemirror #javascript #vue #texteditor

ProseMirror

In-browser structured text editing component

Show HN: Leaflet.pub – a web app for creating and sharing rich documents | Hacker News

Link📌 Summary: Leaflet.pub 是一款新推出的網頁應用程式,用於創建和分享豐富的文件。該專案由開發團隊花了 8 個月時間打造,旨在平衡 Notion 和 Google Docs 的優點——快速、輕量且易於分享,同時支援多樣化區塊和多頁面功能。Leaflet 提供無需帳號即可建立文件、分享閱讀與編輯連結、電子郵件登入同步文件,以及添加畫布、子頁面、RSVP 和投票等功能區塊。開發團隊也重視文件的美觀呈現,模糊了文件與網站的界限,讓使用者能夠自豪地在線上發布內容。

🎯 Key Points:
- Leaflet.pub 允許使用者無需帳號即可快速建立文件,支援閱讀和編輯連結分享
- 技術方面使用 Replicache 進行同步,資料以類似 Datomic 的實體事實集合方式建模,每個文字區塊使用獨立的 ProseMirror 實例
- 特色功能包括:精美的列表處理、自訂主題、iOS Safari 上的鍵盤處理、側滑多頁面介面以及 PWA 支援
- 未來計劃包括:改進首頁和文件組織功能、與 ATProto 和 Bluesky 整合、增加更多區塊類型(如表格和程式碼區塊)
- 開發團隊仍需改進的方向包括:大型文檔的效能優化、拖放和選擇功能、跨多頁的鍵盤導航,以及使用 CRDT 加速多人協作

🔖 Keywords: #協作文件平臺 #網頁應用程式 #ProseMirror #文件分享 #無帳號快速建立

Show HN: Leaflet.pub – a web app for creating and sharing rich documents | Hacker News

MarkupEditor (https://github.com/stevengharris/MarkupEditor) is a #WYSIWYG editor for #SwiftUI and #UIKit apps. It lets you create and edit clean HTML documents within an extension of WKWebView. The latest Beta uses #ProseMirror for the WYSIWYG heavy lifting on the backend. In addition to clearing up quite a few longstanding issues, the new version reduced my own JavaScript code from ~11,000 lines to ~3,000 while maintaining compatibility on the Swift side. Thanks to @marijn for such a great open source project.
GitHub - stevengharris/MarkupEditor: WYSIWYG editing for SwiftUI and UIKit apps

WYSIWYG editing for SwiftUI and UIKit apps. Contribute to stevengharris/MarkupEditor development by creating an account on GitHub.

GitHub

So I am getting over my problems with actually building things... I used #Svelte and #ProseMirror (technically TipTap as the wrapper) to build a very basic prototype of an Outliner editor. Just the "blocks of text that become editable when you click on them". It's a pure Alpha "does this even work" but well... it does.

First of many components of a modern tool for thought, demonstrated. (because it's ProseMirror, the blocks can contain defacto arbitrary HTML to express rich text...)

Massimiliano Farinella wrote #pundok, a visual #editor for #pandoc. The editor is based on pandoc's internal format, so no information is lost when transferring the documents to pandoc for further processing.
The editor is written using #ProseMirror and #Tiptap; it can be included in web pages or be run standalone (via Electron).
https://github.com/massifrg/pundok-editor
GitHub - massifrg/pundok-editor: A visual editor for Pandoc AST documents.

A visual editor for Pandoc AST documents. Contribute to massifrg/pundok-editor development by creating an account on GitHub.

GitHub

Okay so, getting some confidence with the #lexical text editor framework for the idea I want to implement took a bit of doing (since this is also my first web tech project where I am actively programming stuff, and so I am learning a whole bunch of JavaScript/Typescript on the wayside) but I am gaining confidence that it'll let me do what I want to do. (Building rich text connections with graph data.)

Maybe #ProseMirror would also work, but the docs on how ProseMirror posts updates are muddy.

#Development #Takeaways
A local-first case study · “It’s very possible to build a useful local-first app today.” https://ilo.im/160cj4

_____
#LocalFirst #WebApp #Maps #Svelte #Shoelace #ProseMirror #CRDT #WebDev #Frontend #JavaScript

A Local-First Case Study | jakelazaroff.com

How I built a local-first app for planning trips, and what I learned about the current state of the local-first ecosystem along the way.

10/

I think WriteFreely might be using ProseMirror for its editor.

https://prosemirror.net/

#ProseMirror #WriteFreely

ProseMirror

In-browser structured text editing component