Skip to content
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

Questions about project status and future #253

Closed
maximbaz opened this issue Oct 8, 2019 · 4 comments
Closed

Questions about project status and future #253

maximbaz opened this issue Oct 8, 2019 · 4 comments

Comments

@maximbaz
Copy link
Contributor

maximbaz commented Oct 8, 2019

I love your work, I'm just a bit confused about how you position the project, so I'd appreciate if you could clarify some things (others may find this interesting too!).

Apologies if you explained this elsewhere, I tried to search but didn't find anything.

  1. powerlevel10k is described as "A fast reimplementation of Powerlevel9k ZSH theme", so it's not a fork but a complete rewrite, correct?
  2. You probably considered contributing to powerlevel9k directly instead of maintaining your own thing, what made you choose not to do that?
  3. powerleve9k seems to be active project, so are you keeping this project on par with it, constantly pulling in their new improvements?
  4. The readme says "You should be able to switch from Powerlevel9k to Powerlevel10k with no visible changes except for performance", so is it always going to be backwards compatible with powerlevel9k, even at the cost of not implementing some new cool features? But for example you've just added a new azure section, doesn't that already prevent users from switching between these two prompts?
  5. I noticed that when configuring p10k I use POWERLEVEL9K_ variables, not POWERLEVEL10K_, if you are not planning to merge powerlevel9k and powerlevel10k in the future, why not reduce the confusion and rebrand everything to powerlevel10k, or maybe even a completely new name?
  6. What about libgit2, you have a fork that currently says "46 commits ahead, 114 commits behind libgit2:master" - are you planning to contribute this back and eventually use upstream libgit2, and if not, why not?

Thanks 🙂

@romkatv
Copy link
Owner

romkatv commented Oct 8, 2019

  1. powerlevel10k is described as "A fast reimplementation of Powerlevel9k ZSH theme", so it's not a fork but a complete rewrite, correct?

Technically this is a fork. You can see it in the history of commits. However, if you try to diff the code, you'll see there is no overlap between p9k and p10k. Both themes have most code in a single file, so diffing is relatively straightforward if you want to try it.

  1. You probably considered contributing to powerlevel9k directly instead of maintaining your own thing, what made you choose not to do that?

This is the issue I opened to discuss my first performance improvement in powerlevel9k: Powerlevel9k/powerlevel9k#1170. After a few days it was apparent that our preferred innovation speed is very different, and that no significant changes can be made to the mainline powerlevel9k, neither by me nor anyone else. I opened an issue to discuss once I had the first noticeable performance improvement. While going back and forth with the devs I kept optimizing things. I had a working implementation of gitstatusd and a 10x faster theme across the board before anyone from p9k even acknowledged that p9k does indeed have performance issues and it's not a problem with my machine or my zsh config. At this point I forked and let the powerlevel9k devs know that I did.

  1. powerleve9k seems to be active project, so are you keeping this project on par with it, constantly pulling in their new improvements?

What makes you think it's active?

  1. The readme says "You should be able to switch from Powerlevel9k to Powerlevel10k with no visible changes except for performance", so is it always going to be backwards compatible with powerlevel9k

It'll always be backward compatible with the current state of powerlevel9k. If powerlevel9k breaks backward compatibility (meaning that it starts producing different prompt for old configs), powerlevel10k will not follow suit. It will not break user prompts. The promise of p10k is that you can keep your config forever and it will work the same way. You can safely update p10k itself to pick up bug fixed and performance improvements.

... even at the cost of not implementing some new cool features?

This doesn't follow, does it? Most things in p10k are new compared to p9k. p9k functionality is a small subset of what p10k can do.

But for example you've just added a new azure section, doesn't that already prevent users from switching between these two prompts?

There is no promise that p10k config works with p9k.

  1. I noticed that when configuring p10k I use POWERLEVEL9K_ variables, not POWERLEVEL10K_, if you are not planning to merge powerlevel9k and powerlevel10k in the future, why not reduce the confusion and rebrand everything to powerlevel10k, or maybe even a completely new name?

Compatibility with p9k configs is an important feature. It allows p9k users to switch to p10k without changing their configuration and without having to get used to new prompt. Clone p10k, switch your theme and your prompt is faster. This is great. Note that p9k is still the most popular zsh theme, so there are many users who can be made very happy by investing less than a minute of their time. Most of them don't know this option exists though.

  1. What about libgit2, you have a fork that currently says "46 commits ahead, 114 commits behind libgit2:master" - are you planning to contribute this back and eventually use upstream libgit2, and if not, why not?

You can read libgit2/libgit2#5038 and follow links from there if you are curious. The short story is that while waiting for the first tiny PR to get reviewed, I've already had a dozen more in the pipeline that were orders of magnitude more complex. If project owners cannot accept PRs fast enough, I should either get satisfied with the current state of the project (slow) or fork.
I chose the latter. I don't rely on libgit2 much because the core algorithm is rewritten from scratch. And it's not even the same algorithm. I also try to gauge interest among git folks (not libgit2) whether they care about improving git status performance by 10x with a new algorithm. Got no reply, so I suppose they don't consider this important.

FWIW, my contributions to zsh itself have fared much better. Several of my commits have been accepted and I now have commit access to the repo. There is only one patch that I gave up on even though I think it's good. See #175.

@romkatv
Copy link
Owner

romkatv commented Oct 8, 2019

Some more related reading if you feel like it.

My posts related to p10k that I think are pretty good:

If you have a taste for controversy:

@maximbaz
Copy link
Contributor Author

maximbaz commented Oct 8, 2019

Thanks for the detailed reply!

powerleve9k seems to be active project, so are you keeping this project on par with it, constantly pulling in their new improvements?

What makes you think it's active?

I admit I didn't dig deep, I only checked the commits and it seems there's some activity in the next branch (last commit 15 days ago) https://github.com/Powerlevel9k/powerlevel9k/commits/next

No comment about everything else 🙂

There is no promise that p10k config works with p9k.

Aaaaah, this is what I missed. I incorrectly interpreted "You should be able to switch from Powerlevel9k to Powerlevel10k" as if I should be able to switch back and forth, but now I understand it's a one way street. Makes perfect sense now.


My personal impression is that you care about performance and innovation and you want to be able to keep improving fast; neither p9k nor libgit2 provide the opportunity for you to do it, so you opted for maintaining your own thing. I can totally understand this, it kinda reminds me a bit of spaceship, where I've been using my own fork because it's slow and we couldn't agree on implementing async rendering for 2 years now (since the first PR was opened)...

I got my answers, thus closing 🙂

@maximbaz maximbaz closed this as completed Oct 8, 2019
@romkatv
Copy link
Owner

romkatv commented Oct 8, 2019

Thanks for the detailed reply!

powerleve9k seems to be active project, so are you keeping this project on par with it, constantly pulling in their new improvements?

What makes you think it's active?

I admit I didn't dig deep, I only checked the commits and it seems there's some activity in the next branch (last commit 15 days ago) https://github.com/Powerlevel9k/powerlevel9k/commits/next

next is the development branch with unstable code. Every now and then it's supposed to be merged into master, which signifies a release. Sometimes there are also bug fix releases. This iteration of next has started over a year ago.

Here's the graph of commits from https://github.com/Powerlevel9k/powerlevel9k/graphs/commit-activity:

image

My personal impression is that you care about performance and innovation and you want to be able to keep improving fast; neither p9k nor libgit2 provide the opportunity for you to do it, so you opted for maintaining your own thing.

Something like this. The projects I forked are small, so maintenance is easy. p9k isn't just small but tiny, and since I rewrote it completely there is no maintenance of legacy code anymore.

I can totally understand this, it kinda reminds me a bit of spaceship, where I've been using my own fork because it's slow and we couldn't agree on implementing async rendering for 2 years now (since the first PR was opened)...

Two years... shit.

romkatv added a commit that referenced this issue Aug 18, 2021
2ecd9907 add logging to debug #1477
74010456 add a TODO to fix #254
864f1caf Trim '\w' part of bash prompt. (#253)

git-subtree-dir: gitstatus
git-subtree-split: 2ecd990706255d2000fedbde3b2d2353f63d69a1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants