Skip to content

6 Comments

  1. Jason
    July 29, 2025 @ 5:24 am

    Wow. Tell me you have no idea how to use Linux without telling me. No. Linux does not “Linux largely expects users to download source code and compie their own binaries.”. And learn how to use a package manager properly. “So, you could have one program which requires at least version 2.0 of a library, and another program that will not run on anything later than 1.0. If you want both programs to run, you are in “Dependency hell”. Yes. Windows has this as well. Was common with programs that needed specific versions of DirectX and Visual basic libraries. Ever wonder why later versions of Windows had the “compatibility tool” that would emulate and fake earlier versions of Windows to certain programs? Or why you upgrade to a newer version of Windows and suddenly some of your hardware stops working because the manufacturer didn’t bother making updated drivers (Rare in Linux as it supports old hardware for AGES before it gets kicked out of the kernel.).

    “Without bragging, I have nearly 25 years experience working with computers. I am new to Linux, yes, but I have extensive experience in programming, the command line, libraries, and the complexities of operating systems. If it takes me three days just to get a program running without breaking another program, then there is a problem with the operating system. It simply should not be that difficult.”

    Trust me you aren’t bragging. You admit you are new and know virtually nothing about Linux then go on to bash what you don’t know anything about. If it takes you 3 days to get a program running without breaking another in Linux then either you are trying to setup something very obscure or you just aren’t a competent user. The fact you “have 25 years experience working with computers” and can’t figure simple stuff out like how to use a package manager which basically does everything for you… Yea. It’s for sure an 1D10T error.

    Reply

    • PhoenixGames
      July 29, 2025 @ 12:34 pm

      I’ve decided to approve this in the interests of Freedom of Speech, and because you do make some good points, but your tone is a little more hostile than I’d like.

      Many of the programs that I was using were not available with the package manager, or the issues still occurred regardless. I spent, as I said, considerable time reserching the issues that I was having, and discovered many other people encountering the same problems, with the same programs (Specificially pytorch, torchvision, and CUDA, etc), did they not use the package manager properly as well? These are known issues with Linux. In addition, windows doesn’t need a package manager, because it doesn’t have the same issues.

      Was common with programs that needed specific versions of DirectX and Visual basic libraries.

      You are correct, I used to use a games engine called the “Torque Games Engine” from Garagegames, and we did have issues with DirectX compatibility. However that was 20 years ago, and it was for a games engine that would have been relatively obscure at the time. I haven’t run into it on windows since. I’m not saying windows is perfect, but issues like this are vastly more common on Linux. The term “dependency hell” exists for a reason.

      Ever wonder why later versions of Windows had the “compatibility tool” that would emulate and fake earlier versions of Windows to certain programs? Or why you upgrade to a newer version of Windows and suddenly some of your hardware stops working because the manufacturer didn’t bother making updated drivers (Rare in Linux as it supports old hardware for AGES before it gets kicked out of the kernel.).

      With respect, you’re comparing different versions of an OS! There’s a huge difference between a program, or some hardware, breaking when you upgrade from Windows 7 to Windows 10 and having multiple programs randomly stop working because you downloaded and installed another program onto the same system that happens to use a common library somewhere.

      Trust me you aren’t bragging. You admit you are new and know virtually nothing about Linux then go on to bash what you don’t know anything about. If it takes you 3 days to get a program running without breaking another in Linux then either you are trying to setup something very obscure or you just aren’t a competent user. The fact you “have 25 years experience working with computers” and can’t figure simple stuff out like how to use a package manager which basically does everything for you… Yea. It’s for sure an 1D10T error.

      There’s no need to be as hostile as this, but I will address your points anyway. I said I was new to Linux, but that I have extensive computer experience. I was making it clear that I am not a novice user, and if someone with that much experience in computers is having difficulties, it’s likely that the fault is not entirely my own.

      The programs that I was using were described in the post. Whether you consider them “obscure” or not is a matter of some debate. I doubt the average linux user is using Cuda, Pytorch, or Torchvision, or running packages from Github, etc, so maybe you’re right, however it doesn’t change the fact that I could, (and in some cases, did) run the same or similar packages in windows with no issues. Like I said, Sage Attention is supposedly the only thing that I was using that is easier to run on linux.

      Like I said, I was using a package manager where it was available. I was following tutorials to the letter while working on setting up this software, and I researched them well before installing, and still I had issues. I also, as I said, ran into several other users encountering the same issues (Which was fortunate, because I could use their experience to help solve my problems). I am a competent user, and if all I had to do was “use a package manager that does everything for me” then I wouldn’t have needed to make this post.

      Reply

  2. Aphid
    October 2, 2025 @ 9:27 am

    Supposedly, developers are not supposed to break stuff in newer versions of libraries.

    If I define ‘I want torchvision >2.0.0’ in my config, then torchvision 4.0.0 should still work with my program. As long as I use the ABI and don’t depend on internals, things should keep working.

    That is the philosophy of the kernel and a few important libraries, and it works wonders… unfortunately many developers don’t get the memo and break stuff left and right, sometimes for questionable reasons. And you’re right. That’s a problem. It’s a cultural issue.

    If you do want to break what you want to do with your library… provide compatibility. Assume the worst case, that a closed-source program built by a now-defunct company that obfuscates its internals with nasty DRM code a user depends on for interfacing with their 40-year lifespan $4 million dollar MRI machine uses your library somehow and code accordingly.

    It’s really not that hard. In the win32 API, they used all sorts of outdated legacy stuff such as UCS-2 encoding instead of UTF-16 or the more modern UTF-8, because windows 95 predates modern unicode. But instead of changing the behaviour of loadLibrary, they wrote loadLibraryA, and loadLibraryEx and loadLibraryExA, then updated their documentation to tell users ‘here is the newest version you should use’, while keeping the old functions with the same signatures and (mostly) behaviour in the kernel. Only security issues are allowed to break things.

    I’m not the only one complaining about this. Linus Torvalds (who maintains the linux kernel) has the same things to say. If other developers depend on your code, don’t change what it does from under them without a very good reason!

    As a result, even the most insane DRM programs (hello, secuROM) kept running under windows for two decades.

    And like you said Microsoft goes even further by adding compatibility hacks. (https://devblogs.microsoft.com/oldnewthing/ is a great resource) When a program depends on an internal quirk of the memory manager, then windows will restore that quirk in newer versions. While I don’t think Linux developers should go quite that far for everything (not really feasible with the lack of manpower) some core libraries should entertain the thought of doing more (looking at you, libc, for breaking my linux games every two years).

    And for the AI library scenario, it’s quite the same thing. While mostly open source, projects get abandoned left and right, or rely on certain versions of complex tools and don’t have the resources to keep chasing breaking bugs when those well-funded tools play fast and loose with compatibility to keep up with the rapid development in the space. The users are left with broken systems, or with having to do virtualization to keep things compatible (or running docker containers), and using massive amounts of hard drive space.

    I’ve had the same problem, filling up a half-full 512GB hard drive in a doomed attempt to compile ROCm for both diffusion and text generation by hand. I called it quits after the script reached 50 pages worth of code (and I suspect so did my distro maintainer) and tried the manufacturer’s ubuntu based version on my arch distro (which required some major dependency juggling). It shouldn’t be this hard to multiply some matrices!

    Reply

    • PhoenixGames
      October 3, 2025 @ 5:11 am

      Thanks for your comment!

      Yeah, I get that Linux isn’t as bad now as it used to be (Or so I read, anyway), and I’m sure if you’re using Linux for regular computing tasks, it’s probably fine.

      But if you’re on the cutting edge (Such as installing new repos from GitHub, or using rapidly changing AI toolkits, etc), you are going to break stuff a lot.

      You made a great point about the win32 API, and I design my code like that too (At least, I try to!), so that new functionality doesn’t break old functionality.

      Yes, it can be messy to have mylibraryA, mylibraryB, etc, but you know for a fact that you aren’t breaking anything, and creating hell for the dev’s relying on that functionality.

      Linux doesn’t seem to have the same attitude.

      I think that Linux assumes that the people using the OS are experienced devs with the knowledge and time needed to fix broken code and find workarounds. That’s what I mean in my post: Linux is really a dev’s os, which is great! But Windows is for when you want to get stuff done, and not waste time fixing things.

      I’m not saying Linux can’t be used for professional work, of course it can, and it is, but in general, the attitude regarding reliability and functionality is different.

      Exactly, users really shouldn’t have to rely on virtualisation to get code to work. I use virtualisation for 20-year old games, not software that’s just a few months old!

      Reply

  3. Disponat
    October 13, 2025 @ 2:50 am

    As someone currently stuck in dependency hell (also related to ComfyUI), this was cathartic to read.

    Reply

    • PhoenixGames
      October 15, 2025 @ 2:26 pm

      What areas are you stuck on? I might be able to offer some advice?

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *