NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.37k stars 14.33k forks source link

Tracking: Outdated {neo}vimPlugins #359498

Open khaneliman opened 3 days ago

khaneliman commented 3 days ago

Created a quick script just to see what we have for plugins that might be abandoned or haven't been updated in a long time. We could double check these and see if they don't have a new version because they are abandoned, forked, just stable maintenance, etc. We can then decide to remove any that might be safe to just stop maintaining.

Checklist

Neovim Plugins

Unknown Plugins

Notify maintainers

@NixOS/neovim


Note for maintainers: Please tag this issue in your PR.


Add a :+1: reaction to issues you find important.

mrcjkb commented 3 days ago

We could double check these and see if they don't have a new version because they are abandoned, forked, just stable maintenance, etc.

Unlike Neovim, Vim has a pretty stable API, so it's not uncommon for Vimscript plugins that haven't been maintained in 10 years to still be useful. We should definitely remove any larger Neovim plugins that aren't being maintained.

khaneliman commented 3 days ago

We could double check these and see if they don't have a new version because they are abandoned, forked, just stable maintenance, etc.

Unlike Neovim, Vim has a pretty stable API, so it's not uncommon for Vimscript plugins that haven't been maintained in 10 years to still be useful. We should definitely remove any larger Neovim plugins that aren't being maintained.

Yeah, that makes sense. I do see a lot of vim in here. I'll try and separate the list better.

PerchunPak commented 3 days ago

I hope, that when I will rewrite pluginupdate.py, I could check whether a repository is archived and throw a warning.

teto commented 2 days ago

I hope, that when I will rewrite pluginupdate.py, I could check whether a repository is archived and throw a warning.

I wonder if you would need an API key for that. See https://github.com/NixOS/nixpkgs/pull/90257 for previous attempts. IIRC, the choice was made to not require the usage of an github token.

Now I would like to have the licence and even better the plugin description. One hackish way to do that would be to add another overlay "metadata.nix". This way you can regenerate only generated.nix or if you have a token both generated.nix and metadata.nix. In terms of eval it's still a perf hit.

Back to this MR, if only we had cache hits statistics that would make the job a lot easier ! I myself have a minimalistic approach regarding nix vim plugins: I install only fondamental or complex plugins via nix and install small simple ones via https://github.com/nvim-neorocks/rocks.nvim. I find installing vim plugins via nix a bit too complex for most plugins which are simple and developed dynamically. I am sympathetic to the idea of removing some plugins but that feels like a huge task since we dont know which ones are used. Worst case we could revert a removal. One idea I fancy but no one seems interested to maintain is maybe to provide an exhaustive nix-community/vim-plugins overlay (or even in the neovim-nightly repo) and keep in nixpkgs only popular plugins with > X stars (X ~ 10 ?).

To sum up, I will follow the decision of the other maintainers :)

PerchunPak commented 2 days ago

I wonder if you would need an API key for that. See https://github.com/NixOS/nixpkgs/pull/90257 for previous attempts. IIRC, the choice was made to not require the usage of an github token.

The script uses XML API right now, if we switch instead to REST API, we won't need any additional requests to get description and other information for meta. It can be optimized even further -- to do 1 request per plugin by using GraphQL API, but that requires token.

One idea I fancy but no one seems interested to maintain is maybe to provide an exhaustive nix-community/vim-plugins overlay (or even in the neovim-nightly repo) and keep in nixpkgs only popular plugins with > X stars (X ~ 10 ?).

You can't get more exhaustive than we are now. Maybe with some automatic system for discovering and adding plugins, like https://github.com/m15a/flake-awesome-neovim-plugins. image

mrcjkb commented 2 days ago

We also have nvim-neorocks/robert (see database.json, ~2.2k plugins, updated every 4 h). It's a pretty large DB of Nvim plugins, which includes info about whether a repo is archived and when it was last updated.

khaneliman commented 2 days ago

We also have nvim-neorocks/robert (see database.json, ~2.2k plugins, updated every 4 h). It's a pretty large DB of Nvim plugins, which includes info about whether a repo is archived and when it was last updated.

Oh that's interesting. Would be nice to query against.

teto commented 2 days ago

awesome info @PerchunPak ty. I did know about https://github.com/m15a/flake-awesome-neovim-plugins . I had not realized nixpkgs had this many plugins. Looks like a good coverage even though robert still finds more.

@mrcjkb the readme is stingy with details: Remember, Robert's doing his best out here in the wilds of GitHub. so it just looks at github ? `lsp_lines.nvim is not high profile but I would say still popular. Is it taken into account via a fork or not ?

mrcjkb commented 1 day ago

so it just looks at github ? `lsp_lines.nvim is not high profile but I would say still popular. Is it taken into account via a fork or not ?

afaik, it just scrapes GitHub, so the DB won't include repos that don't have a GitHub mirror.