Update: ProseMirror is funded! The code is open-source, and the project will be maintained and developed further in the open. There is still a lot to be done, and further contributions are appreciated, either here or in some other way (contact me).
A New Take on Content Editing
Editing rich text on the Web is predominantly done by using editors implemented as a thin layer on top of contentEditable. This is sometimes a good idea, and sometimes a bad one. Using contentEditable means editing HTML, with all the cruft that comes with that. It means working around browser bugs and trying to clean up dangerous or messy output.
Several companies have implemented systems that improve the situation.
Google Docs is probably the most awe-inspiring browser-based document-editing interface around, but you can't just drop that into your CMS.
Medium has built a very nice lightweight editor custom-tailored for their blog-editing use case (their
blog post about it is somewhat relevant to this project). But again, closed source.
ProseMirror is something in-between those two: a lightweight, extendable, general-purpose document editor with support for real-time collaboration. I have written it (see the demo on
the website) and if the community is able to compensate me for the time I put into it, I am open-sourcing it under an MIT license.
Who I am
I have a long
history of releasing and maintaining solid open software. My work on CodeMirror (which you might know as the editor in Chrome and Firefox's dev tools) has given me lots of experience with writing a fast, solid, extendable editor. Many of the techniques that went into ProseMirror have already proven themselves in CodeMirror.
What you are Funding
In the past six months, I have written a JavaScript-based document editor. You can
see it in action online. This system is different from the existing open source editors in several ways.
- It defines and maintains its own document model, instead of relying on the HTML stored in the editable document that the browser is displaying. (Why is this cool? See these demos!)
- This document is exposed as a document tree, which can currently be serialized to HTML and (roughly) Markdown. Writing your own serializer is straightforward.
- The currently implemented model corresponds to what is supported in Markdown/CommonMark. There are plans for allowing client code to extend and customize the document model in the future.
- Changes to this document are composed of well-defined steps. These steps can be exchanged over the network to create collaborative editors.
- User interface elements such as menus are implemented with plugins. There currently exists a Medium-style tooltip-based interface, and a classical toolbar-at-the-top interface.
Like CodeMirror, the editor is implemented as a library module with a rich programming interface, which can be styled and extended to fit seamlessly into the surrounding website.
I set the goal amount by taking the time I've sank into this project and multiplying that by half my normal consulting rate. It may sound like a lot of money, but it is actually a rather meager compensation. My hope is that this software will have a positive impact on the Web and that I'll be able to extract more income from it in the future, by convincing commercial users to pay for support.