Always grateful when 'make' just works, even if it's a wrapper around a bunch of baroque nonsense, especially when it's a wrapper around a bunch of baroque nonsense.
I guess I'm old, but “clone, build in one step, install in one step” should be the baseline minimum standard of codebase ergonomics.
I mean, you switched to aardvark/gruntmaven because bazel ninja womble didn't integrate well with chumbawumba sconsburgler and a fraggle zumba donkastonk pipeline wouldn't support reflocolative combobulates? Great. Nobody should have to give a shit about that to build your software. They should be able to type 'make' and watch and if that breaks it’s a bug.
@mhoye I'm surely going to get roasted for this as fedi seems to hate containers, but imo this is *the* use case for a container / oci image / not {snap,flatpak}
Do whatever 4d psychic damage crazy bullshit to build your thing but also ship it with a reproducible build environment that can be instantiated on a workstation.
@elebertus @mhoye This is very much why I made that thread the other day like "you can hate containers, but please understand the bleeding wound they gauze over for the median UNIX-derivative toucher" (not quite in those words, but yeah). Containers really help *formalize* your dependencies, assumptions, and processes - if you're hanging onto the Dockerfile or comparable recipe - while also allowing most of your audience to live their whole natural lives without caring. If you do have to care sometime, the recipe is your audit trail for studying what the heck is going on.
Containers still have their flaws (and are absolutely offensive to me as a solution for perceived issues in the desktop app space), but they do solve some problems that are currently hard to find better alternative solutions to.
@MaddieM4 @elebertus @mhoye I don't know, the problem is that containers bring their own problems to the table.
Yes, in a way it simplifies things because suddenly everyone is on a "single environment". But I find Docker very problematic. Podman is nice, but then some people want to use Docker anyway.
Unfortunately, any answer has its problems. At work we currently use nixpkgs for dependencies, but that also brings its own problems.
@coder @MaddieM4 @mhoye @elebertus for internal projects, my preferred way is to hope that I only have to support a limited number of environments, and make sure there's up-to-date instructions for all of them. I'm likely lucky, but in the projects I've worked on, this has not been so difficult!
My big issue is with having to support macOS or Windows, because frequently, work will not provide me environments.
@coder @MaddieM4 @elebertus The thing is, if you know your dependencies you can get from there to whatever containerization you want pretty easily. But the reverse is very, very not true.
I mean, Docker was born because somebody told an ops person "well it works on my machine" and the ops person said "well we'll ship your machine then" and from the stories I've heard it took _years_ to stabilize and secure AWS after starting with that as a foundation.
@coder @mhoye @elebertus I hear you about Nixpkgs. What's kind of a funny coincidence is that I literally started writing a package manager to be a similar tool to Nix but with a lot more engineering and UX emphasis (#Layover), because I found Nix's pros compelling but the cons agonizing. Unfortunately I detoured into making a new programming language to implement it in (#pronelang), and then got sick in a way that slowed down progress significantly. C'est la vie, I guess 🤦♀️
> know deps -> containerization; reverse is space aids
Exactly. Which to your original point of `make`-n-bake, who cares if it is maven, or ninja, or whatever build system, thats all good. When you start having deps on things like gcc and openssl thats where containers start being a lot more friendly.
Which I think maybe to the security point too is your systems running the containers may be patched and modern but that doesn't prevent someone from copy-pasting some reckless pin on a not safe version of openssl for example.
Which.. there is also an entire ecosystem around enforcing container standards and scanning (as I'm sure you're aware).
I still don't really get the hate for containers outside of my example though.
@elebertus @mhoye @coder @MaddieM4 I wrote about the topic here:
https://alex.corcoles.net/notes/tech/containers-might-not-be-the-right-answer
It really depends. In any case, I agree that software should be designed to be easy to run. In some cases, containers can be the right answer.