aboutsummaryrefslogtreecommitdiff
path: root/MAINTAIN.md
diff options
context:
space:
mode:
Diffstat (limited to 'MAINTAIN.md')
-rw-r--r--MAINTAIN.md58
1 files changed, 47 insertions, 11 deletions
diff --git a/MAINTAIN.md b/MAINTAIN.md
index ff5f3fe5a1..3c21b13276 100644
--- a/MAINTAIN.md
+++ b/MAINTAIN.md
@@ -73,13 +73,17 @@ When a (non-experimental) feature is slated to be removed it should:
1. Be _soft_ deprecated in the _next_ release
- Use of the deprecated feature will still work.
- - This means deprecating via documentation and annotation (`@deprecated`) only.
+ - This means deprecating via documentation and annotation (`@deprecated`).
- Include a note in `news.txt` under `DEPRECATIONS`.
+ - For Lua features, use `vim.deprecate()`. The specified version is the
+ current minor version + 2. For example, if the current version is
+ `v0.10.0-dev-1957+gd676746c33` then use `0.12`.
+ - For Vimscript features, use `v:lua.vim.deprecate()`. Use the same version
+ as described for Lua features.
2. Be _hard_ deprecated in a following a release in which it was soft deprecated.
- - Use of the deprecated feature will still work but should issue a warning
- (typically via `vim.deprecate()` for Lua features).
- - Features implemented in Vimscript or in C will need bespoke implementations
- to communicate to users that the feature is deprecated
+ - Use of the deprecated feature will still work but should issue a warning.
+ - Features implemented in C will need bespoke implementations to communicate
+ to users that the feature is deprecated.
3. Be removed in a release following the release in which it was hard deprecated
- Usually this will be the next release, but it may be a later release if a
longer deprecation cycle is desired
@@ -93,7 +97,7 @@ Example:
┆ ┆ ┆
┆ Soft ┆ Hard ┆
┆ Deprecation ┆ Deprecation ┆
- ┆ Period ┆ Preiod ┆
+ ┆ Period ┆ Period ┆
────────────────────────────────────────────────────────────
Version: 0.10 0.11 0.12
────────────────────────────────────────────────────────────
@@ -113,6 +117,11 @@ should be stated explicitly and publicly.
Third-party dependencies
------------------------
+For some dependencies we maintain temporary "forks", which are simply private
+branches with a few extra patches, while we wait for the upstream project to
+merge the patches. This is done instead of maintaining the patches as (fragile)
+CMake `PATCH_COMMAND` steps.
+
These "bundled" dependencies can be updated by bumping their versions in `cmake.deps/deps.txt`.
Some can be auto-bumped by `scripts/bump_deps.lua`.
@@ -122,12 +131,13 @@ Some can be auto-bumped by `scripts/bump_deps.lua`.
* When bumping, also sync [our bundled documentation](https://github.com/neovim/neovim/blob/master/runtime/doc/luvref.txt) with [the upstream documentation](https://github.com/luvit/luv/blob/master/docs.md).
* [gettext](https://ftp.gnu.org/pub/gnu/gettext/)
* [libiconv](https://ftp.gnu.org/pub/gnu/libiconv)
-* [libtermkey](https://github.com/neovim/libtermkey)
* [libuv](https://github.com/libuv/libuv)
* [libvterm](http://www.leonerd.org.uk/code/libvterm/)
+ * Downloading from the original source is unreliable, so we use our [mirror](https://github.com/neovim/libvterm) instead.
* [lua-compat](https://github.com/keplerproject/lua-compat-5.3)
* [tree-sitter](https://github.com/tree-sitter/tree-sitter)
* [unibilium](https://github.com/neovim/unibilium)
+ * The original project [was abandoned](https://github.com/neovim/neovim/issues/10302), so the [neovim/unibilium](https://github.com/neovim/unibilium) fork is considered "upstream" and is maintained on the `master` branch.
* [treesitter parsers](https://github.com/neovim/neovim/blob/7e97c773e3ba78fcddbb2a0b9b0d572c8210c83e/cmake.deps/deps.txt#L47-L62)
### Vendored dependencies
@@ -146,14 +156,14 @@ These dependencies are "vendored" (inlined), we must update the sources manually
* Run `scripts/gen_lsp.lua` to update.
* `runtime/lua/vim/_meta/lpeg.lua`: LPeg definitions.
* Refer to [`LuaCATS/lpeg`](https://github.com/LuaCATS/lpeg) for updates.
+ * Update the git SHA revision from which the documentation was taken.
* `runtime/lua/vim/re.lua`: LPeg regex module.
* Vendored from LPeg. Needs to be updated when LPeg is updated.
+* `runtime/lua/vim/_meta/re.lua`: docs for LPeg regex module.
+ * Needs to be updated when LPeg is updated.
* `src/bit.c`: only for PUC lua: port of `require'bit'` from luajit https://bitop.luajit.org/
* `runtime/lua/coxpcall.lua`: coxpcall (only needed for PUC lua, builtin to luajit)
-
-### Forks
-
-We may maintain forks, if we are waiting on upstream changes: https://github.com/neovim/neovim/wiki/Deps
+* `src/termkey`: [libtermkey](https://github.com/neovim/libtermkey)
Non-technical dependencies
--------------------------
@@ -168,6 +178,22 @@ Non-technical dependencies
* pkgjson.org
* DNS for the above domains is managed in https://cloudflare.com (not the domain registrar)
+
+Refactoring
+-----------
+
+### Frozen legacy modules
+
+Refactoring Vim structurally and aesthetically is an important goal of Neovim.
+But there are some modules that should not be changed significantly, because
+they are maintained Vim, at present. Until someone takes "ownership" of these
+modules, the cost of any significant changes (including style or structural
+changes that re-arrange the code) to these modules outweighs the benefit. The
+modules are:
+
+- `regexp.c`
+- `indent_c.c`
+
Automation (CI)
---------------
@@ -199,6 +225,16 @@ https://github.com/neovim/neovim-backup
trying to produce images that work in the broadest number of environments,
and therefore want to use older releases.
+### Special labels
+
+Some github labels are used to trigger certain jobs:
+
+* `backport release-x.y` - backport to release branch
+* `ci:s390x` - enable s390x CI
+* `ci:skip-news` - skip news.yml workflows
+* `needs:response` - close PR after a certain amount of time if author doesn't
+ respond
+
See also
--------