Marijn Haverbeke's blog (license)

CodeMirror MOSS project report

Friday, November 29, 2019 codemirror open source

Development of CodeMirror 6 this year has been generously supported by Mozilla through their MOSS program.

The MOSS program asks for a closing retrospective blog post describing the progress made during the grant period. I've written about the progress in the first 9 months of the year in my status update post from August. To summarize, in that period we:


The past few months have been focused more on concrete user-visible features, instead of big architectural questions. We've added these features:

You can see many of these features in action in the demo on the website.

Working on concrete extensions was a good way to find out how well our abstractions work in practice. Though we did end up adjusting some things, on the whole the system was a pleasure to work with.

Specifically, the way extensions can be built up out of different behaviors and other extensions was extremely useful. "Behaviors" (the name will probably change to "aspect" sometime soon), the named fields that extensions can add values to, are not just useful for configuration, but also allow, for example, extensions that want to display a panel to simply provide a behavior that indicates this, which is read by the panel-displaying extension. This models something that would be a side-effect (opening and closing panels) in most designs in a much simpler, more robust way.


Work is still ongoing, and will continue into 2020. The list of missing functionality is getting shorter and shorter, but there's a bunch of stabilizing and easy-of-use improvements still ahead. In any case, given how easy the above extensions were to implement, I'm slowly starting to believe that our base architecture is solid.