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 "Other people have to be able to build this" is not the social norm for the community bazel et al service
@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.
More seriously, here is a true fact: if you can’t get from a bare, minimal-install machine to “ready to build” in one step, then you don’t know what your dependencies really are. If you can’t get from “ready to build” to a working binary in one step, then you don’t know what your build process really is.
You might not care! But if the day comes that you suddenly do need to care a lot, whether for a new contributor or a red hot CVE, learning will be very difficult.
@owen I haven’t yet found a project that relies on bazel that deigns to acknowledge that other people exist.
@mhoye @owen why would you bother to build it? Just run our 9 containers on your server. https://github.com/michielbdejong/fxa-self-hosting
@datarama
One could go so far as to call it a shipping ship shipping ship shipping shipping ships.
Not me, of course, but someone could.
@silvermoon82 I am sure that there are places on the internet where people are shipping shipping ship shipping ships shipping shipping ships and ship shipping ships shipping shipping ships.