Coming up with a policy for "built in" themes #10635
Replies: 10 comments 11 replies
-
My personal preference would be to limit the themes we have in the repo to the default one, a few of the base16 themes and some number of popular themes. We could have a follow-up discussion to figure out which themes we would keep, but basically we would limit ourselves to a constant number of (say, 10) "big name" themes, for example catppuccin and tokyonight. Other themes would be maintained in personal or upstream repositories (some themes have repos with color schemes for a bunch of different programs for example). We would try to maintain these limited in-repo themes more rigorously. This would hurt theme discovery, but I think that goal is better accomplished by (community) projects, for example https://vimcolorschemes.com/ from the Vi world. |
Beta Was this translation helpful? Give feedback.
-
An option I think is interesting is to create a separate repo for themes, either under this organization or a separate GitHub organization. Optionally we could source the themes from this repo on release, so we still end up with a large number of "built in" themes. A community theme repo could hand out write access much more freely than we do for the main codebase here, and there could be a system of maintainer(s) per theme like there is for languages in nvim-treesitter for example. This option would require a lot of community work - I'm not really interested in leading this effort myself. |
Beta Was this translation helpful? Give feedback.
-
Maybe just to add to this: i think one of the reasons we had themes in the repo to begin with was that so we could handle breaking changes more easily and update themes. This hasn't really been effective for a while. We don't do too many breaking themeing changes. The main changes that require themeing updates are adding new features. But requiring a developer to update 134 themes as a requirement for a change to master is completely impractical (just the conflicts and rebasing aline would be a nightmare). In practice adding any new feature results in a flourish of "update theme XY" PRs and issues (and many themes also don't get updated). So while this is a nice idea in theory I think it only works if you have a very small set of "core" themes where mandating an update to themes for a PR (or a maintainer doing it in a followup) is actually practical. I also feel that moving themes out of the repo would result in improved maintainance for themes. We just dont have the bandwidth to triage/test/review all issue and changes related to themes (or keep track of issues). In practice we just merge changes if there isn't anything obiously wrong. Theming issues also just get lost in our fairly large issue tracker. So a more focused repo would help with that. So definitly in favor of moving themes out sooner rather than later. |
Beta Was this translation helpful? Give feedback.
-
I suggest that in the next Helix release notes you ask people to click on a GitHub discussions poll to say which theme they use, then you can get some real data as to which themes are being used the most and which are not. It might be a bit of a chore to create the poll by hand with so many themes, but I am sure AI could automate some of it. |
Beta Was this translation helpful? Give feedback.
-
I'm sure anyone, myself included, will be slightly inconvenienced if our favourite themes don't make the cut. I did really like that my favourite (Dracula) was already easily accessible via the I do like the idea of having an official separate repo with themes. My suggestion is there should be a new feature to pull/install some (or all?) themes from that official repo via something like |
Beta Was this translation helpful? Give feedback.
-
Why not delegating this task to a volunteer? It could be someone without (Rust) programming experience. I like that Helix comes with many built-in themes. Even knowing, that not all are perfect. The config file allows me to fine tune them easily to my personal preferences. And, I do not use all of the features anyway! Suggestion
We could classify the themes in tier groups, like Rust targets, e.g.
This way we continue shipping all themes and ease the burden of maintaining them all with the same care.
So far, Helix comes with (almost) all I need out of the box. I am afraid that with the planned theme selection my favorite ones will be ruled out. |
Beta Was this translation helpful? Give feedback.
-
Trying to think what the path could look like. core themes: maintained in main repo Goals
from a user perspective
Example Steps
Some random thoughts/ideas
DisclaimerI'm mainly just thinking out loud. Hopefully this is useful! I might have a naive understanding. This isn't exhaustive by any mean, and I'm sure there are issues I'm not thinking of. I'm also sure others have more experience moving something out of core than I do. |
Beta Was this translation helpful? Give feedback.
-
you know what's right mikedavis. just off-load the themes to another repo, some official unofficial repo where things are far less guaranteed because.. open-source. Some place where PRs come easy. Let the theme people handle it. It would be nice if it's still part of the helix github organization, so it's easy to find. But if that's too annoying i understand too. It would be nice if there's a command/feature to easily fetch from that repo, and perhaps any other repo, but that sounds like a whole 'nother thing, and gives me nvim config horrors of updating plugins. 😰 i'm happy as long as there's some place to quickly fetch/download a bunch of color themes and upload them too... i personally enjoyed seeing new themes pop up over the development of helix, as from time to time, i like change, and i like to see if there's anything useful out there. Most do suck tho. Or look the same. Not enough love during the porting. The recent ..maybe there can be one theme, like anyway, def just toss it all to another repo for now! Just would need to find some stable folks to maintain/handle PRs..? Maybe can start by asking the people that made/ported the themes.. (and then, once it's in the community repo thing... can create various templates, particularly a 16-color template, to automate generating basic 16-color schemes for helix, likely similar to how wezterm likely does it.) update: just added my theme 😜 |
Beta Was this translation helpful? Give feedback.
-
Do you plan to organize a vote to obtain a ranking for the most popular themes? |
Beta Was this translation helpful? Give feedback.
-
What about the following?
|
Beta Was this translation helpful? Give feedback.
-
We don't currently have a formal policy for when we accept themes. Historically we've accepted basically all theme PRs regardless of popularity or how they look. There are now 134 themes in
runtime/themes/*.toml
at time of writing and it's getting pretty crowded. On the upside it means a lot of options to choose from when getting started with Helix. (Sometimes I try out the built in light themes when I'm working under the sun :). Having a lot of themes is a lot of maintenance burden though. It means that sweeping changes to themes are hard to land. We generally don't require PRs that add a new theme key to add values for it for the existing themes, so when a feature lands that adds a key, there's usually a scramble to update many themes. Even when these keys have fallbacks, it's cumbersome to test the fallback behavior for each theme. Theme maintenance is also a non-trivial amount of review work. It's very straightforward review but over the course of a release we end up coordinating with many theme authors and clicking a lot of buttons total in order to get it done - see the theme change parts of the CHANGELOG for reference.I wanted to open this discussion up to explore some ideas to change how we accept themes. Naively accepting all themes has always been a temporary policy in my mind but I don't have concrete plans for what we should do instead.
Beta Was this translation helpful? Give feedback.
All reactions