Hello CodeMirror community. I am in the process of moving as much of
my code as is practical off GitHub and onto my own
Forgejo instance at
code.haverbeke.berlin. I’m looking
into migrating CodeMirror and Lezer soon, so this message is a heads-up about
that and a call for feedback.
The plan is to create codemirror and lezer organizations on that server and
migrate the repositories over so that they keep the structure they currently have on GitHub,
and then archive the GitHub repositories. That means links to issues or
patches under github.com URLs will continue to work, but issues
there cannot be further commented on. Issue numbers are retained by
such a migration, so finding the matching issue on the new tracker is
easy enough. If you have notifications turned on for an issue on
GitHub, you won’t automatically be notified of activity in the
corresponding Forgejo issue though, so you’d have to manually
resubscribe to issues you want to follow.
My Forgejo instance allows logging in via GitHub (or Codeberg) Oauth2, which means
it should be low-friction to log in and participate there.
I realize such a move can still be somewhat inconvenient for users in
some cases, but I feel rather strongly about reducing my dependence on
GitHub and big “free as in you have no recourse” platforms in general.
Having a big part of my daily workflow tied up to a platform that
continues to get slower and buggier, and could ban my account or
change their terms on a whim, is something I’m motivated to avoid,
even if there’s a cost to it.
I realize this makes another aspect of the project depend entirely on me and
my server. But this has been a single-maintainer project for a long time, and the GitHub
organization was also mine, so this
doesn’t change a whole lot in terms of power structure. If at some point I am no
longer doing a good job on running the project and someone else wants to continue
maintenance, the new crop of code server software
and services (Gitea, Forgejo, Gitlab, Codeberg, etc) make it relatively easy to
move development over to some other server.
I have already moved ProseMirror over this week, and the experience has been very positive. I intend to start working on the CodeMirror migration in about two weeks. If you have any
concern, tip, or other comment, let me know.
I appreciate the transparency regarding this migration. My main question revolves around the trade-off between control and generalized reliability. While the motivation to avoid platform lock-in is clear, I struggle with the technical trade-off: isn’t a large, general-purpose platform inherently more resilient to single points of failure or maintenance hiccups than even a well-run, single-maintainer self-host setup?
What kind of failure are you concerned about? I’m not going to promise 99.9% uptime, but given that both your local git clone and npm installs will continue to work, I don’t expect that anybody’s workflow will be all that impacted even if, say, an update goes wrong and I spend a couple of hours getting things working again. Similarly, if someone decides to DDoS my server, it might take me a while to set up a protection mechanism, but even then, I don’t see a lot of scenarios where this would seriously impact library users. You may have to put off reporting a bug for a day.
I think it would be neat to add a notice to the READMEs in the GitHub repos before archiving them, and also to link the migrated issues in the GitHub issues with some script.
Thank you for the heads-up, marijn. I was notified about the ProseMirror migration and was wondering whether CodeMirror will be moving as well.
I assume this mainly affects how we report bugs and contribute patches, while nothing really changes for most library users.
What surprised me a bit is that such a widely used open-source project has remained a single-maintainer project for so long. I hope you still enjoy the work and that it continues to support a good living for you.
Not to ask more from you, but I do hope this comes much later:
“If at some point I am no longer doing a good job running the project”.
And when that time eventually comes, I hope the community can find a way to keep the project going. Happy to help.
This is just how I prefer to work. I’m a control freak—great at keeping my toys tidy and coherent, not great at letting others handle my toys. But yes, maintaining CodeMirror works great for me, and there’s no reason to worry about me no longer doing that in the near future.
I’ve moved over the repositories today. See the CodeMirror and Lezer organizations on the Forgejo server.
I’m still running the migration for the old CodeMirror 5 repository (GitHub’s rate limiting makes copying a large amount of issues rather slow), and looking into a new way to run the tests, but other than that things should work. Let me know if you run into something that’s wonky or an outdated link.
If you have already cloned codemirror/dev and ran the install script to clone all other repositories inside of it you can update the git remote URLs for it and all contained repositories with:
for config in $(find . -name "config" -path "*/.git/config"); do
sed -i '/\[remote "origin"\]/,/\[/ s|https://github\.com/|https://code.haverbeke.berlin/|' "$config"
done