
We are rewriting CodeMirror - tobr
https://codemirror.net/6/
======
marijn
Oh hi, I'm Marijn, one of the maintainers. It doesn't look like this
submission is going anywhere, but I'll keep an eye on the comments and respond
to questions.

~~~
Scarbutt
Why typescript? wouldn't that choice reduce the number people that can
contribute?

~~~
marijn
It provides significant advantages when it comes to noticing bugs and
including types (also for docs) in the code from the start. I feel that
TypeScript is widely enough known at this point (and close enough to
JavaScript to figure it out quickly) to not be too much of a barrier.

------
tokyodude
I have to ask what is probably a dumb question.

Why? I used CodeMirror on three projects. It was great. Now I use Monaco aka
Visual Studio Code. What would CodeMirror offer ? With Monaco I get all the
lastest feature of VSCode . Current versions of Monaco include Intellisense
etc..

I'm honestly curious both what CodeMirror will offer and why even try to
compete. Though I'm guessing the answer to the first question answers the
second

~~~
msoad
I welcome competition in this space but two guys competing with Microsoft
seems like impossible to win. Hopefully they get the funding and we can see
what they can build

~~~
chimen
Monaco is maintained by a single guy from my understanding:
[https://github.com/Microsoft/monaco-
editor/graphs/contributo...](https://github.com/Microsoft/monaco-
editor/graphs/contributors)

It just shows many contributors but looking at code commits and general
activity (maintainers) in issues only Alexandru Dima comes out.

~~~
juancampa
That's not where the monaco code lives. That's just for documentation. I think
the actual code lives in the vscode repo

------
keithwhor
This is awesome! We were thinking about using CodeMirror for our in-browser
editor, code.xyz [1] but wrote our own rendering engine from scratch in order
to make sure we could distribute a lightweight package. If CodeMirror 6 had
existed at the time we may have used it. We managed to get the total size to a
fraction of that of CodeMirror.

If the community is interested we can definitely talk about open sourcing our
editor, or if the CM team is interested in how we implemented some aspects I'm
not opposed to sharing details. I can be reached at keith [at] stdlib [dot]
com. We're a team of three engineers in SF, I'm responsible for the majority
of the rendering engine implementation. :)

(If anybody is interested in my previous contributions to open source, they're
available on my GitHub [2].)

[1] [https://code.xyz](https://code.xyz)

[2] [https://github.com/keithwhor](https://github.com/keithwhor)

------
undershirt
I didn't know what beautiful JS code looked like until I started reading
CodeMirror while debugging an issue. After reading through Atom's code, I was
really surprised how simple CodeMirror's code was—with minimal abstractions
and flat functions.

(donated, of course)

~~~
marijn
Thanks! It's going to get a little more abstract in v6 (but only where the
abstractions carry their weight).

~~~
undershirt
i'm sure the abstractions will increase out of necessity. it was just nice for
once to warily peek into the code of a great product and see a single, well
organized ~9k line file of small functions that I could follow with relative
ease. best wishes on the new version!

------
ddoolin
Just donated what I can for now. I've used CM in a number of projects over the
years and it's quite enjoyable once you get used to it, the feature set is
comparatively large, and the defaults are quite good. If you're willing to go
the extra mile, the customization runs deep. Good luck on v6 guys, looking
forward to it.

------
sehugg
We use CodeMirror for our 8-bit retrodev IDE, and have been pretty happy with
it:
[http://8bitworkshop.com/v3.1.0/?=&file=examples%2Fbrickgame&...](http://8bitworkshop.com/v3.1.0/?=&file=examples%2Fbrickgame&platform=vcs)

We haven't even scratched the surface with customization beyond adding some
more editing modes (fortunately a Z80 mode is already part of the release!)
and doing custom gutters and line widgets.

There haven't been very many surprises, notably a performance issue with
forced reflow when gutters are overwritten (solution: don't do that) and some
vertical div sizing problems, which shows how difficult this kind of project
is to do right. Performance has always been stellar, though, even on an
underpowered Chromebook.

+1 to Typescript, we've also been converting our IDE over to it :)

------
Narretz
How will this affect ProseMirror development? Do you see ProseMirror at a
point where it can be considered stable enough that it doesn't need a lot of
attention?

~~~
adrianheine
Yes, ProseMirror is quite stable and it is well-used. Marijn released version
1.0 nearly a year ago and since then we made some improvements, but the
interface seems good enough that we didn't even discuss making a breaking
change in a component as far as I know. There's not too much maintenance work
necessary either, since bug reports are usually pretty good and far fewer than
for example with CodeMirror. I think how happy we are with ProseMirror and
maintaining it is a major motivation for making these huge changes with
CodeMirror, too.

------
amelius
By the way, the Xi-Editor of Raph Levien (Google) has some architectural
notes, which could be useful.

[https://google.github.io/xi-editor/docs.html](https://google.github.io/xi-
editor/docs.html)

~~~
marijn
Indeed, I'm aware of those and they are great.

------
Flimm
Thank you for considering the needs of people who speak non-LTR languages,
like Arabic. I'm excited that bidirectional text support is in the roadmap!

~~~
adrianheine
That's great to hear! CodeMirror 5 has complex code for supporting
bidirectional documents, but it's not perfect and lot of work. We hope to let
the browser do most of this work for us in the new architecture.

------
wirthjason
Thanks for your work Marijn! I've never developed with CodeMirror before but
have used it in IPython notebooks.

I'm sure there are multiple ways open source projects can raise money but one
idea I'm fond of is a paid "course". Basically this amounts to a couple hour
tutorial. It helps gain users and present a deeper insight into the project
while generating income.

------
bealuga
Ah I loved code mirror! I ended up using it in one of my projects called
picoshell here which was an in-browser code editor.
[https://www.youtube.com/watch?v=6ubEwT6igZQ](https://www.youtube.com/watch?v=6ubEwT6igZQ)

------
rglover
Just happily backed this :) CodeMirror helped me TONS a few years back while
writing a custom CMS for editorial work. Best of luck, Marijn—thanks for
everything you've done so far.

------
leeoniya
one thing i immediately noticed is that the line gutter no longer lags during
hz scrolling on my phone :)

i'll definitely be pitching in.

something that's always bugged me about the current v5 syntaxes is that colors
(and token types) are not consistent across languages.

ideally i would prefer to have a local var, a regex, a builtin colored the
same in all languages. not just as a result of carefully tweaked css but
because of token/css class uniformity.

any plans to address this in v6?

~~~
marijn
> one thing that's always bugged me about the current v5 syntaxes is that
> colors (and token types) are not consistent across languages.

Yeah, me too. We're planning to move to something more close to what other
editors (ST, Code) do and work with hierarchical token types (variable.local,
variable.type.definition) instead of having a set of disjoint types. There
remains the problem of some modes simply supporting more features (i.e. if one
mode doesn't distinguish definitions from uses and another does, the colors
will, depending on the theme, still look different), but it should help unify
things quite a bit more.

------
le-mark
Great project, I used it for an online code editor a couple of years ago.

My question is; what's the status of mobile/touch support? It used to be
barely usable on touch devices. How is touch support vs Atom? I haven't
followed this in years so apologies!

~~~
adrianheine
Improving mobile, touch and screen-reader support are from a user perspective
the main reasons we are doing this in the first place. We are expecting to
support most of the input behavior such platforms provide.

------
GoToRO
Can it edit the files on a server directly or you have to do that part
yourself? Or are there any projects that I could self-host and let me edit the
files on a server folder? Thanks.

~~~
marijn
You have to do that yourself—this is only the editor component. There's things
like [https://icecoder.net/](https://icecoder.net/) that provide a more web-
ide like thing on top of CodeMirror, but I don't know them intimately so I
don't know which one to recommend.

------
pandeiro
When the demo embedded in a fundraising pitch supports Emacs keybindings, I
donate. Simple as that.

------
tequila_shot
The page doesn't tell me anything on how to contribute code.

~~~
adrianheine
Except for small drive-by contributions (see GitHub repo) the project is not
in a state were we can really integrate other people in our process, and there
will be pretty substantial changes to interfaces. Looking at ProseMirror,
contributions will probably mostly include separate modules and not so much
work on the actual core (which is pretty stable). This is especially true for
CodeMirror where there will be a lot of modes, addons, themes and keybindings,
which we are not planning on maintaining as part of the core project.

------
nobody271
old jQuery UI style, please:

    
    
        window.codeMirror("#myCodeMirrorDiv");
    
        window.codeMirror("#myCodeMirrorDiv", {
            theme: window.codeMirror.themes.dusk,
            maxColumns: 120,
            lineNumbers: true
        });
    

btw why would you ever put yourself through such a thing?

------
dominikoledzki
[https://www.joelonsoftware.com/2000/04/06/things-you-
should-...](https://www.joelonsoftware.com/2000/04/06/things-you-should-never-
do-part-i/)

