sorin-ionescu / prezto

The configuration framework for Zsh

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Is this project dead?

zbirenbaum opened this issue · comments

Last PR I submitted sat for months without anyone reviewing it until I just closed it. It’s been two weeks since I submitted a fix for a major issue that can lock someone out of their system completely and radio silent.

very few new commits getting pushed, and I rarely see maintainer activity here.

If it’s dead what have people moved to as an improvement?

I would like to know this as well.

Hello! I've been one of the (unofficial) primary maintainers on prezto for a while. I say "unofficial" because the owner of the repo is MIA (no Github activity in more than a year, no Prezto activity in even longer than that) and nobody other than him has admin access to the repo. Though, I spent quite a bit of time a few years ago trying to whip this repo more into shape (along with the help of some fantastic other maintainers).

There are a few other people who have commit access (@facastagnini, @johnpneumann, @paulmelnikow, @jeffwidman, @indrajitr) who may want to weigh in, but I'll give my opinion below.

I wouldn't say prezto is dead, but we've been actively avoiding most new features, so I would say it's in "maintenance mode". Most of the changes that go in are fixing issues (I've been meaning to take a look at your PR @zbirenbaum, but I've been trying to stay away from my computer while I'm on paternity leave unless an emergency comes up) and features that fit into existing modules.

All this being said, I grew out of love with prezto quite a long time ago (part of the reason I'm not pushing as hard to make bigger changes). I don't use prezto any more (other than setting it up to try and reproduce an issue). My current zshrc uses my own minimal framework, zsh-utils. Here are a number of reasons why (in no particular order):

  1. I'm burnt out on maintaining thankless software for very old systems - our official stance is that we support back to the version of zsh shipped with the latest stable Debian (we changed that from CentOS a while back). While it's nice having a relatively up-to-date target, it's still a wide range of versions and often times we run into bugs which are only in specific versions of zsh (but of course they sometimes ship with major distributions, so we're out of luck).
  2. There are multiple projects I'm involved with where the owner/BDFL disappeared (base16 and prezto) so we've taken the more conservative approach of not changing things too much to avoid making them angry if they come back. Taking that stance is incredibly frustrating as both a maintainer and a user.
  3. Prezto is very frustrating to maintain without major changes
    • It uses a custom module format - module loaders have to decide to support prezto because of this
    • It has a module loader which should probably be better handled by something like zgen/antigen/zinit
    • The modules don't have a clear focus
  4. There are too many configuration options - I worked at Atlassian on Bitbucket for a number of years and to this day trying to configure JIRA is incredibly confusing to me. IMO it suffers from having too many config options and too many ways to configure similar things. Prezto sometimes feels the same way for me (the mess of code in the Python module is a good example of this).
  5. Often times things are exposed or configured in a way that is not in line with best practices with zsh - sometimes tradeoffs need to be made to make things easier for people to use, but I don't think prezto strikes a good balance.

I could probably go on, but I think that makes my point well enough. The short version: I'm unhappy with the state of things, but we don't have full control of the repo or approval from the owner to make more major changes which are sorely needed.

But enough complaining! You also asked about alternatives!

  • Prezto! Yes, I realize that sounds silly after the previous information dump, but prezto is reasonably stable. It shouldn't have a ton of major bugs and can be used as a good base to build off of.
  • zsh-utils - yes, I'm biased because I wrote zsh-utils, but the idea behind it is to provide a small set of minimal modules which provide better defaults and out-of-the-box experience than stock zsh and can be used as small building blocks for your own configuration. I don't plan on making many major changes to it, but I'm open to PRs as long as they don't greatly increase the scope of that repo or the modules within.
  • zsh4humans this is a really solid zsh starter kit that works as a great starting point, though I'm sure the maintainer @romkatv (who has been dutifully submitting PRs to update Powerlevel10k in this repo for ages, and still responds to people on Reddit asking questions about prezto sometimes) has a better elevator pitch for it. batteries included configuration distribution primarily meant for use by people who either want a good config out of the box or are willing to put in the time to use advanced settings to tweak things and enable power featutes. This is also in maintenance mode.
  • oh-my-zsh - I really hesitate to strongly recommend this, but it has a ton of modules and is really popular. In the last few years a new maintainer has really stepped up and started cleaning up the repo, but I would argue that OMZ focuses on convenience over correctness which I'm not a fan of.

I've also been considering making my own larger framework/starter kit, but after how burnt out I am on prezto, I don't know if that will ever happen.

Please let me know if you have any other questions/concerns and I'll do my best to answer them.

  • zsh4humans this is a really solid zsh starter kit that works as a great starting point

I wouldn't describe it this way. I try to support two kinds of users in zsh4humans:

  1. Those who install zsh4humans and use it without any customization except for minor things: adding aliases, changing PATH exporting a bunch of variables, etc.
  2. Those who carefully read Advanced configuration tips and enable power features. This require non-trivial investment but the payoff can also be great. zsh4humans is by far the most advanced zsh config out there but this power isn't easy to tame. In terms of codebase size it's about twice as big as Prezto. It doesn't mean it's slow though. On the contrary.

Users who like to use many third-party plugins and who are used to them should best avoid zsh4humans. zsh4humans has builtin alternative to virtually all useful third-party plugins but it may require changing habits when switching to zsh4humans. These costs aren't always justifiable. New users don't have this disadvantage, hence point (1) above. Advanced users can suck up the switching cost when the final result is an improvement, hence point (2) above.

I should add that zsh4humans is in maintenance mode. I'm still fixing bugs but the only features I'm adding are those that I need myself.

@romkatv @belak I do have write permissions on the repo but as @belak mentioned, I do the occasional cleanups on issues (truth be told, I haven't been active in the last year).

I still use prezto on Mac and Linux so it's in my personal interest to fix any issue which breaks them on stable for both and hence as of now I continue to look into any breaking issues on stable.

That being said, my work does not allow me the liberty of fixing other bugs and whilst I lament on this situtation - c'est la vie. I agree with both @romkatv and @belak, the project as of now is in maintenance mode rather than active development.

I wouldn't describe it this way. I try to support two kinds of users in zsh4humans:

Thanks for the description! I pinged you because I didn't want to misrepresent it. I've updated the 2 sentence explanation of zsh4humans in the previous post.

I should add that zsh4humans is in maintenance mode. I'm still fixing bugs but the only features I'm adding are those that I need myself.

Huh. I didn't know that. Thanks for mentioning it.

It does seem like there's a bit of a demand for a zsh framework (that doesn't exist yet) somewhere between a raw config and OMZ, but I'm not aware of a popular, actively developed, well supported one.

Thank you so much for the incredibly detailed and helpful explanation regarding the status of the repository @belak. I am sure many other people who are also curious will find that response very helpful!

I'd like to thank you and the other maintainers for the hard, likely often (un-rightfully) thankless work you all have done. I was unaware of the situation with the repository owner, but it sounds quite difficult and you guys have done a great job keeping things running in his absence! Thank you so much for responding despite being on paternity leave, and I wish the best of luck to you and the new mini-programmer!

As a side note, I do think that this is correct:

It does seem like there's a bit of a demand for a zsh framework (that doesn't exist yet) somewhere between a raw config and OMZ, but I'm not aware of a popular, actively developed, well supported one.

As, while I have considered @romkatv's zsh-for-humans, I was a little concerned with it coming with so much out of the box and being difficult to integrate existing plugins with. What I'm looking for is more optimizations than quick functionality. I started with prezto, because at the time, it was the fastest framework available (that I could find at least). I am not a stranger, nor adverse, to writing extensive configurations and scripts, having modified quite a few of the prezto modules over time to fit my purposes, written some zle widgets, advanced customization on p10k (one if which romkatv helped me with and I am still thankful for that), and other things, but optimizing remains quite the difficult task as my personal code-base grows, so having a framework to keep things organized and the bulk of it optimized/maintained by more knowledgeable scripters is helpful.

Having messed with a number of the modules though, I fully understand what you were referring to by them 'lacking focus' and being difficult to debug, as often times to trace down what I need requires quite a bit of grepping, keyword searching, echo statements, etc. Given that you said it is fairly minimal, I think your zsh-utils may fit my purposes much better, or at least provide some inspiration, so I'll take a look at it!

As, while I have considered @romkatv's zsh-for-humans, I was a little concerned with it coming with so much out of the box and being difficult to integrate existing plugins with.

I'm totally OK with people not using my stuff but just wanted to clarify a couple of points here.

It's not more difficult to use third party plugins with zsh4humans than with zplug, zgen, antigen and similar. It's just not something you'll want to do because for every useful third party plugin there is a better solution within zsh4humans. Well, not for every useful plugin but for many.

It's also worth mentioning that plugins don't compose in zsh very well. Even just using zsh-syntax-highlighting with zsh-autosuggestions causes integration issues that result in high input latency, incorrect highlighting and blinking. Powerlevel10k also has to be defensive in order to survive in unknown and often hostile environments. This has costs. But when p10k finds itself in zsh4humans, it drops many of its defenses and workarounds and becomes faster. I'm already used to zsh4humans and when I test other dotfiles that use plain plugins I immediately notice just how jarring all those minor issues are.

@zbirenbaum It's not dead, but it needs more maintainers. Thanks for contributing. I have invited you as a collaborator. Thank you.

@romkatv There is no sandboxing or namespaces. The more plug-ins you use, the worst the experience. Plug-ins are developed independently and likely to be incompatible. Syntax highlighting is quite complex. Issues have been known with it. Debugging shell code is primitive.

@sorin-ionescu Thank you very much for the invitation, I am happy to help out with maintaining Prezto and accepted the invite just now.

Will close the issue as there are not discussions pending!