Hacker News new | past | comments | ask | show | jobs | submit login

To be fair, Linux configuration is not exactly straightforward in comparison to Windows. Dozens of obscure config files (each with a different syntax), stored in various random places in the filesystem, with the general expectation that every user should be able to run a terminal command once in a while to fix something.

Don't get me wrong, I'm a Linux lover and user, but from an outside perspective Windows registry (a central, structured database of configuration for everything) looks easier.




A sane program knows were to find the "random" configs: first, in cwd, then $XDG_CONFIG_HOME, then $XDG_CONFIG_DIRS. This is not exactly "obscure", you learn it soon and it's documented in every program.

The big advantage of this is that you can take your local config files and take it to other system. Can you do that with the Windows registry? Ironically, the only way to port settings in Windows is to have a .reg script and execute it, the thing you critisize.

And the Windows registry might be a single centralized config file, but config values are scattered through all the tree, and usually undocumented. E.g. this is a commonly recomended tweak:

HKEY_CURRENT_USER\Control Panel\Desktop] "UserPreferencesMask"=hex(2):90,12,03,80,10,00,00,00

Can you tell what it does?


I've been wondering if these magical registry things are documented anywhere... Searching, for example, "site:microsoft.com DisableSearchBoxSuggestions", only leads me to tons of forum posts.

I would love a configuration system with centralized database and centralized documentation, but no OS currently seems to be able to achieve that, and Windows' missing documentation appears even worse than obscure but documented config files.


NixOS system configuration is centralised and documented.


With Linux you can configure it further to your taste. Which is not even necessary on most distributions for basic usage.

With Windows you have to patch it through the registry (which is not bsckupable config files) to remove ads and other annoying "features".

So the out-of-the-box experience is better with Linux. My mom even understands Linux GUIs better these days than Windows, it's just less bloat and distraction. And for basic apps you don't have to configure anything on the CLI. I recently got a Raspberry PI for my parents to use as a HTPC, installed some basic apps on it, and they can just use it like that.


While those configs are different in syntax, each is meant to be read, edited and backed up by a human. All of the system config files are in /etc

Registry hacking, with all it's resets and duplicate keys is hard to backup, constantly reverts ( because m$ doesn't believe it to be user editable) and is a pain in the ass to back up and restore.

Oh yes, and is your registry value supposed to be a dword, or something else? No way to tell.


That is the paradox of the registry. It sounds like a great idea. "all your config in on place" "structured data" but in practice, I have found it sort of sucks.

I am not sure why this is. My best guess is it unpleasant to use because now you have two trees. only one has all the nice tooling and the other is sort of second class and can only be accessed via special mechanisms.


Honestly, I think it would have been better if the following was true:

1. it was portable 2. it was well documented ( I absolutely hated that I was finding out about some magical way of enabling something by putting magic string somewhere from a magazine ) -- all those options should be available for me to peruse. I am not even suggesting third party software, just Windows.

But I agree, somehow this idea seems better on paper than in practice.


> Dozens of obscure config files (each with a different syntax), stored in various random places in the filesystem, with the general expectation that every user should be able to run a terminal command once in a while to fix something.

The good thing is that explanations is often a `man` command away, and the location of these files is often listed in the same place. Also general computing is an expert subject. You may as well have a kiosk if you start hiding away capabilities. The expectation to drop to a terminal is often because the terminal is the fastest way to get things done.


But with the terminal you still have to learn commands, it's not as discoverable as the windows 95 environment. There you could do things as a noob by just looking around and after a while you could do things without even thinking. Every windows version after that has broken that flow in some way. In Linux I keep forgetting what file to edit to get what I want. I need to look up location and syntax for most things every time I want to do something.


I like to describe the shell and commands as a big dashboard with many levers and indicators compared to a much simpler one with just a small bunch of ON-OFF switches. They're indeed complicated, until the day you need to change something that isn't on the simple panel, or isn't a simple ON-OFF choice, because every operating system is complicated; you can hide some of its complexity behind a graphical interface, but you always lose something in the process because you can easily have a command with 100 options but you can't put 100 buttons on a screen. It simply doesn't scale. So the next question is "how do we put a complicated system under control of a simpler graphical interface?" We make assumptions of course (read: we write code that makes assumptions), and there is where bugs arise or more complexity is created, because machines (still) aren't good as humans at doing some things. As an example, very complex string operations can be performed using sed, awk and the usual shell command with regular expessions, where on Windows for years (I have no experience with its new shells) many people would have to load Office, import the text, write a macro, and export back the text. The difference being that Office would likely need two orders of magnitude more computing power, memory and storage.


> but you can't put 100 buttons on a screen. It simply doesn't scale.

You can scroll, use pages, tabs, nested menus, guided wizards, Chrome or VS code style searchable settings lists, buttons which appear or disappear dynamically when necessary.

> where on Windows for years (I have no experience with its new shells) many people would have to load Office, import the text, write a macro, and export back the text.

If you can assume office, why can’t you assume gvim or any other text editor with a gui? And why is text editing your yardstick? At least you can do that with a gui somehow, image processing you can’t do with a cli - yes you can write the code for ffmpeg or graphviz but you can’t see the result without a graphic interface.


I agree with you that an application needs discoverability. Like a text processor for a writer or a photo editing software for a photographer. It should make sense for a particular domain, requiring only minimal training for the medium. But we can't abstract away the notion of computers. An analogy is car. Driving a car only require a minimal interface. Racing with one, however, requires a lot more knowledge. Repairing a car is where knowing the internals is the minimum. Different needs, different levels of knowledge. Most people would be happy with the iPad if only the applications were a tad more useful (File sharing is aweful). But some people do "general computing" and graphical interfaces usually fail in some way or another (especially with automation).


With help of codeLLM or shellLLM, that is no problem any more


The basics I'd say are still pretty much configurable via GUI so a newcomer wouldn't have hard times with either KDE, Gnome or Xfce. For majority it probably would be enough if GPU, sound and network drivers are working and it's possible to easily install apps they used to use on Windows or OSX/

Back around 2003 I read in local "Linux Magazine" about some project that tried bringing kind of a registry equivalent to Linux world. Sadly these were Internet caffee times so it was hard to track projects, so I really don't know what happen to it. The closest thing that resembles that idea is dconf.

With Windows nowadays you do all this tweaking or juggling within registry/group policy editor to protect yourself (and of course you do that if you care - majority of people don't) while with Linux I'd say it's more a matter of fine-tuning your distro of choice to your needs.


> stored in various random places in the filesystem

What config files have you found outside of `/etc` and `~/.config`?


Ones that come with third party software installed in places like /opt[1], ones that go with website folders like .htaccess, MySQL looks in $MYSQL_HOME/my.cnf and [datadir]/my.cnf

[1] https://knowledge.broadcom.com/external/article/8596/warning...


There’s still a few on my machine. The main ones I’ve edited:

~/.gitconfig, ~/.bashrc, ~/.bash_profile, ~/.vimrc

~/.ssh/config

~/.gnupg/gpg.conf, ~/.gnupg/gpg-agent.conf


> ~/.gitconfig, ~/.bashrc, ~/.bash_profile, ~/.vimrc

> ~/.ssh/config

> ~/.gnupg/gpg.conf, ~/.gnupg/gpg-agent.conf

None of those settings are going to be edited by a non-technical human, even on Windows.

OTOH, all of those are easier to edit in their respective files than via a registry hack.


Changing a setting in the registry is “hacking” now?


Dozens of obscure config files

…most of which are backed by a man file. I’ll take that over the registry any day.


Every time I read one to figure something out I just end up searching it online. Maybe I’m just dumb but they all read like they were written as self reminders for the author of the software, not for someone who doesn’t already know how to use it.


I beg to differ, Linux is way more straightforward. Within each new Windows version they keep switching things around, adding layers upon layers and options within options within option that point back toward the initial options page, where you end up in a loop. The search function rarely finds the settings I want. Edge search results by default, including digital cancer such as Instagram, TikTok, et cetera, on the start menu by default.

Now too, for normal computer users who don't want to tweak their operating system and only need basic utilities, and are able to read and follow simple instructions, Linux has long become way more accessible than Windows.


I think there's always a pressure in balancing the ability for anyone to contribute to the software ecosystem with the convenience of a unified interface. Many people who like Apple's ecosystem seem to really want one extreme of this spectrum (A tightly-integrated ecosystem with design choices that standardize throughout - though this has not quite exactly been my experience with that ecosystem in practice), but there are grades of it everywhere. Mainstream linux distros increasingly favor centralized system services, like systemd or upstart, to manage several processes under a quasi-common hierarchy. Config files often get unified in /etc when a project becomes mature and integrated into a lot of distros, and there are conventions in how people write config files that are pretty straightforward in commonly used applications, but much less so in niche projects. Windows seems to be growing less customizable over time in an attempt to tighten its grip on its users, but of course even windows and macos seem to allow a bit more user control than mobile or game console operating systems. It's all degrees.

To be frank, I think the only battle-tested reliable ways to make a config language or a set of command line flags easier to use is good, complete documentation, though little things like integration with tab-completion or syntax highlighting can often go a long way too. These exist in almost any commonly used software found on a linux distro and are more than enough for someone willing to actually try stuff, which describes most of the people who can navigate doing anything that's not a default behavior of any OS anyway. Most people seem to have what I can only describe as learned helplessness about computers doing things they don't expect, but to be honest if you put people in an environment where they are motivated and don't feel afraid to mess up (which most educational contexts fail miserably at, both in terms of social norms and systemic incentives), most will actually start to figure stuff out a lot quicker than they expect themselves to. A small portion won't, and unfortunately most social environments are either too rushed or too high-pressure to facilitate this kind of exploration. But if we just accept that people are "non-technical" in the sense of "can't try anything remotely new in order to fix their computer", the only real way to satisfy those users is going to be keeping a system they already know how to use the same, which companies are simply not willing to do

To me, the main difference between open (like linux distros, but there are others) and closed computer operating systems is that the former tends not to tell you "Sit tight and we'll send a company-certified adult to help you" (or sometimes "This is not allowed", or "You need to pay extra for that now"), and the latter, increasingly, wherever possible, makes these the only options available




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: