Notes on maintaining the Neovim project.
In practice we haven't found a way to forecast more precisely than "next" and "after next". So there are usually one or two (at most) planned milestones:
The forecasting problem might be solved with an explicit priority system (like Bram's todo.txt). Meanwhile the Neovim priority system is defined by:
+plan
label increases the ticket's priority merely
for having a plan written down: it is closer to completion than tickets
without a plan.Anything that isn't in the next milestone, and doesn't have a finished PR—is just not something you care very much about, by construction. Post-release you can review open issues, but chances are your next milestone is already getting full... :)
Release "often", but not "early".
The (unreleased) master
branch is the "early" channel; it should not be
released if it's not stable. High-risk changes may be merged to master
if
the next release is not imminent.
For maintenance releases, create a release-x.y
branch. If the current release
has a major bug:
master
.release-x.y
.release-x.y
.
./scripts/release.sh
stable
tag.stable
tag.The neovim repository includes a backport github action.
In order to trigger the action, a PR must be labeled with a label matching the
form backport release-0.X
.
These "bundled" dependencies can be updated by bumping their versions in cmake.deps/CMakeLists.txt
:
scripts/bump-dep.sh
is a script that can automate this process for LuaJIT
, Luv
, libuv
& tree-sitter
. See usage guide:
./scripts/bump-deps.sh --dep Luv --version 1.43.0-0
to update a dependency.
See ./scripts/bump-deps.sh -h
for more detailed usage./scripts/bump-deps.sh --pr
to create a pr
To generate the default PR title and body, the script uses the most recent commit (not in master
) with prefix build(deps):
These dependencies are "vendored" (inlined), we need to update the sources manually:
We also maintain some forks, particularly for Windows, if we are waiting on upstream changes: https://github.com/neovim/neovim/wiki/Deps