-
Notifications
You must be signed in to change notification settings - Fork 69
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
[Discussion]: Dropping support for vim #319
Comments
Well, at least partly. I do consider it an interesting idea to drop Vim support. I don't use Vim personally. I think wiki.vim is so mature that forking it into wiki.nvim and then archiving wiki.vim is not necessarily bad for the Vim community. wiki.vim would still be available for anyone to use, and of course also to fork. The MIT license means anyone is free to continue a Vim fork, if they want to.
I don't want to throw away the regex system, because it actually works quite well, and it works across filetypes. I think the first step is to continue what I've already started: make the APIs to find links even more "general". I think this is quite close already, and I'm working (slowly) towards allowing a solution for #147 (multi-line links). A more general interface for detecting and parsing links would then allow additional backends e.g. for Treesitter.
If we do go forwards with a neovim-specific fork, then I think it would be useful to consider adopting some new principles/ideas. One of those would probably be to allow dependencies. For instance, it may well be possible that e.g. plenary.nvim provides some of the features I've manually implemented. Also, we might want to adopt nui.nvim for some UI elements, and perhaps fork out the blocking UI stuff as a new library.
A better graph view would be cool :)
Feel free to outline the ideas from the video (TLDV :p).
I've been keeping Vim compatibility so far because I didn't have a good reason not to. However, the neovim APIs are really getting good, the community is getting stronger, and I am starting to feel that there are two very good reasons to consider this:
So: I'm actually quite positive towards this idea. Open questions:
|
I've invited the Vim and neovim communities on Reddit to join this discussion: |
OK, I watched the video now. I don't think I want to follow the same idea for transition here, because I don't intend to rewrite everything in Lua as part of the transition itself. That is:
|
Understandable.
You could also make the final release with vim support and mention it in the README, and then simply continuing developing on this repo. I don't really see a reason to fork the project, unless you want to clearly separate the two plugins.
Well, I think that having a "minimal" core and than extend it with plugins is the way to go (I think of If we go with a minimal core we should think of what exactly we want and don't want in the main plugin, and than separate the rest in separate plugin. For the "core" plugin I wouldn't go with more than As for the requirements... Neovim moves really fast, especially now. So I think that targeting either: Debian stable version (now is |
I'd strongly advise against using plenary.nvim as a dependancy these days. It was very valuable as an incubator in the early days (when Neovim's API was much more limited, especially from Lua), but has not kept up-to-date (understandably, as it's a massive and complicated codebase with only part-time maintainers). These days, Neovim's "standard library" should be sufficient, and gaps should be filled (if pointed out with a reasonable use case). I'd make an exception for an ui plugin, where
That is indeed an issue -- but so do Neovim users. The official stance of Neovim is that we only support the latest release as well as the latest(!) commit on HEAD; that may be too aggressive for this plugin. But I would definitely not recommend looking at distro versions (and certainly not Debian, which will hopefully update one day, but no promises) to decide what to support. Rather, I'd look for features that make your life easier and require a version based on that; evaluate this every time a new minor version comes out (are new APIs worth dropping support for older versions?), possibly after the first patch (which usually comes relatively soon after a big release). Right now, it would be reasonable to require 0.9, but it doesn't make much sense forcing yourself to support anything older than 0.8. |
Yes, this seems like a good idea. It was also suggested in one of the Reddit threads. I think it would make sense to specify this as a release tag where e.g. release v0.9 is the final release with support for Vim. (If I choose to go this direction.)
I'm not sure I agree with that. Maintaining multiple small plugins would be harder, not simpler for me. And I don't really see any real benefit from this. In my opinion, the important thing is to keep things modular, well structured, and flexible.
Let's consider this regardless. Perhaps it will make sense to pull some parts into a separate plugin/extension, but even if it does not, it can be useful to recognize parts that should be contained in separate modules. I believe this is already quite well structured, but I may be missing things!
Yes, Neovim moves fast; I would really like to not stay too far behind, though. It is one of my motivations for doing this shift in the first place, so if I were to stick to old neovim versions, I feel the motivation is not as strong. So, in this, I am more inclined to agree with @clason.
Thanks! That's a useful advice!
Also useful. And I agree. Notice, though, that And I also think we need basic UI with an optional possibility of relying on additional ones from e.g.
Thanks, this is very similar to how I'm thinking. It would actually be quite nice to allow for a very aggressive approach here. But I may consider being somewhat conservative, but at least with a strategy of moving with the times. E.g., if I restrict myself to 0.9 now, I should already plan for moving to version 0.10 when it arrives. One idea could be to start relatively conservative in the first iteration; e.g. with 0.8. Then make a release when I reach a stable level. Then I can adapt to version 0.9 and make a new release - and I could specify in the README that those who use older neovim can stay on release X, and so on. |
I think a basic policy of "move baseline to the latest 0.x release if it allows simplifying/improving the plugin, but only after 0.x.1 is released" is a very sound (and relatively conservative, in Neovimland) strategy.
Doesn't mean they have to stay that way, given a compelling argument ;) |
I think I will procede as follows:
I may decide to keep Vim compatibility. If so, it will be because I conclude that I can leverage Neovim features properly while keeping Vim compatibility. If I don't see a good way of doing both, then I believe I may drop Vim compatilibility. |
Thanks. I think I want to avoid being too conservative, because I want to be able to utilize the new and improved stuff. :) But I will try and be clear about the requirements as explained in my previous comment.
I looked into discussions on this topic, and it seemed to me that neovim people did not really want to consider this. It was claimed that IoC was necessary to allow non-blocking behaviour, which I guess is true. In all discussions I've seen, people just say that, if I can't use I would personally be very happy to see modern versions of the |
Do you have a link to that discussion? Maybe all that's missing is a reasoned argument (and detailed design proposal) for the new methods. We get frequent requests which boil down to "we need Lua API because ewww vimscript!", even though |
I've tried to find it, but either my memory is not precise or I may be remembering discussions on Reddit instead of the neovim issue tracker. I opened an issue about this now with a proposal for Now, I'll close this issue as resolved by our discussion. It has been useful to me and I will act on it according to me previous comment. |
Just throwing my late feedback into the hat! If vim support is dropped, it would be unfortunate! Since the focus of upstream will most likely shift to Lua, I would not mind seeing the "legacy" wiki.vim migrated to vim9script. The more amazing vim9 plugins the better. |
Yes, I can understand that Vim (not neovim) users will feel that way. I do have some sadness that things are going into the direction of Vim and neovim not being properly compatible. In any case, I will most likely not drop Vim support very soon.
If someone wants to fork wiki.vim and migrate it to vim9script I would be more than happy to add a link to that project. I don't know if I could be of any help, but the effort would definitely have my blessings. |
I think that having to support vim is holding the plugin back. This could lead us to:
For the transition we could do something like what was done with command-t.
Obviously this is a discussion so I would love to here the reasons why we should keep vim compatability.
The text was updated successfully, but these errors were encountered: