-
Notifications
You must be signed in to change notification settings - Fork 264
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
RFC: Fisher 4.0 #582
Comments
Less awk if that's a possibility. The average fish user/scripter like myself isn't likely to know awk syntax etc. which makes it much harder to understand the code and possibly contribute. I know next to nothing about fisher's code, but are there really places where pure fish is insufficient? I think fisher 4.0 should do it's best to use no or very little awk. EDIT: Also definitely fish 3.0. Even debian is on 3.0 and no one has any excuse to be older than debian 😂 |
@IlanCosman It's worse without awk for some of the most complex things like parsing the fishfile as the equivalent with fish built-ins could possibly 10-fold the amount of code, but part of the idea of upgrading to fish 3.0 is using more of the fish built-ins for simple cases, validating a path, etc. 👍 |
I really don't feel strongly about this at all, but my brothers, both CS majors, have always cautioned me against brevity over clarity. Personally I would rather use 30 lines of step-by-step fish rather than 5 lines of dense awk, but I understand you may feel differently. Then again my first programming language was Java so.... 😂 |
@IlanCosman Give it 5 minutes. The syntax is not all that different from Java. It's so easy it hurts. And if you already know JavaScript, then you already know AWK's grammar. Fish built-ins may change in the future as well, new built-ins or built-in flags may be added, etc. AWK will just keep on working. It's less churn. Anyway, AWK or not is beside the point. I should be able to use less of it in Ⅳ for sure. 😂 |
Wow didn't know you were also a major OMF contributor. That's cool, and thank you for your contributions to that project as well even if you think they were misguided!
I also agree that the parsing that happens should be done using awk. @IlanCosman awk is actually a dying but pretty commonly used tool in the software industry, so I as a software engineer also know how to read and write some awk. It's incorporated into major tools such as vim.
|
For parsing & formatting, would an existing configuration file format be up for consideration? Since the Some considerations: |
@vyasknellutla Probably not. Yeah, I've thought about it this before many times, but I always wind up on "not worth it". |
Biggest thing I'd like to see in a breaking release is defaulting to installing packages somewhere other than
Totally fair. |
I would strongly argue against that @mattgreen. Why is this behavior surprising to you? To me this is the only logical way of doing it. When I create functions, I put them in the functions directory. When I "install" a fisher "package" it's just a bunch of fish functions that someone else made, and there's no reason they shouldn't go in the usual spot. In an optimal world fish would support autoloading directories within functions, so that directory wouldn't get so crowded. Alternatively, fisher could request |
I advocate separating the user's custom fish config from package contents because a package can inadvertently clobber user-written functions/completions/config snippets of the same name. I've done this before, and I should've read the docs, but the Principle of Least Astonishment seems to be the fish ethos. (Thank goodness for git.) Moving them to another directory protects user-specific configuration. It doesn't fix the fact that packages can clobber each other's functions, but I see that as a much smaller problem. Related: can't remember off-hand if this is true, but AFAIK all package repos are updated for every mutable invocation of |
I see what you're saying about clobbering. Perhaps fisher should ask the user about any files that it would clobber? |
Since fisher is installing plain-text fish scripts, I'm personally fine with it being in But if it is something we're considering, how about storing it in I can see a case be made if people would like to check in |
Not by default, no. Optionally? You can use
Fisher is designed so you can handle your Fish user configuration. That is functions, completions, and conf.d snippets in If you're afraid this could happen, I suggest you create your own plugin for those files. Put it anywhere you want, .e.g. fisher install ~/fish/plugins/utils
This argument can stifle creativity too!
It doesn't fix the fact that in fish all functions are in the same scope. Using Fish is very much like being inside a REPL (like when you're inside the Node REPL, etc.) @mattmc3 Maybe the issue here is that you want to manage some things directly yourself and use Fisher for others and expect both approaches to be 100% compatible. They are largely compatible, but Fisher is optimized for managing your stuff as plugins. Having said that, I'm working to improve unsavory surprises, e.g., prevent clobbering of files (#624), multiple prompts (#629), etc. |
So, If people are absolutely against Fisher's default behavior, then maybe Fisher is not for them? Anyway, this is just a thought. Notice I didn't even mention it here. |
@jorgebucaran, your approach is out of the box but has promise IMO. It is certainly a conceptual shift from the file-centric approach taken by users and utilities (e.g. Otherwise it is very clean and I'll give it a try. It might or might not click, but that's not on you. |
Any updates on this? I'm excited to use fisher and trim down my code base 😂 |
@IlanCosman |
What I would like from the new major Fisher release is the ability to reliably use non Now, Fisher downloads and manages them just fine already. The problem is you can’t reliably access those files from fish scripts, since So, question is, how is it possible to access non I see 2 potential solutions. Ideally, all the package files would be stored together in the The other solution is to provide a command like @jorgebucaran I would love to hear your thoughts on this particular issue🙏 |
@andreiborisov relevant: #581 |
@andreiborisov As @IlanCosman mentioned, #581 would allow you to create e.g., a directory inside your plugin's |
Fisher 4.x is now available. 🎉 If you are using in Fisher 3.x, you can upgrade to 4.x by running fisher self-update For everything else, check out the new documentation. |
Fisher 4.x is now available 🎉
4.x
?Let's talk about Fisher 4.0. What would you like to see? What would you like to go away?
_install
,_update
and_uninstall
event systemWe have
_uninstall
events, but not_install
or_update
. Starting with 4.0 plugin authors should be able to reliably know when their plugin is installed, updated, or uninstalled. Related #526 #527 #573.Oh My FishI'd like to remove some OMF plugin support. Specifically, deprecate
init.fish
,uninstall.fish
, etc. See #581. The irony is that I introduced these conventions back in the day to OMF. So long, and thanks for all the fish!Less is more
I don't consider Fisher a big ball of mud (yet), but could it be simpler? Yes. Less features = less complexity && less bugs && more maintainability. I still consider some features essential such as concurrent downloads, but I'm curious to see what else could go away, e.g., plugin dependencies, private package hosts (#464), gitlab/bitbucket support. See also: #579.
Other
wait
to implement concurrent downloads.fishfile
in favor of→fish_bundle
fish_plugins
. See Rename fishfile to fish_plugins #524.Timeline
I'll probably have enough time to begin working on this sometime in 2021.I've been working on this for a while now and I might be able to finish it sooner, before December.Fisher 4.0.0 lands this week. 🎉
The text was updated successfully, but these errors were encountered: