Hacker News new | ask | show | jobs
by raister 2201 days ago
I will probably get downvoted a lot, and this is more or less pertinent to this, so here's a rant: I am quite sick to make software work these days: someone coded something using Python3.6 and numpy1.18.5 then three years pass. Now, it's Python3.8.9 and the software is incompatible with it, so now I have to download Python3.6.5 (not Python 3.6.1) e try to make things work. But then TLS/SSL was discontinued and I'm getting weird messages. Download the source files, ./configure, make, make install multiple times adding different parameters, add new repositories to apt, try to download the right packages, end up installing the latest Python3.8.9, and other things I don't want. And the software still not works.

Oh boy. Something is got to change in making software.

4 comments

Have I got some nixpkgs to sell you then :)

Really though, with the nix package manager (https://nixos.org/), if anyone at any point in time had a working nix package for a given program, and as long as all the inputs (source code) are still either online or cached somewhere with the same sha256, it's possible to get the exact same output.

This works with very few exceptions. Some things, like systemd dbus calls, runtime calls to an internet api that might have changed, other runtime impure things, will of course be exceptions. But in general, there aren't other exceptions. It doesn't matter if your computer has python3.9 installed, nix doesn't mind using python3.6.5 for one old package.

So yeah, nix solves exactly the problem you're complaining about. I agree something's broken in other distros, but nix fixes it.

Note, others will say containers solve this, and that's also sorta true. If someone had a docker image laying around with exactly that version of software installed and working, and you can still download said image, you'll get a working setup that way. But actually rebuilding the container (unless it's built with nix) is unlikely to be as nicely reproducible, and it misses some nice properties as a result.

Also, I can see why you might get downvoted since this isn't really that relevant to the post. It's not just free software that suffers from the problem of shipping and packaging software being a space full of unreproducibility and incompatibility

That doesn't fix anything but just pushes the problem further down the road. You are simply not upgrading the python version and running the identical three year old version.
> I will probably get downvoted a lot

Because this is not relevant with the topic at all?

It's kinda relevant: I imagine sending kids an assignment 3 years old and make them run with current software versions... A lot of them would be disgusted by this back-and-forth installing, tweaking, re-installing, virtual envs, all of that, and will only uses windows let's say, which hides almost everything from the user these days. I typed "python" on windows the other day and it open the MS-Store, asked me to install Python3.8.3. I said OK. Then: where did it put it? The folder is like a crazy sequence of numbers somewhere in the structure. Is this right? For users, maybe, for developers, a nightmare.
> I typed "python" on windows the other day and it open the MS-Store, asked me to install Python3.8.3. I said OK.

This is exactly why the proprietary software like Windows is so bad for you

I know! That's exactly my point! I didn't like it when it landed somewhere in my drive. I'm not saying proprietary is good, I'm saying it's better (these days), despite this little things that they do for high-level users. In a nutshell: they don't know who their users are: beginners, intermediate, advanced. They have to appease a lot of users, so they do these things and usually get away scot free.
I still don't see the relevance.

How does this relate in any way to "proprietary vs free/libre" software used in classes?

Proprietary sw: easy to use/maintain, fun, works most of the time, professional developers behind it, profit.

Open source sw these days: several versions, constant tweaking, works so-so (depends on the software), semi-professional developers working on it (I am not saying they're not good) or amateurs (with amateur designs), not for profit, of course. EDIT: remove double 'multiple versions'.

Proprietary sw: once discontinued for one reason or another, you're pretty much fucked up

OSS: You can still manage to sorta make it work

I guess my point is, if the software GP talked about was proprietary, he wouldn't have known what was wrong in the first place.

I think an example might be in order, because the case you mentioned sound like a quite unlikely case. Python 3.6 had some of the most frequently code affecting changes of how one writes code in Python, while 3.8 did not have that much of frequently code affecting changes in my experience. Although I have not used async much yet. I am using Python almost every day at the job and have no issue with 3.8 at all and also did not have to port anything, although writing for 3.6 before. I think they are doing a great job of avoiding incompatibilities.

For the case of numpy, some pretty obscure functions must have been used then. Usually there will be deprecation warnings ahead of time and a bit ofsearching will clear up, what you should use instead, going with later versions. Also they don't simply remove the dot product or something.

So that's why I think an example would help your post and make people understand that specific case.

Haha this annoys me too but I cannot see why you posted it on this thread.