-
Notifications
You must be signed in to change notification settings - Fork 83
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deprecating builtins with unmaintained upstream or native LSP replacement #58
Comments
I support this. Maybe create a 'legacy' branch so people can easily use an old version of the plugin if they rely on something that is due to be removed? |
This won't happen very soon without further notice. I guess we could add a notice on startup if users are using any of the deprecated builtins, and finally remove them, for likely 1 to 2 months later? Also, users could just copy & paste the builtins they use into their config, so I don't feel the very need to maintain a separate branch. |
This comment was marked as off-topic.
This comment was marked as off-topic.
Hi, for the unmaintained ones, what is the main motivation to remove them? Is it just out of caution, that they might break? I have contributed two diagnostics parsers (checkstyle and pmd), which I have last touched over two years ago, but they should still work. Outright removing them might not be the best idea. |
It's just for the upstream abandoned projects. pmd and checkstyle are all fine, since upstream actively maintains them :) |
Ah OK gotcha. I first understood that whether or not the builtins themselves are maintained or not is the deciding factor. I simply misread. In that case this sounds like a sensible idea. Carry on. 😀 |
(moved to the issue body) |
Please don't remove yapf, pyink, flake8, black, isort, pep8, etc (anything related to python/ruff). These are all still popular and widely used --- IMHO Ruff is still not mature enough to replace all the formatters. I also find that the list you suggest is quite aggressive. Not only for python but for other langs. The removal/deprecation should be done in more like a opt-in manner rather than opt-out manner. Also I think it'd be great to main the current, up-to-date list of the plan in the body (i.e. at the very top) of this issue because comments in the middle will get easily out of attention? |
See the FAQ here. I tried not to break things if there are a significant number of rules not implemented.
The change may start rolling out on a separate branch first. I look forward to merging that into master in 1–2 years.
I will put a link to this comment (to preserve edit history). |
That's ruff's goal, but at this point not really. Ruff is a good diagnostics tool so for diagnostics maybe yes, but as a formatter I don't think it's mature enough yet. Your list includes more than what Ruff is currently capable of. For flake8 I would say it's OK (although very controversial) to remove, but ruff is never going to be the 100% exactly the same with other formatters that are still widely used in many projects, it can't be a replacement. For instance: isort, black, yapf, etc. which are all clear NO. Ruff-formatter aims to be as similar as black, although it isn't ATM, and black is not the only formatter in the Python community. https://docs.astral.sh/ruff/faq/#how-does-ruffs-import-sorting-compare-to-isort. |
Fair point, thanks. I've restored isort, black, yapf, pyink from the list. |
I never used flake8 and have not looked into ruff, but removing a tool because there is an alternative tool can be problematic. You don't always have the choice of what tool to use. So if ruff doesn't do exactly the same thing and uses the same configuration files it's not a good replacement. Same might be the case for other tools. |
@mochaaP Thanks for considering the suggetsion!
+1, I second this point by @sblask. None-ls.nvim should be deprecating things only if the project is abandoned (or more precisely, users are also leaving and abandoning it) and good modern alternatives are available. There could be inactive, not-so-quite-updated tools that can still work great and be used in many projects. None-ls.nvim is a collection of tools that users can pick and start using out-of-box. If a tool that's already available in our curated list is abandoned, it's provided as-is, hence no maintenance cost added. |
Since this project is a community effort, the most important factor to take into consideration is your feedback. Thank you all for caring about this project! |
dprint also has its native language server: dprint/dprint#803 |
@g-plane: updated, thanks. |
Hi, do you plan to remove the tools listed above also from mason.nvim and mason-tool-installer? Or only for the recipes defined in none-ls? |
There's no change to |
rustfmt shouldn't be deprecated. rust-analyzer won't do anything about formatting, and the rust-analyzer config in lspconfig has nothing about rustfmt or formatting. |
👌 |
Hi! Anyway, I still using the php builtin (mainly because I sometimes don't want to use a LSP server and because it's faster) and I've tried to create a none-ls plugin here : https://github.com/gbprod/none-ls-php.nvim. I think it could be a good alternative for some tools that none-ls's core team does'nt want to maintain, maybe it could be documented or liked somewhere ? Thanks for your work ! |
Hi @gbprod, |
This comment was marked as resolved.
This comment was marked as resolved.
@altermo: |
You can definitely install |
https://github.com/rust-lang/rust-analyzer/blob/master/crates/rust-analyzer/src/caps.rs#L71 |
I'm still extremely new to nvim, how would I tie that in with mason/ mason-null-ls or am I S.O.L. until they're integrated? |
You can manually add |
No, you can't. If called in mason.setup it does nothing. In mason-lspconfig, it throws an error that it's not a valid entry. How do I fix this? |
This is an absolutely horrible discision. This breaks countless ppl's configs and new devs are left with no way to fix their configs other than with extremely vague and unhelpful comments from the person actually making the changes. This needs to be rolled back ASAP. |
This comment has been minimized.
This comment has been minimized.
Like seriously, I tell you I'm extremely new to neovim and then you give literally at most 8 word sentences to tell me how to "fix" the problem YOU created. Wtf is wrong with you? We shouldn't have to fix what you broke in the first place. Just simply DO NOT depreciate tools people are actively using and are under active development/ mantainership. |
Put another way, if you're unwilling to actually give meaningful help to the breaking changes you're making, you should NOT be making them. |
Feel free to continue shouting, but this won't help solve any problems. This issue is pinned for >2mo, has been on Reddit for >1mo and as a last resort, a notice on startup with a grace period for at least a week. Yet you ignored all these messages and refused to migrate nor pin to an old commit. If you really cared about this you should have noticed it from the first place. But the reality is you neither care about those projects you use nor anyone maintaining them. You're just straight up hurting people doing all the work of their free will. Please, at least be nice to each other. |
Like I've said three times now, I'm extremely new to neovim that by definition means I am not up-to-date on all the goings-ons of every plugin I'm using. "If you really cared about being able to use linting in your projects, you should've noticed that one supporting plugin is going to break eslint for you" yeah, no. That's not realistic at all. Most people don't go to all the different repos for the plugins they use to make sure there's no breaking changes. They just update their plugins and be done with it. "refused to migrate" what do you think my second question was? Literally how do I migrate to use the new extras package with mason. To which you replied with yet another vague and unhelpful answer. "if you really cared blah blah blah you're just straight up hurting people doing all the work of their free will" Nobody asked you to do this. You took it upon yourself to break people's configs because you and a vocal minority decided it was "better" instead of just leaving it alone and if it breaks, leaving it up to people to step up and fix it or fixing it yourself if/when it breaks. and if YOU really cared about the project or people maintaining it, you'd be quick to assist new people with ways to migrate or fix the issue like I tried to do so that others can come to this thread and read how to solve the issue but instead we've got this wall of crap and still no solution to integrate the extras package with mason or get eslint_d to stop causing the stupid warning to appear. |
This is a long issue, so apologies in advance if this was mentioned earlier. That said, you added the deprecation notice yesterday and you're retiring the builtin in March, which is next week? I'd expect a bit more time for people to migrate. |
The migration should be an easy fix, but if people find it needs more time to migrate, we could delay the merge. 🙂 |
You can set filetypes for both
|
That does not work, since shfmt does not understand zsh-specific syntax and will throw an error. |
Thanks! I'll have to try those out. I hope those tools will actually handle zsh. Some of the Issues for them talk about adding support, but it didn't seem to happen. |
I don't know about other people's workflows, but I don't update my plugins unless I have to (because one is causing a problem for example) or setup a new machine. Otherwise I'd be busy with fixing something all the time. So unless you expect people to update their plugins daily, one week deprecation will not be enough. How about one year? But I don't understand what the issue is actually. If a tool has been abandoned it will hardly cause problems because the output format will not change. If a tool does cause problems, why not wait until someone fixes it and if that doesn't happen it can still be removed if there is an alternative? I am watching all activity on this repository and so far there have been no problems with any existing tools. It feels like removing support for tools is totally unnecessary. What problem does it solve? What future work does it enable that can't be done at the moment? Just doing something for the sake of it and causing trouble for other people by doing so would be terrible. |
In general the problem is that this plugin only provides functionality to integrate external tools with neovim's LSP client. The plugin has no control over when those external tools do introduce breaking changes. Builtins being deprecated here means that nobody is looking at those external tools in question and fixing them when they break. Builtins that are still in none-ls somewhat carry with them an expectation that they will be fixed when the external tool introduces breaking changes. I do agree though that a longer deprecation period would be better. Keep the builtins around a little longer, but make it clear there is no priority to fix them, if they break. For that matter it might also be a good idea to add some alternative way of telling the user instead of notifications. A health check for example or using Lastly, if anyone is using plugins without pinning a version, they are opting into breaking changes. It's as simple as that. Most plugins I know do use some form of semantic versioning even, so you wouldn't even be stuck with just one exact commit. I personally do not pin plugin versions, but I do use Lazy as a plugin manager and do actually look at the changes for each update to determine whether I need to fix something. That is up to everyone's personal preference. Long story short, the tools are there for people to not have to deal with breaking changes that often, please use them. That also means don't come complaining about breaking changes when you did not pin a version. |
The problem with this decision is people don't mind using deprecated or unmaintained projects. Instead of removing them, simply mark in the appropriate markdown readme files that the source is deprecated. At this point, why not just use https://github.com/mhartington/formatter.nvim |
[null-ls] You required a deprecated builtin (diagnostics/eslint.lua), which will be removed in March. Any info on how to solve this would be appreciated |
@SuyashPatil-29 Please search |
I mind the quality of this project.
You are welcome to use alternatives! Neovim is designed to be pluggable, so if you are unsatisfied with this project, you are free to use other tools that fit your needs best. Please don't have hard feelings :) |
So is installing none-ls-extras and adding eslint_d to mason's ensure_installed is enough to continue using it? I'm still getting deprecation messages. |
or just tell this idiot to sod off and stop being a maintainer if they're just going to cause problems for everyone. |
@kmoschcau Why not cross the bridge when you get there? With the current approach you proactively break tools because they MIGHT break in the future. If nobody is working on a tool, how can they introduce a breaking change? The only way an existing integration of an abandoned tool breaks is because of changes in none-ls. If it's just about the expectation, that can be solved with one sentence in the README: Who is to decide what an adequate replacement is if you work on a project where it's not your choice to change the tooling? If you think everybody should pin their plugins, why even bother with a deprecation period? And pinning doesn't work if I need a fix or new tool. If the solution to that is to update and then copy removed builtins into my config, why even provide a plugin? @mochaaP tools being deprecated or unmaintained has nothing to do with the quality of this project. I see the builtins as a thing apart to allow users to get started easily. It might as well be a completely separate project, but it's just easier if it's bundled. none-ls-extras is just arbitrary |
@sblask thank you for saying what I as an autist am finding impossible atm. I appreciate it. |
@GR3YH4TT3R93 I've created a PR in your config repository to fix the eslint_d issue. Why do you have to be so mad and rude?
|
@sblask please read again what I wrote. I do agree with you that they should just stay in, but marked as deprecated. That should already set the appropriate expectations. I also agree that this notification might not have been the best way to communicate all of this.
As said above, I agree with that.
This is wrong, because of a misunderstanding. What I meant is builtins where only the integration is abandoned, but the upstream, external tool is still maintained. There upstream changes might break things while nothing in none-ls changed. These cases should not be deprecated by this list and also are not covered by the criteria in the first post. I just wanted to say I would fully understand why those might be marked as deprecated as well. @mochaaP I agree with you that somehow wanting to get rid of code is a good thing. However I would suggest we maybe find a different approach. At the very least, migration instructions should be added somewhere. Edit: With that I mean more complete migration instructions. Not everyone is as familiar with neovim's API as you and I seem to be. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Related projects:
I'm thinking of cleaning up some builtins with the following criteria:
Planned to remove (will keep updating):
edit history → #58 (comment)
The text was updated successfully, but these errors were encountered: