12 comments

  • exceptione 1 hour 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.

    • maxloh 33 minutes ago
      "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".
  • goodwillhunting 15 minutes ago
    The editor aside, really impressed by the artist who did he design - really tasteful, def stood out for me https://kamilastankiewicz.com/
  • lewisjoe 18 minutes ago
    This is amusing as well as slightly scary. Prosemirror over the years has become the backbone of editors on the web. ChatGPT uses it. Gemini uses it. Linked chat and feed composers are Prosemirror powered. Literally every serious product uses Prosemirror for composing text on the web.

    There is an entire YC company built on top of Prosemirror (Tiptap).

    The thought that Prosemirror is no more in active development is scary.

  • nicce 33 minutes ago
    I would be curios that what are the cons/pros for selecting this over Facebook's Lexical (https://github.com/facebook/lexical)
  • mapt 1 hour ago
    Getting that WYSIWYG editor up and running was a major stumbling block that I overcame to get my school newspaper a PHP-Nuke site ~25 years ago.

    It is insane that there isn't a web standard implementation for this passed 15 years ago.

    • CGamesPlay 58 minutes ago
      There is contenteditable, which is what all these (Wordgard, ProseMirror) are fundamentally built on. The rest is just the UI, and interop with systems that don't desire arbitrary HTML as input.
  • yule 22 minutes ago
    The artwork on the website is beautiful! What a (forgotten) way to draw ones attention.
  • mhitza 1 hour ago
    ~6 years ago had a very hard time researching and implementing an @-style remote resource completion (other users and documents to reference) and the style of extensions in this editor seem very much like an evolution of prosemirror.

    I'd really appreciate it this was something built in, not something I have to build based on the dinosaurs example. Every time I need to reach for one of these text editor libraries that is my no. 1 usecase, followed by WYSIWYG.

  • milkshakeyeah 1 hour ago
    I can’t believe that we are still trying to solve this. One would think that after so many years (I’ve started doing web almost 20 years ago) we would end up with some solutions baked in browsers
    • nicce 28 minutes ago
      I think the issue is not the "solving", rather that people have different opinions and they want different things, and there isn't common agreement what is needed or how. Most editors work just fine for the basic needs. But well, that is my opinion.
    • yoz-y 47 minutes ago
      Something like showcontrols for contenteditable with flags for features
  • haroldadmin 2 hours ago
    ProseMirror is an excellent project, but it’s always been a bit awkward using it directly in React. I remember that NYT had to rewrite the renderer to make it work for their use-case.

    I wonder how Wordgard compares in this aspect!

    • tefkah 35 minutes ago
      The people developing that left NYT and spun it out into a separate (really great!) project https://github.com/handlewithcarecollective/react-prosemirro...

      They are also working on a collaborative editing suite for ProseMirror as an alternative to TipTap https://pitter-patter.dev/

    • exceptione 1 hour ago
      For people who have dealt with react, this part might give some insight into that topic (https://wordgard.net/docs/prosemirror/#h-transactions-and-ch...)? Nevertheless, it would be good if this could be addressed in the docs.

      I am not sure if this makes things easier for react interop, but this piece might be of interest too:

        > One of the biggest mistake blunders in ProseMirror is that the editor view does not get access to the transaction objects when updating, just the state. Wordgard does not repeat this mistake, and makes updates take transactions, not just a new state.
      
        > This means that things like the DOM update logic and UI plugins can precisely observe what happened, and handle changes in a efficient and more effective way. The weird unexpected DOM redraws that are still a thing in ProseMirror should not occur. Only the precise DOM structure affected by the new transactions will be updated.
      
      
      
      Anyways, it is great to see Merijn still going strong with his free work. Anyone needing interactive rich text on the web won't find anything better than his brain childs.
    • alserio 1 hour ago
      That's due to the React constraints, though
  • yodon 1 hour ago
    The code appears to be unavailable. This includes not just wordgard but all the ProseMirror code as well.

    If the motivation for moving off GitHub was "GH is down too much", it might be worth tracking how many 9's of uptime is lost in the self-hosted case.

    • jitl 6 minutes ago
      Works for me:

          $ git clone https://code.haverbeke.berlin/wordgard/wordgard.git
          Cloning into 'wordgard'...
          remote: Enumerating objects: 8274, done.
          remote: Counting objects: 100% (8274/8274), done.
          remote: Compressing objects: 100% (4747/4747), done.
          remote: Total 8274 (delta 6049), reused 5002 (delta 3464), pack-reused 0 (from 0)
          Receiving objects: 100% (8274/8274), 1.61 MiB | 2.93 MiB/s, done.
          Resolving deltas: 100% (6049/6049), done.
    • nmstoker 45 minutes ago
      Were you meaning it was unavailable temporarily?

      Maybe something changed in the meantime, but I'm seeing what appears to be the code for it here: https://code.haverbeke.berlin/wordgard/wordgard/src/branch/m...

  • chrisjj 1 hour ago
    How do I get text labels on the buttons?
  • chrisjj 1 hour ago
    At Try, I entered x and tapped what I presume is Undo. No effect.

    Android Chrome.