4 ms·
Or just use your existing language of choice, but incorporate Nix (which is based on the same idea), or go all-in and use NixOS (or Guix, very honorable mention
by pmarreck 4y ago
Or just use your existing language of choice, but incorporate Nix (which is based on the same idea), or go all-in and use NixOS (or Guix, very honorable mention) to get the same ideas all the way to the bare metal of the hardware (which IMHO is where the reach of this idea belongs, it is that good)
For example, there are tools that convert traditional lockfiles to nix flakes.
Nix is more intimidating than it actually is. It’s basically JSON with pure functions and some syntactical-sugar shorthands that end up being very nice.
“Flakes” are basically lockfiles for Nix. Before Flakes, Nix still used hashed dependencies though. So everything you install with it is more or less guaranteed to also automatically pull in everything it needs to run, without conflicting with the needs of anything else.
- rileyphone 4y agoRemoving layers of abstraction is necessary for building greater things on top. Not that Nix isn't better than what exists currently, just ideally the OS/language disconnect can be resolved, in line with Dan Ingalls. TBH I'm not really sold on Unison as a language, but the idea is certainly intriguing. Would be a lot more interesting if it was as at home in the browser as it is on unix - as it stands I don't see a real use case for it. Perhaps a killer app will come along, but I think for a language to succeed with this idea it will have to be a lot more pragmatic (aka further from Haskell). Time will tell.
- dustingetz 4y agoi upvoted, love the reference to os/language disconnect. But is it historically true that we must remove layers to build greater things?
- naikrovek 4y agocan someone tell me what this is? this instinct to "one-up" posts? "forget that, try this!" "that's nothing, look at my favorite thing!" this is rampant all the time in all posts no matter what they're about on this site and I do not understand it. Root comments reminiscing about The Old Days also steal thunder from the topic and I don't understand why people do it. start a post about Your Favorite Thing if you want to go on about it; please stop hijacking other threads because you wanna talk about Your Favorite Thing. let people talk about This Thing...
- pmarreck 4y ago> can someone tell me what this is? this instinct to "one-up" posts? That’s not at all what I said. I just said that the fundamental idea here is already available for everyone at the component level for your entire system. Unison just takes this idea down into the language. A new language that you’d have to convert 100% of your work into in order to benefit from, and then you’d STILL suffer from the same things outside that ecosystem in your software, that Nix solved.
- bee_rider 4y agoThat’s like the second most annoying thing people do around here. The most annoying thing is… Just kidding :) I think it is because it feels at least vaguely like contributing, but also allows the poster to show off a bit by claiming some deeper knowledge/better tool or something like that. I dunno. The threaded nature of the conversations means that it just forms its own tangent. It might steal a little oxygen from the on-topic conversation, but it seems mostly harmless otherwise. On good old fashioned phpBB style boards this sort of thing would never happen, because…
- moeris 4y agoAt least part of it is trying to save people work, I imagine. "That's a cool tool, but there's an existing, well-supported one that already solves those problem." Of course, the problem here is that Nix may be similar to this language, but they solve different problems. So I imagine the writer is just mistaken, and it comes off as one-upsmanship.
- striking 4y agoAs someone who could reasonably be called a Nix zealot, who has just had to spelunk through far too many layers of abstraction and infrastructure to get some custom TLS certificates recognized on a macOS+Nix setup, I welcome attempts to simplify the stack rather than wrap everything. Nix is great when you're on the happy path and its ability to offer a near-perfect reproducible environment right off the bat is unparalleled, I can't think of anything else that does nearly as well. But there are plenty of ways to fall off of the happy path, and when that happens it can be a fairly lonely or worrying experience. Unison looks like it takes the whole development experience and owns it, and that allows for faster experimentation across layers of the stack. I think the implementation is pretty neat and I really hope they continue working on it.
- eikenberry 4y ago> Nix is more intimidating than it actually is. The intimidation is about learning it. That there is no (AFAIK) existing guide that is good enough to make it less intimidating. IE. it shouldn't be intimidating once someone writes a good intro to it. Does anyone know a good introduction to Nix that uses the new better 'flake' based tooling? Just something simple, like to install a single package or setup a docker container.
- jitl 4y agoIt seems like Unison can reasonably memoize computations at a much more granular level than Nix. It bears some commonality with Skiplang.
- __MatrixMan__ 4y agoI agree and I think it's potentially huge. Think of how much money is spent on compute for CI pipelines which are calculating 99% of the same values today that they were yesterday. Under this model they'd only have to compute the parts that changed. And it's not just saving on compute, very fast test results is a dev force multiplier.
- __MatrixMan__ 4y agoWhen you use your nix-wrapped language of choice, do you nixify your unit tests so that their results are in the cache and don't need to be reran except partially when necessary? AFAIK that's atypical, but if you've got it working please share a link.
- pmarreck 4y agoElixir (the language I primarily use) already only runs the unit tests that cover the code that has changed. But you’re right in that that is a great idea.
- eximius 4y agoUntil Nix gets some kind of concept approximating interfaces such that the compiler can tell me "hey, you're missing this field to meet this interface" or "the shape of the argument for this thing is blah", it will remain a horrible experience in the same way that an exotic Ruby codebase is a horrible experience. Everything is based on convention or code you have to go spelunking for.
- goodpoint 4y agoNix does not implement the same features of Unison at all.
- pmarreck 4y agoNot at the language level but at the component or binary/lib level. And without requiring you to switch all of your work to this language in order to gain the benefit.