kitproj / kit

Kit makes your dev loop crazy fast
48 stars 2 forks source link

Comparison to other Task Runners? #36

Open agilgur5 opened 1 year ago

agilgur5 commented 1 year ago

For example, task and xc are existing, quite popular task runners written in Go that largely cover the same feature set.

And other tools that have slightly different goals, such as just, mask, and Earthly (Earthly is my current go-to for a variety of reasons).

agilgur5 commented 1 year ago

Related: https://github.com/argoproj/argo-workflows/pull/11928#issuecomment-1745943439.

Pros:

Cons:

alexec commented 1 year ago

I wrote Kit because I could not find a tool to do what I want and I knew I could write one easily because I’d written similar code in the pst.

I took a look at your list of tools and Task is most similar. I especially love how the YAML syntax is so similar.

I doesn’t look like it has as sophisticated process management, but maybe they’ll add it?

If Task had all features of Kit, I’d retire Kit.

Kit is not trying to solve the “Makefile is ugly and clunky” problem that other tools are trying to solve, though that is an important problem.

Markdown as code is solving a problem that actually is solved by commenting your build file, not adopting a whole new tool chain.

I find build files are “sticky” and once you’re adopted one, is it hard to change.

alexec commented 1 year ago

One final comment, Kit is actively maintained, but it is feature complete and hasn’t had any bugs for months. You won’t see much activity, and that is a good thing.

agilgur5 commented 1 year ago

I doesn’t look like it has as sophisticated process management, but maybe they’ll add it?

Yep that seems to be the main difference and task indeed is lacking on that front as I have learned. This is also not something that kit advertises or documents too well -- process management is a pretty big feature that many task runners do not seem to have (including make).

If Task had all features of Kit, I’d retire Kit.

I find build files are “sticky” and once you’re adopted one, is it hard to change.

Good to hear 👍 . Yes, this is exactly why I ask this question; no one wants to invest a lot of effort into a specific tool to then have to switch later in time.

Markdown as code is solving a problem that actually is solved by commenting your build file, not adopting a whole new tool chain.

I would disagree that it is solved so simply. There's a reason these kinds of tools are popular (and the ones I listed are far from the only ones). Developer scripts are intended to be read by humans very often and Markdown is a format for humans. Developer scripts are also a great way to get familiar with a repo, so they can serve a similar purpose to a CONTRIBUTING.md or a README.md, with documentation directly in-line.

But that is largely an orthogonal feature in any case; it is not critical but is a nice-to-have. I did mention initially that it is a somewhat different goal.

One final comment, Kit is actively maintained, but it is feature complete and hasn’t had any bugs for months. You won’t see much activity, and that is a good thing.

I don't disagree with this perspective that lack of activity is not bad -- I myself maintain many repos that do not get many issues nowadays, but those normally have a very small scope and have had significant work on them to get to a stable point. Notably, there are many types of issues that only become more obvious after significant usage. (I would also take care to note that "actively maintained" means more than just commits as well).

But there are certainly missing pieces to kit, such as #30 which we've chatted on prior. I also mentioned things like spec integrations and documentation a few times above (both of which task excels in, for example). Other users have mentioned documentation as well. I would not say it is in an "ideal, no more work needed" state as such.

Bugs were mentioned downstream in Workflows; Julie has more experience with the env variable issue. I did say to file an issue here as well so it can be looked into, but it wasn't clear if this project was one of your priorities (Slack thread has more details).

alexec commented 1 year ago

Thank you. Feedback is always valuable. I didn’t know about Task, so that was good to learn about.

It’s was pleasing to see that Workflows users are adopting Codespaces and Nix as I think there’s a paradigm shift going on in OSS as repositories with Codespaces will be much easier to work with.

alexec commented 1 year ago

Kit is not a build tool like the mentioned tools. It is not intended to replace Make or similar.

agilgur5 commented 1 year ago

Talked offline a bit about these on CNCF Slack. Writing below for posterity

It’s was pleasing to see that Workflows users are adopting Codespaces and Nix as I think there’s a paradigm shift going on in OSS as repositories with Codespaces will be much easier to work with.

Nix is more of a "dependency management tool", so a bit orthogonal. devenv has some simple foreman-like process management though (see a comparison here)

Re: Codespaces, there does seem to be some issue with it and kit as well, but I'm not sure what specifically yet. See https://github.com/argoproj/argo-workflows/pull/11928#issuecomment-1754165093 and https://github.com/argoproj/argo-workflows/issues/11423. EDIT: I filed https://github.com/kitproj/kit/issues/44 on this for posterity.

Kit is not a build tool like the mentioned tools. It is not intended to replace Make or similar.

So notably the issue is titled "Comparison to other Task Runners?", not "build tools". While make is both a "task runner" and "build tool", I wasn't comparing the build tool functionality here. Earthly is the only tool that compares on that front. As far as I know, make is primarily used as a build tool in the C ecosystem, whereas these alternatives are all in other ecosystems as simplifications of the task runner functionality of make All the others I mentioned (task, xc, mask, just) are purely task runners. They all compare themselves directly and often explicitly to make, despite only doing the "task runner" portion.

So, to clarify, those are the existing terminology / language and comparisons in the "task runner" space that I was using.

alexec commented 4 months ago

image

agilgur5 commented 4 months ago

mmm I think that table is a bit incomplete -- I wrote up some comparisons above that I think would be good to include. In particular, "background tasks" part are particularly relevant and a feature many task runners don't have. tbh, kit could potentially purely occupy the space of tools similar to foreman and just be best-in-class in that area and let other tools do other parts of task running. Although there is ofc overlap between those two functionalities.

Other notes: