Remix.run Logo
exceptione 7 hours ago

I think most people would love to the know the 'why'. This page discusses differences with prosemirror and is the closest I got to that question: (https://wordgard.net/docs/prosemirror/).

One thing to note is that there is not an upgrade path. Many concepts are shared with prosemirror, but it seems that switching means doing quite some work (correct me if I am wrong). Obsidian is based on Code Mirror so I guess they won't be switching, but tiptap.dev and others do.

@merijn, maybe you could address why wordgard is worth the switching cost?

EDIT: I see many points are addressed in Merijns personal blog. I submitted (https://marijnhaverbeke.nl/blog/wordgard-0.1.html) to HN for better context.

marijn 5 hours ago | parent | next [-]

> why wordgard is worth the switching cost?

It may not be. If you're happy with ProseMirror, continue to use ProseMirror. I have your back.

But as the blog posts describes, I had a whole pile of new design insights that avoid some of the issues I've ran into with ProseMirror, so I had the itch to build a new iteration.

I'll add a link to the blog post to the docs section of the website.

(It's marijn, not merijn.)

lewisjoe 3 hours ago | parent | next [-]

I'm part of the Zoho Writer team (Google docs alternative). And the new architecture is very similar to Zoho Writer i.e edits represented as a sequence of retains/keeps followed by action.

Also the decision to forego browser's selection and draw a custom layer.

All this makes reasoning about changes a lot more saner and intuitive. I've always wondered why prosemirror's transactions & steps couldn't be simplified further so I'm one vote up for the new design direction!

exceptione 3 hours ago | parent | prev | next [-]

Thanks, that would indeed be helpful.

  > (It's marijn, not merijn.)
oeps, sry!
Fluorescence 2 hours ago | parent [-]

First time I have seen this name.

Wikipedia is intriguingly inconsistent - claims that Marijn is the Dutch variant of Marinus meaning 'marine' like Marius, Mario etc. but other pages claim Marius is more likely to be from 'mars' or 'male' than 'marine'.

whazor 4 hours ago | parent | prev | next [-]

I always wondered why there is no code/package overlap between CodeMirror and ProseMirror (or now Wordgard). Have you tried this? Were there particular blockers?

marijn 4 hours ago | parent [-]

There's a significant amount of code in Wordgard that is copy-pasted from CodeMirror or ProseMirror, but modified enough that trying to share it would involve nightmarish amounts of type parameters and extra indirection. You could certainly build a generic editor framework and then build several editors on top of it, but you'd end up with Raku-level amounts of architecture acrobatics and extra complexity, much of which would leak out in the public library interface, and I don't think that is generally worth it. I do occasionally, when I realize a bug fix applies to one of my other projects as well, repeat it there. But that's okay.

budgetdrummer 4 hours ago | parent | prev [-]

[dead]

Garlef 5 hours ago | parent | prev | next [-]

From the blog:

> I'm not all that fond of the ProseMirror pun anymore either (it's CodeMirror but for prose, get it?)

So... It's time for someone to create Codegard, i guess?

maxloh 6 hours ago | parent | prev [-]

"Why is it worth the switching cost?" is the genuine question I have too. Or more importantly, why not just make it ProseMirror v2? The landing page needs more information about the "why" rather than the "what".

Garlef 5 hours ago | parent [-]

From the blog post:

> A ProseMirror 2.0 with an incompatible interface would amount to the same but make it ambiguous what people mean when referring to ProseMirror. Trying to graft stuff on in a backwards-compatible way as an 1.x version would produce a compromised win32-style mess.