Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The manual lists the reasons why using it over make: https://just.systems/man/en/

The question is if those reasons are convincing to someone. The big advantage of Make is that it is probably already installed.



> You can disable this behavior for specific targets using make’s built-in .PHONY target name, but the syntax is verbose and can be hard to remember.

I think this is overstating things a bit. I first read `.PHONY` in a Makefile while i was a teenager and i figured out what it does just by looking at it in practice.

Makefiles do have some weirdness (e.g. tab being part of the syntax) but `.PHONY` is not one of them.


What does it offer over bazel?


Not making you want to shoot yourself in the head.

It does one thing very well, and it has well-written and useful documentation.

It literally just runs commands in a convenient way.


how well does it cache across a build farm?


Did you miss the part that says "it just runs commands in a convenient way" and "it is not a build system"?


[flagged]


?

I'm trying to understand what this tool is and why I should use it for my next project


You could have used two minutes to skim the top of the README. Not all projects make you want to commit suicide. :)


It's not a build system, it's a command runner, it is for different use cases


> The big advantage of Make is that it is probably already installed.

...unless you're on Windows, like me!


Make is installed on Windows, if you install Microsoft's C/C++ dev stack (typically via installing Visual Studio). They just use nmake instead of GNU make. They also include Cmake these days, as it's the common cross platform option.


> if you install Microsoft's C/C++ dev stack (typically via installing Visual Studio).

So I have to install this huge dependency just to use make, when my project is in Python?

Way easier to install just :-)


You wouldn't use GNU Make (the thing that comes for "default" on Linux) with Python either.

What a weird way to converse.


> You wouldn't use GNU Make (the thing that comes for "default" on Linux) with Python either.

But people do use Make all the time for Python projects - as a command runner. Pelican projects, for example, come with a Makefile to start the server, publish, etc.

The whole point of this submission is that many, many people use Makefiles not for incremental builds, but as a convenient place to store commonly used commands. And just is a better and simpler tool than make for that. If you're on Windows, it's a pain to install make, compared to installing just.


Busybox comes with a vestigial make. I wager git might. Those are both in winget.


The manual states that "just is a command runner, not a build system," and mentions "no need for .PHONY recipes!" This seems to suggest that there's no way to prevent Just from rebuilding targets, even if they are up-to-date. For me, one of the key advantages of using Make is its support for incremental builds, which is a major distinction from using a plain shell script to run some commands.


Maybe it’s the stacks I’m using, but I’ve always had incremental happen with language-native tooling like `go` or `cargo`. So for me at least, having lazy eval features like that would be an unnecessary increase in scope and complexity. With Just, I can just throw together different commands and it just works cross platform. I love it.

I much prefer that than the other way, ie letting language tooling become command runners (looking at you npm). That’s the worst of both worlds.


> I’ve always had incremental happen with language-native tooling like `go` or `cargo`

That makes sense, but for me, Make is incredibly useful for incremental file processing outside of programming. I've written tiny Makefiles that use glob patterns to batch-convert thousands of SVGs into PNGs and WebPs, but only for the modified SVG files. I've used Make to batch-convert modified LaTeX files to PDFs and render modified Blender projects into WebM videos for the web. Rendering videos is very time-consuming, so only rendering modified video files is a huge win.


Your first sentence says:

> just is a command runner, not a build system

And then you go ahead and complain that it is poor at building.

If you need a build tool, don't use just. Use make or something else. The purpose of just is to stop putting non-build stuff in Makefiles. And of course, it has a nice set of features that make doesn't.


I think there's been a misunderstanding.

> Your first sentence says

My first sentence was me quoting the Just manual and my second sentence was my observation about what that suggests. I wasn't asserting whether it's true or not, just sharing my interpretation, as I'm not familiar with Just.

> And then you go ahead and complain that it is poor at building.

I did not "complain" I stated that incremental builds, regardless of whether Just has them or not, is one feature I personally like about Make.

Going by the responses I received, Just does not appear to support incremental builds and a simple acknowledgement, minus the vitriol, would have sufficed.


If you need incrementalism, Just is not for you.


The programming languages that I use don't need to be told to not rebuild from scratch so yours is a pretty strange argument.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: