I understand the usefulness of the terminal and how universal it is for troubleshooting across distros. But can’t there be a way to make a nice graphical tool for the various admin level tasks that need to be performed?

Edit: Thank you to the outpouring of feedback on this. It has greatly opened my eyes to how much I don’t know about. I did see a couple suggestions though, so I’ll be sure to check them out.

  • samick1@sh.itjust.works
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    I’ve been using Linux since ~1996; I used to wonder about this a lot.

    The tl;dr answer is, it’s too much effort only to solve the problem of making life easier for new users, and it can be a disservice to users in the long run.

    As others have pointed out, there are limited GUI tools for common administration roles.

    Power users are much, much faster at doing things via CLI. Most administrative tasks involve text file management and the UNIX userland is exceptional at processing text files.

    A graphical tool would have to deal with evolving system software and APIs, meaning the GUI tool would be on constant outpatient care; this is counter to the UNIX philosophy which is to make software simple and well-defined such that it can be considered “done” and remain versatile and flexible enough to live for decades virtually unchanged.

    It wouldn’t be that much easier for things like network rules unless a truly incredible UI was designed, and that would be a risk since the way that’s implemented at the system level is subject to change at any point. It’s hard enough keeping CLI userland tools in sync with the kernel as it is.

    It would need to be adaptable to the ways different distributions do things. Administration on CentOS is not always the same as it is on Debian.

    And ultimately, the longer a user spends depending on GUI tools, the longer it will take them to learn and become proficient with the CLI, which will always be a far more useful skill to have. You’ll never learn the innards of containers or VPS’ if you only know how to do things from the GUI.

      • samick1@sh.itjust.works
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        I think my best advice would be to make a philosophy out of it. Learn how to solve every problem you come across with the CLI. Only use Google or ChatGPT when you hit a wall, and utilize the man pages to understand why the answer works.

        Make a habit of automating common tasks using shell scripts. Over time you’ll accumulate a library of cookbook code for doing common things that you can always refer to. Write comments in them to save time when you come back and refer to them. It also saves time to automate common things.

        Long ago I followed the Linux From Scratch guide and it was very enlightening. It walks you through installing a working Linux system from scratch, starting from within another installation. So you could e.g. install Debian to a VM, add a second virtual hard disk, and follow the guide to iteratively install each bit of the system on the second hard disk until you can boot it and use it. This is an intense (or at least time-consuming) process but it’s worth it.

        Although it’s terribly outdated now, I got a lot out of the book The Unix Programming Environment. It lays out the history of the system really well. In general, anything written by either of those two authors (Kernighan in particular) is just gold, they’re both excellent teachers. It helped me intuitively understand concepts like pipes, “everything is a file”, shell programming, awk, etc.

  • YAMAPIKARIYA@lemmyfi.com
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    I think its because a lot of this stuff is faster to do through command line. And people developing GUI tools are ones that are already good at CLI so they might not understand why a graphical tool might be needed and then ones that do, start learning CLI to program a tool and on the way might realize it’s just easier to console. Kinda where I’m at. Plus if there are many of the same tool it might vary in GUI and when giving someone instructions it’s easier to just say the command to type than to cover every possible variation of GUI environment. That’s my take on this.

    • jarredpickles87@lemmy.worldOP
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      on the way might realize it’s just easier to console. Kinda where I’m at.

      Me too. Discovering lots of good tools are CLI, so just getting familiar with that instead.

  • steph@lemmy.clueware.org
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    Simple: because it goes against the KISS principle. The GNU tools that constitute the user interface to the system comes from a philosophy that started with Unix: simple tools, doing one thing well, communicating through “pipes” - i.e. the output of one tool is supposed to be used as the input of the next one.

    Such philosophy allows to assemble complex logic and workflows with a few commands, automating a lot of mundane tasks, but also allowing to work at a large scale the same way you would work on a few files or tasks.

    Graphical tools don’t have such advantages:

    • UI are rarely uniform in their presentation or logic, as there’s so much way to present options and choices;
    • Apple did something nice in the way of automating with AppleScript, but I’ve not encountered anywhere else. GUIs are rarely automatable, which means you’ll need some clicking and pushing buttons if a task has to be repeated - or the GUI has to be altered to be able to replay a set of commands for multiple items;
    • interconnecting different GUIs so that they can exchange data is just impossible. You usually end up with files in dedicated format, and the needs to massage data from one format to another to be able to chain tasks from different GUIs
    • more importantly, command line work with minimal bandwidth and tooling on the client side. Tmux, Mosh and similar tools allow to work with an intermittent connection, and have a very low impact on the managed system;
    • in some specific fields - notably embedded and industrial systems - you just can’t justify allocating resources just for a graphical environment. On these system, CLI is as powerfull as on a full fledged server, and don’t requires stealing precious resources from the main purpose of the system.

    Beware though: as time passes, Unix founding principles seems to get forgotten, and some CLI tools manifest a lack of user experience design, diverging from the usual philosophy and making the life of system administrators difficult. I’ve often observed this on tools coming from recent languages - python, go, rust - where the “interface” of the tools is closer to the language it’s written with than the CLI uniform interface.

  • mcc@sh.itjust.works
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    GUI is hard to build right and expensive to build at all. CLI tools is much cheaper to build and can be scripted. Microsoft is rich that’s why they can build GUI, and even then sysadmins have asked for Linux type of CLI tools so they can automate. So generally unlike consumer tools, sysadmin tools focus on utility instead of ease of use.

  • tiny@midwest.social
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    A lot of Linux deployments are in situations were a gui would use more resources than the application. There is also decades for knowledge of troubleshooting from the cli would have to replicated for a gui solution to take off. That being said cockpit is getting really good and is ansible for most repos

  • Celivalg@iusearchlinux.fyi
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    It mostly comes because a linux system is essentially a collection of much smaller programs that do one simple thing each, and each of those programs has alternatives.

    So doing a gui for one program would allow you to control that one and not the others, and if you were using an alternative, you wouldn’t have that gui.

    Now trying to make a gui that agglomerates the most common ones has been done for userspace, mostly on specific distros… but when it comes to administering systems… it’s a different story.

    services, dns, ntp, boot, wm, lm, firewall, dhcp… all of these have important things to touch, but also have different programs that implement them.

    Most authors of these programs don’t bother with gui, mostly because it’s quite some work, but also because it’s not their problem. UNIX philosophy is very much do one single thing and do it well… and when you can do a simple CLI that allows users and PROGRAMS to communicate with your program, why bother with GUI if it only accommodates one part of that equation?

    Devs don’t bother with GUI not because they think it’ll be useless, but because it’s a lot of extra work for something that ultimately will be less reliable than CLI…

    One reason why linux is so good at doing servers is that no system software needs a GUI to work. Windows server has a headless version, but look how many applications are just unable to run on it as they all rely on GUI…

    So in a way, having CLI first and GUI second is a blessing, even if it makes the first approach more difficult for users.