Hacker News new | ask | show | jobs
by mattberkowitz 3172 days ago
Hello, from The New York Times CMS team. We have been working with ProseMirror for the last year and a half or so. Congratulations, it's great to see this finally reach 1.0!

Some of the things we've found really great about working with ProseMirror:

- Separation of the data model from the rendered display has allowed us to extract things like tracked changes and comments which we traditionally embedded as HTML tags in TinyMCE. This leads to less cleaning and prevents inadvertent publishing of metadata.

- Unidirectional data flow makes it work well with applications that use this type of data architecture.

- Separation of modules (prosemirror-state, prosemirror-model, etc) has allowed us to quickly write better tests around our editor code.

- Decorations have been great for implementing the previously mentioned metadata aspects of our editor like comments and change tracking. They're useful for features like our custom spell checking implementation, which checks for Times style in addition to normal spelling/grammar.

- Node views allow us to implement rendering in our own way. We've been rendering React components into them which will eventually allow us to share code between our editing environment and our user facing web stack. They also allow use to render the same editor schema in different ways depending on the context/view they are being used in.

- The step/transaction model has allowed us to move from what was previously a set of additions and deletions persisted within the document to a calculated change tracking implementation. This allows both for a cleaner document but also allows for a wider range of tracking (i.e. show the differences between versions 10 and 15) rather than a static current vs the last "accepted" version comparison.

- Prosemirror’s plugin system is really simple and flexible and has allowed us to add new features to our editor rapidly in a modular way without interfering with other features (comments, custom spell checking, custom find/replace, etc).

1 comments

Nice overview on the pros of ProseMirror.

When you were surveying the editor-landscape, what made you choose ProseMirror over its competitors?

At the time we started revamping our editing interface many of the options were still in early/incomplete places. I think ProseMirror had an funding campaign at the time that didn't meet its goal initially, although did later on in a second attempt. Ultimately we decided to venture down the path of building our own editor, which was based on a combination of our own learnings in text editing and a collaborative system some folks in our graphics department had put together.

About 6 months in, near the start of 2016, when moving on from the exploration/demo stage of the project to actually building out the real deal we took another look at the landscape and decided to move to ProseMirror. I don't remember the exact points that went into the decision but transitioning from our in house solution to ProseMirror felt pretty natural as they followed similar design philosophies.

Thanks for the response!

You went down the hard path of rolling out your own editor, and used the knowledge gained to choose a worthy successor.

I'm impressed. I should give ProseMirror another shot.

I also think the fact that Marijn had CodeMirror on his resume helped with our willingness to take a risk on a pre 1.0 library
i think the most similar lib to ProseMirror is http://bustle.github.io/mobiledoc-kit/demo/
I think they just told you?
There is some overlap between the points listed and the features other editors offer. Unidirectional data model for example is also in SlateJS.

More pertinently, I’m interested in what made them choose ProseMirror at the time, as opposed to what they like about it now.