• 1 Post
  • 22 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle



  • Arch is at least more likely to update to a fixed version sooner, and someone getting something with pacman is going to be used to the idea of it breaking because of using bleeding edge dependencies. The difference with the Flatpak is that most users believe that they’re getting something straight from the developers, so they’re not going to report problems to the right people if Fedora puts a different source of Flatpaks in the lists and overrides working packages with ones so broken as to be useless.



  • If you write cross-platform software, the easiest solution is usually to pretend everything’s Unix. You’ll hit some problems (e.g. assuming all filesystem APIs always use UTF-8 will bite you on Windows, which switched to UCS2 before UTF-8 or UTF-16 were invented, so now uses UTF-16 for Unicode-aware functions as that’s the one that’s ABI compatible with UCS2, and passing UTF-8 to the eight-bit-char functions requires you to opt into that mode explicitly), but mostly everything will just work. There’s no XDG_CONFIG telling you to put these files anywhere in particular, as Windows is Windows, so most things use ~ as a fallback, which Windows knows to treat as %USERPROFILE%.


  • You can jam the Windows UI by spawning loads of processes with equivalent or higher priority to explorer.exe, which runs the desktop as they’ll compete for CPU time. The same will happen if you do the equivalent under Linux. However if you have one process that does lots of small allocations, under Windows, once the memory and page file are exhausted, eventually an allocation will fail, and if the application’s not set up to handle that, it’ll die and you’ll have free memory again. Doing the same under every desktop Linux distro I’ve tried (which have mostly been Ubuntu-based, so others may handle it better) will just freeze the whole machine. I don’t know the details, but I’d guess it’s that the process gets suspended until its request can be fulfilled, so as long as there’s memory, it gets it eventually, but it never gets told to stop or murdered, so there’s no memory for things like the desktop environment to use.



  • It’s easy to get pressured into thinking it’s your responsibility. There’s also the risk that an unhappy company will make a non-copyleft clone of your project, pump resources into it until it’s what everyone uses by default, and then add proprietary extensions so no one uses the open-source version anymore, which, if you believe in the ideals of Free Software, is a bad thing.





  • You can’t trust users to make informed decisions about cybersecurity as most users don’t have the necessary background knowledge, so won’t think beyond this popup is annoying me and has a button to make it go away and I am smart and therefore immune to malware. Microsoft don’t want Windows to have the reputation for being infested with malware like it used to have, and users don’t want their bank details stolen. If something’s potentially going to be a bad idea, it’s better to only give the decision to people capable of making it an informed decision. That’s why we don’t let children opt into surgery or decide whether to have ice cream for dinner, and have their parents decide instead.

    The comment you’re quoting was replying to someone suggesting a warning popup, and saying it would be a bad idea, rather than suggesting the secure boot UEFI option should be taken away. You need at least a little bit more awareness of the problem to know to toggle that setting.


  • It doesn’t necessarily work that way, though. If tests tell you you broke something immediately, you don’t have time to forget how anything works, so identifying the problem and fixing it is much faster. For the kind of minor bug that’s potentially acceptable to launch a game with, if it’s something tests detect, it’s probably easier to fix than it is to determine whether it’s viable to just ignore it. If it’s something tests don’t detect, it’s just as easy to ignore whether it’s because there are no tests or because despite there being tests, none of them cover this situation.

    The games industry is rife with managers doing things that mean developers have a worse time and have the opposite effect to their stated goals. A good example is crunch. It obviously helps to do extra hours right before a launch when there’s the promise of a holiday after the launch to recuperate, but it’s now common for games studios to be in crunch for months and years at a time, despite the evidence being that after a couple of weeks, everyone’s so tired from crunch that they’re less productive than if they worked normal hours.

    Games are complicated, and building something complicated in a mad rush because of an imposed deadline is less effective than taking the time to think things through, and typically ends up failing or taking longer anyway.




  • Shared components work brilliantly in a fantasy world where nothing uses new features of a library or depends on bug fixes in new versions of a library, and no library ever has releases with regressions or updates that change the API. That’s not the case, though, so often there’ll exist no single version of a dependency that makes all the software on your machine actually compile and be minimally buggy. If you’re lucky, downstream packagers will make different packages for different versions of things they know cause this kind of problem so they can be installed side by side, or maintain a collection of patches to create a version that makes everything work even though no actual release would, but sometimes they do things like remove version range checks from CMake so things build, but don’t even end up running.



  • The way I like to think of it is that non-copyleft licences are like giving everyone freedom by saying there are no laws - suddenly, you can do anything, and the government can’t stop you! However, other people can also do anything and the government can’t stop them, either, and that includes using a big net to catch other people and make them their slaves. The people caught in the nets aren’t going to feel very free anymore, and it’s not unreasonable to think that a lot of people will end up caught in nets.

    Copyleft licences are like saying there are no laws except you’re not allowed to do anything that would restrict someone else’s freedom. In theory, that’s only going to inconvenience you if you were going to do something bad, and leaves most people much freer.

    The idea is basically that you shouldn’t be able to restrict anyone else’s freedom to modify the software they use, and if you’re going to, you don’t get to base your software on things made by people who didn’t.