I’m curious how software can be created and evolve over time. I’m afraid that at some point, we’ll realize there are issues with the software we’re using that can only be remedied by massive changes or a complete rewrite.

Are there any instances of this happening? Where something is designed with a flaw that doesn’t get realized until much later, necessitating scrapping the whole thing and starting from scratch?

  • LeFantome@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    3 months ago

    Linux does this all the time.

    ALSA -> Pulse -> Pipewire

    Xorg -> Wayland

    GNOME 2 -> GNOME 3

    Every window manager, compositor, and DE

    GIMP 2 -> GIMP 3

    SysV init -> SystemD

    OpenSSL -> BoringSSL

    Twenty different kinds of package manager

    Many shifts in popular software

  • Hector@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    3 months ago

    Some form of stable, modernized bluetooth stack would be nice. Every other bluetooth update breaks at least one of my devices.

  • Strit@lemmy.linuxuserspace.show
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    there are issues with the software we’re using that can only be remedied by massive changes or a complete rewrite.

    I think this was the main reason for the Wayland project. So many issues with Xorg that it made more sense to start over, instead of trying to fix it in Xorg.

    • leanleft@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      3 months ago

      according to kagiGPT…
      ~~i have determined that wayland is the successor and technically minimal:
      *Yes, it is possible to run simple GUI programs without a full desktop environment or window manager. According to the information in the memory:

      You can run GUI programs with just an X server and the necessary libraries (such as QT or GTK), without needing a window manager or desktop environment installed. [1][2]

      The X server handles the basic graphical functionality, like placing windows and handling events, while the window manager is responsible for managing the appearance and behavior of windows. [3][4]

      Some users prefer this approach to avoid running a full desktop environment when they only need to launch a few GUI applications. [5][6]

      However, the practical experience may not be as smooth as having a full desktop environment, as you may need to manually configure the environment for each GUI program. [7][8]*~~

      however… firefox will not run without the full wayland compositor.

      correction:

      1. Wayland is not a display server like X11, but rather a protocol that describes how applications communicate with a compositor directly. [1]

      2. Display servers using the Wayland protocol are called compositors, as they combine the roles of the X window manager, compositing manager, and display server. [2]

      3. A Wayland compositor combines the roles of the X window manager, compositing manager, and display server. Most major desktops support Wayland compositors. [3]

  • SleveMcDichael@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    3 months ago

    Not really software but, personally I think the FHS could do with replacing. It feels like its got a lot of historical baggage tacked on that it could really do with shedding.

          • z3bra@lemmy.sdf.org
            link
            fedilink
            arrow-up
            0
            ·
            3 months ago

            $PATH shouldn’t even be a thing, as today disk space is cheap so there is no need to scatter binaries all over the place.

            Historically, /usr was created so that you could mount a new disk here and have more binaries installed on your system when the disk with /bin was full.

            And there are just so many other stuff like that which doesn’t make sense anymore (/var/tmp comes to mind, /opt, /home which was supposed to be /usr but name was already taken, etc …).

            • Samueru@lemmy.ml
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              3 months ago

              $PATH shouldn’t even be a thing, as today disk space is cheap so there is no need to scatter binaries all over the place.

              $PATH is very useful for wrapper scripts, without it there wouldn’t be an easy way to for fix the mess that steam does in my homedir that places a bunch of useless dotfiles in it. The trick is simply have a script with the same name as the steam binary in a location that is first in $PATH therefore it will always be called first before steam can start and murder my home again.

              About /var/tmp, I just have it symlinked to /tmp, technically /var/tmp still has a reason to exist, as that location is use for temporary files that you don’t want to lose on power loss, but I actually went over the list possible issues and iirc it was mostly some cache files of vim.

              EDIT: Also today several distros symlink /bin and /sbin to /usr/bin.

              • z3bra@lemmy.sdf.org
                link
                fedilink
                arrow-up
                0
                ·
                3 months ago

                You missed my point. The reason $PATH exists in the first place is because binaries were too large to fit on a single disk, so they were scattered around multiple partitions (/bin, /sbin, /usr/bin, etc…). Now, all your binaries can easily fit on a single partition (weirdly enough, /usr/bin was chosen as the “best candidate” for it), but we still have all the other locations, symlinked there. It just makes no sense.

                As for the override mechanism you mention, there are much better tools nowadays to do that (overlayfs for example).

                This is what plan9 does for example. There is no need for $PATH because all binaries are in /bin anyways. And to override a binary, you simply “mount” it over the existing one in place.

                • Samueru@lemmy.ml
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  3 months ago

                  but we still have all the other locations, symlinked there. It just makes no sense.

                  Because a lot of shit would break if that wasn’t the case, starting with every shell script that has the typical #!/bin/sh or #!/bin/bash shebang.

                  This is what plan9 does for example. There is no need for $PATH because all binaries are in /bin anyways. And to override a binary, you simply “mount” it over the existing one in place.

                  Does that need elevated privileges? Because with PATH what you do is export this environment variable with the order you want, like this:

                  export PATH="$HOME/.local/bin:$PATH" (And this location is part of the xdg base dir spec btw).

                  This means that my home bin directory will always be first in PATH, and for the steam example it means that I don’t have to worry about having to add/change the script every time the system updates, etc.

                  Also what do you mean by mounting a binary over? I cannot replace the steam binary in this example. What I’m doing is using a wrapper script that launches steam on a different location instead (and also passes some flags that makes steam launch silently).

  • MrAlternateTape@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    It’s actually a classic programmer move to start over again. I’ve read the book “Clean Code” and it talks about a little bit.

    Appereantly it would not be the first time that the new start turns into the same mess as the old codebase it’s supposed to replace. While starting over can be tempting, refactoring is in my opinion better.

    If you refactor a lot, you start thinking the same way about the new code you write. So any new code you write will probably be better and you’ll be cleaning up the old code too. If you know you have to clean up the mess anyways, better do it right the first time …

    However it is not hard to imagine that some programming languages simply get too old and the application has to be rewritten in a new language to ensure continuity. So I think that happens sometimes.

    • teawrecks@sopuli.xyz
      link
      fedilink
      arrow-up
      0
      ·
      3 months ago

      Yeah, this was something I recognized about myself in the first few years out of school. My brain always wanted to say “all of this is a mess, let’s just delete it all and start from scratch” as though that was some kind of bold/smart move.

      But I now understand that it’s the mark of a talented engineer to see where we are as point A, where we want to be as point B, and be able to navigate from A to B before some deadline (and maybe you have points/deadlines C, D, E, etc.). The person who has that vision is who you want in charge.

      Chesterton’s Fence is the relevant analogy: “you should never destroy a fence until you understand why it’s there in the first place.”

  • Björn Tantau@swg-empire.de
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    3 months ago

    Happens all the time on Linux. The current instance would be the shift from X11 to Wayland.

    The first thing I noticed was when the audio system switched from OSS to ALSA.

    • sunbeam60@lemmy.one
      link
      fedilink
      arrow-up
      0
      ·
      3 months ago

      Everyone hates on it. Here I am; a simply Silverblue user and it seems fine to me. What is the issue actually?

      • XTL@sopuli.xyz
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        3 months ago

        Everyone doesn’t. Just a handful of loud idiots who mostly don’t work with init systems. It is objectively better. There are some things you could criticise, but any blanket statement like that is just category a.

  • lil@lemy.lol
    link
    fedilink
    arrow-up
    0
    arrow-down
    1
    ·
    3 months ago

    There is some Rust code that needs to be rewritten in C.

    • Spectranox@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      edit-2
      3 months ago

      Agree, call me unreasonable or whatever but I just don’t like Rust nor the community behind it. Stop trying to reinvent the wheel! Rust makes everything complicated.

      On the other hand… Zig 😘