News for hackers. Stuff that matters.
Re:Gobolinux : Redefining Linux filesystem hierarchy by usrbinbash on Tuesday December 28, 2021 @11:17AM (#29715053)
This is actually a neat idea, and I am saying that as the archetypical, grumpy "I like my sys the way it is, thank you very much!" - kinda guy.

A lot of the directory structure of POSIX systems is completely obsolete in the 21st century. The difference between sbin and bin? Historical, for the most part, and irrelevant in the age of rescue systems.

One question that is nagging at my mind with this: What if two programs require the same lib, how is this resolved?

Because, when I install progA, the lib is symlinked into the index, so when I now install progB, the lib is installed again if I understood correctly. Storage is irrelevant, the pkg manager sees there is a symlink, so it stays in place, all is well.

But now I remove progA, so what happens? progB is still present, still requires the lib, it is also still installed, but now the symlink, which refered to /Programs/progA/libs/thelib.so is broken. How is this situation handled?

Re:Gobolinux : Redefining Linux filesystem hierarchy by infogulch on Tuesday December 28, 2021 @02:30PM (#29717020)
I think libs are installed in /Programs too, and everything is versioned, and all libraries are linked to a central /System/Index/lib directory, which is referenced by ld by default: ( See https://gobolinux.org/at_a_glance.html )

    ~] ls -l /System/Index/lib
    libgtk.so           -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
    libgtk-1.2.so.0     -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
    libgtk-1.2.so.0.9.1 -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
Also:

    ~] cat /etc/ld.so.conf
    /System/Index/lib
I guess it's up to the package manager or application to reference the version of the library at the correct specificity. And then it's up to the package manager to GC libs that aren't referenced anymore.

Personally I think it would have been interesting to version the system index itself, like /System/Index/Current|1.0|myappenv|etc/lib|bin|etc, and each app is chrooted into their own system index by default.

Re:Gobolinux : Redefining Linux filesystem hierarchy by usrbinbash on Tuesday December 28, 2021 @03:57PM (#29718077)
I understand how and where they are installed.

The question is, when 2 packages, pkgA & pkgB bring in the same library, call it "thelib.so" into the system, logically, only 1 of them can be refered to by the symlink in System/Index/lib.

So we have both

    /Programs/pkgA/1.0/lib/thelib.so
    /Programs/pkgB/1.0/lib/thelib.so
And lets say the symlink points to the file of pkgA:

    /System/Index/lib/thelib.so  ->  /Programs/pkgA/1.0/lib/thelib.so
What happens now if I remove pkgA? If nothing changes, the symlink would be dangling, and pkgB would no longer function because the libraries are looked up in the index.

My question is: how is the pkg management system resolving this?

Re:Gobolinux : Redefining Linux filesystem hierarchy by infogulch on Tuesday December 28, 2021 @05:04PM (#29718822)
I explained it because your example makes me think you don't understand how and where packages are installed. Libraries are installed independently, but your example looks like the library thelib.so is installed inside pkgA which is only related to thelib.so because pkgA is the first package that depends on thelib.so, but this is incorrect, instead you'd have:

    /System/Index/lib/thelib.so  ->  /Programs/thelib/1.0/thelib.so
And /Programs/pkgA/lib/thelib.so would never exist at all.
Re:Gobolinux : Redefining Linux filesystem hierarchy by infogulch on Tuesday December 28, 2021 @04:15PM (#29718304)
Ah so basically how does it track dependencies? Good question. Browsing the wiki it looks like its basically manual :/ but I could be mistaken.

https://github.com/gobolinux/Documentation/wiki/Removing-pro...

https://github.com/gobolinux/Documentation/wiki/Understandin...

Re:Gobolinux : Redefining Linux filesystem hierarchy by kllrnohj on Tuesday December 28, 2021 @10:41PM (#29721573)
The same way any existing package management system handles this - by only allowing you to install one of the two packages in the first place.

But Gobolinux can actually handle this scenario better than most distros since package-specific libraries don't need to go into the global index in the first place. So neither pkgA nor pkgB's 'thelib.so' would end up in the index, it'd just be local to the package.

Re:Gobolinux : Redefining Linux filesystem hierarchy by Fnoord on Thursday December 30, 2021 @05:20AM (#29735437)
Except Nix. Each package has a unique hash, which is reproducible. So if there is one minor difference, you get a different path. This works incredibly well, but I admit the paths of Gobolinux are more user-friendly in their naming scheme (though one might argue against a capital letter at start of each entry due to increased finger movement requirement).
Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Tuesday December 28, 2021 @02:51PM (#29717252)
Sbin and bin separation actually causes problems with portability. A certain bluetooth-related utility wants to run iptables command [1] which can usually be found in `/sbin`. But `/sbin` is not in the PATH so they have hardcoded `/sbin/iptables` into the source. Now distributions that have iptables in `/usr/sbin` have to patch the program.

So it would be better if either there were no `/sbin` or if it was always in the PATH.

[1] https://github.com/blueman-project/blueman/blob/fcef83a01c80...

Re:Gobolinux : Redefining Linux filesystem hierarchy by Gigachad on Wednesday December 29, 2021 @03:42AM (#29723070)
Modern distros just have a single bin directory and symlinks for the rest to resolve this.

My favourite one is how people try to come up with reasons for the /usr dir and why /bin and /usr/bin both exist. The original reason was that one of the original Unix devs ran out of space on their hard drive and needed a second bin folder for the new drive.

Re:Gobolinux : Redefining Linux filesystem hierarchy by Fnoord on Thursday December 30, 2021 @05:23AM (#29735462)
Back in the days, what often happened was /usr was mounted over NFS or a second harddisk like you mentioned (space and maintainability being possible reasons). Because NFS locking was an issue, you'd use lockable files (such as /var and /tmp) on different partitions.
Re:Gobolinux : Redefining Linux filesystem hierarchy by vbezhenar on Wednesday December 29, 2021 @04:21AM (#29723232)
What distros? Fedora is pretty modern and uses separate /usr/bin and /usr/sbin directories.
Re:Gobolinux : Redefining Linux filesystem hierarchy by usrbinbash on Wednesday December 29, 2021 @07:02AM (#29724058)
Manjaro does, not 100% sure about Arch, but I think its symlinked there as well.
Re:Gobolinux : Redefining Linux filesystem hierarchy by lloydatkinson on Tuesday December 28, 2021 @06:09PM (#29719443)
Why do none of them make a PR to change the original repo instead of maintaining forks?
Re:Gobolinux : Redefining Linux filesystem hierarchy by zaphirplane on Tuesday December 28, 2021 @09:16PM (#29720964)
it is be better for the program to amend path for itself to include both paths.

Or probe for its location Rather than hardcore one or the other

Re:Gobolinux : Redefining Linux filesystem hierarchy by Dylan16807 on Tuesday December 28, 2021 @11:58PM (#29722060)
Hardcoding two locations is only marginally better than hardcoding one. (By probe I assume you mean probing a hardcoded list rather than something even more fragile and confusing.)
Re:Gobolinux : Redefining Linux filesystem hierarchy by zaphirplane on Wednesday December 29, 2021 @01:49AM (#29722569)
Why ? If it’s in the path use that, else if in /sbin use that else in /bin use that

Everyone happy

Re:Gobolinux : Redefining Linux filesystem hierarchy by usrbinbash on Wednesday December 29, 2021 @02:31AM (#29722740)
Until it suddenly isn't in either of these paths, maybe because its required to run in some quirky setup.

Hrdcoded paths for things a program doesn't bring with itself, should be avoided in general. There is a reason $PATH exists and is easily extended. It is the users/admins responsibility to make sure envvars are set correctly, and it's the programs responsibility to give a useful error message when it cannot locate the programs it expects in $PATH

Re:Gobolinux : Redefining Linux filesystem hierarchy by thorawy88 on Tuesday December 28, 2021 @03:11PM (#29717508)
This is a ridiculous thought ending argument.

Other projects need to sit still so one project doesn’t have to change one line of code?

Nonsense. Keep up or get forked (that’s not a euphemism for vulgarity). It’s not esoteric magic like it used to be.

Re:Gobolinux : Redefining Linux filesystem hierarchy by alerighi on Tuesday December 28, 2021 @07:01PM (#29719871)
Well in a lot of new distributions /bin, /sbin and /usr/sbin are symlinks to /usr/bin.

The historical difference is that in /sbin there are binaries meant to be executed by root, and thus they were not be put in the path of non root users (Debian still do that), so you don't get binaries that you can't run in your path (these days it's stupid since you may want to use sudo and thus have them in path only for the shell autocomplete to work properly).

By the way I prefer how things are nowadays, otherwise you get the same confusion that I have every time I use Windows or macOS that you either have an infinite PATH variable or have to specify the full path every time.

Yes, the package manager can make symlinks, but at that point what is the difference?

Also having everything in /usr/bin has the good side effect of avoiding that by mistakes someone creates a program that has the same name of one of the thousands of programs that are in the repository of a distribution, to avoid confusion to the user that can launch a program or another depending on who comes first in the path.

Re:Gobolinux : Redefining Linux filesystem hierarchy by saghm on Tuesday December 28, 2021 @03:03PM (#29717413)
I think for shared libraries, the convention is to have the major version number of the API in the name (e.g. foo.so, foo2.so) and then to put any ABI changes as a trailing extension (e.g. foo.so.2, foo.so.3, foo2.so.2, foo2.so.3). It's kind of a hack, but it makes sure that you can link unambiguously to one if you need it.

EDIT: didn't realize you were talking about Gobo specifically; not sure how they deal with this, but theoretically a similar strategy seems like it could work

Re:Gobolinux : Redefining Linux filesystem hierarchy by duped on Tuesday December 28, 2021 @01:31PM (#29716407)
I'd rather progA and progB package their own local versions of thelib.so unless they explicitly request to use a shared version globally.

Shared libraries actually being shared is the exception and not the rule

Re:Gobolinux : Redefining Linux filesystem hierarchy by bern4444 on Tuesday December 28, 2021 @02:33PM (#29717043)
This is very similar to how npm works. Each installed package has its own dependencies installed that are kept separate from other packages even if another package has the same dependency.

For all the hate of npm and node_modules it’s wonderful to have this isolation

Re:Gobolinux : Redefining Linux filesystem hierarchy by Fnoord on Thursday December 30, 2021 @05:25AM (#29735480)
Python also has virtualenv, so what though? Like Docker, its a dependency nightmare, and a waste of space. Nix also wastes space, but it allows you to run separate versions of libraries and programs universally on the OS, and it allows you to rollback, plus it can be easily removed with a command (man nix-collect-garbage).
Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Tuesday December 28, 2021 @02:28PM (#29717008)
They have separate directories for libraries under /Program, so I guess the library gets installed into a separate directory only once.
Re:Gobolinux : Redefining Linux filesystem hierarchy by potatoalienof13 on Tuesday December 28, 2021 @02:26PM (#29716995)
As far as I can tell, the package manager handles dependencies, like most other package managers. Packages can declare dependencies on other packages, and the package manager installs each dependency only once globally.
Re:Gobolinux : Redefining Linux filesystem hierarchy by lelanthran on Tuesday December 28, 2021 @02:52PM (#29717265)
I think GP was asking what happens when you remove a package that has thelib.so as a dependency. Is thelib.so removed? Does the previous existing thelib.so used as a replacement?
Re:Gobolinux : Redefining Linux filesystem hierarchy by pxc on Tuesday December 28, 2021 @03:22PM (#29717631)
With any normal package manager, no. You don't remove a package that has any remaining 'reverse dependencies' (a.k.a 'dependents'). Removing only one of many dependent packages just has no effect on the dependency.
Re:Gobolinux : Redefining Linux filesystem hierarchy by usrbinbash on Tuesday December 28, 2021 @03:51PM (#29717990)
But if BOTH packA & packB come with the same libs, one of them HAS TO get symlinked in the system index. And they do not depend on one another, as each has to bring the same lib to the system, so logically, they can both be removed without breaking a dependency.

But since there can be only ne symlink to the library (because the lib is searched by name in the index) the question remains: How is the package manager handling this for Gobolinux?

Re:Gobolinux : Redefining Linux filesystem hierarchy by duped on Tuesday December 28, 2021 @04:43PM (#29718621)
This seems completely backwards, is it not that packA and packB have symlinks to the system index?
Re:Gobolinux : Redefining Linux filesystem hierarchy by pxc on Tuesday December 28, 2021 @04:22PM (#29718390)
I think it may not be handled automatically.

Looks like you could use

  find /System/Index | RemoveBroken
and then you'd have to use SymlinkProgram to enable another provider of the shared libraries.

In a way this is inside-out from what Nix and Guix do, where their equivalent of the System Index (the Nix/Guix store) is the build target, and everything all symlinks point to that. That makes this kind of thing a little easier to deal with, at some other costs.

Re:Gobolinux : Redefining Linux filesystem hierarchy by zaphirplane on Tuesday December 28, 2021 @09:26PM (#29721031)
This is strange, you’ve asked the same question repeatedly and had multiple answers

From the answers There is no package comes with a dependency, there is a pkg depends on a well dependency

Either you are asking a deeper question or comes with a dependency is an unusual terminology

Re:Gobolinux : Redefining Linux filesystem hierarchy by lmm on Wednesday December 29, 2021 @02:26AM (#29722718)
Why would two different packages have the same library in them? Surely for every library there's a single package for that library, and if multiple applications depend on that library then their packages would depend on that package.
Re:Gobolinux : Redefining Linux filesystem hierarchy by oneplane on Tuesday December 28, 2021 @12:00PM (#29715540)
I think they just intend to duplicate everything, but I'm not sure. One of the biggest issues with 'improved' systems is that even when they are actually a whole lot better, it makes it nearly impossible to reason about the system or the state of the system using filesystem primitives or other first principles.

Take journals in systemd for example, they are better than plaintext log files in some cases, but now you are stuck with a format that needs to be interpreted and parsed before it is useful.

That doesn't mean improvements shouldn't be done, but every step that is a big change often also makes it impossible to do some basic things that used to be possible for decades. This is similar to analog radio (i.e. only requiring a diode, tunable capacitor and a coil to receive audio! - no power supply needed!) vs. DAB. DAB has a lot of improvements over the base feature, as well as a whole lot of new features. But it is no longer possible to simply receive the radio waves and get audio.

In a way you lose simplicity to gain sophistication. Sometimes we get sophisticated simplicity where a complex problem was solved in a very neat and elegant way that can be reasoned about with ease, but most times it isn't the case and that makes me (and a whole lot of other people it seems) wonder how we can get the improvement without losing the simplicity.

For the very simple "the filesystem is the database" concept, this might actually be possible, all we really get is a well-known structure and versioning with symlinks, similar to the alternatives system used in Debian. But then we get /Programs which is capitalised which looks nice but mixed capitalisation seems too much of a "they are doing it, thus so are we" thing, while on a filesystem level there isn't any gain. Same with spaces in names or dashes. For visual representation that is nice, but everything else it sucks.

I would take out the capitalisation and add some sort of unionfs/aufs/overlayfs hooking (symlink into a bundled filesystem would be one way) so from the system's perspective it's still a single filesystem tree but you add the option to get all those newfangled distribution methods in there as well. The problem we still haven't solved is versioning, but since it is arbitrary at this point /programs (or just call it /apps) could just contain <shortname>/<versionstring> for the application name and then version of the application. If you then dump in a version that comes from a docker image, flatpak, some weird weine-dxvk-steam construction or something else you symlink it in as a <versionstring> and then it's no longer the problem of the distro.

There is still the issue of partitioning off parts of the system you don't want to be touched or want to have safe; a RO-snapshot plus user-overrides could work, but you might end up with a huge RO-snapshot that needs to be entirely replaced, and then a billion override mounts on top of that...

As simple as Gobolinux presents it, this only seems to be useful for a single distro with a single distribution point, which is no longer where we are. Even FreeBSD is past that and that's not even Linux.

Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Tuesday December 28, 2021 @02:32PM (#29717035)
The problem is not with capitalisation, the problem is that Linux filesystems are case-sensitive and require you to type the name with exact case.
Re:Gobolinux : Redefining Linux filesystem hierarchy by Karellen on Tuesday December 28, 2021 @07:52PM (#29720340)
The problem with case-sensitive filesystems is - which locale's case-sensitivity rules does the filesystem use?

Remember that some systems may have multiple users (some may even have multiple simultaneous users) who use different locales. Or a single user might run different programs using different locales, e.g. if a program has a bad translation in their native language, they may prefer to run it with a different language that they also speak.

A lot of computer systems only got rid of the problem of storing filenames in locale-specific character encodings (e.g. ISO-8859-*) relatively recently, by switching to a locale-neutral encoding (UTF-*/UCS-*). It would be nice if they could not repeat some of those problems with locale-specific filename matching rules.

You could remove the problem of "requiring you to type the name with exact case" by having shells' autocomplete feature fix case issues. So you could type "vi foo<TAB>" and the autocomplete change that to "vi Foo.txt". That could have the advantage of also fixing combining character normalisation issues. And the question of "which locale's rules get used?" is easy - the locale of the shell doing the autocomplete.

Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Tuesday December 28, 2021 @02:36PM (#29717081)
I don't honestly understand why a case sensitive file system is a problem. I think a case insensitive system is counterintuitive.
Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Tuesday December 28, 2021 @02:42PM (#29717146)
Because case insensitive filesystem doesn't require you to press Shift key when typing a command. Typing `ls /Program` requires one keypress more than `ls /program`. Also, it is easier to remember just a name rather than remember how exactly it is spelled.
Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Tuesday December 28, 2021 @03:43PM (#29717877)
I think the utility of a real case-sensitive file system cannot be nullified with an "I need to press shift!" argument.

Apple's APFS will create the folder as "Programs" if you use "mkdir Programs", and will give you an error when you try to create "programs". You can navigate with any case combination, but it just plays along like the capitalization you entered is present. It feels like a hack tbh.

Another thing I noticed that I never notice that I'm pressing shift while capitalizing. It's not a deal-breaker issue for me (while this might sound like "it works for me", I'm sure that I'm not alone in that).

Case insensitive systems created a lot of problems down the road. Esp. due to popularity of Windows. Program porting is a pain, using macOS with real case-sensitive mode is again a pain for some scenarios. It also encourages sloppy programming practices and "I don't case as long as it works" ism.

Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Tuesday December 28, 2021 @11:53PM (#29722019)
> tbh

What is this? It's not capitalised so it can't be an acronym or initialism. And your username doesn't start with a capital like a Proper Noun, so it's unreadable. This is my problem with case-sensitivity, it's not how humans use writing, think about writing, design fonts, etc. 'a' and 'A' are the same letter, they're the same letter in the alphabet, they are pronounced the same, they make the same word "apple" or "Apple" which is also pronounced the same and means the same, they could be rendered the same in a given font without making words unreadable or confusing (e.g. small caps fonts).

If the computer isn't letting me use "apple" or "Apple" interchangably as I (the user, supposed to be in control here) wish, that isn't helping me, it's nitpickingly hindering me and making me implicitly care about character encoding values I can't even see. This is dreadful UX.

Domain names aren't case sensitive, email addresses could be but generally aren't, usernames could be but generally aren't, phone numbers aren't, Twitter handles aren't, my bank cards have my name in ALL CAPS but it's still me, you wouldn't join an IRC channel and think it okay to use a nick which matches someone else's but for capitalisation differences, you know which book I mean when I say "the martian" and so does Google search and my email search, PostgreSQL table and column names aren't case sensitive.

It's nice, convenient, helpful when identifiers aren't case sensitive.

Re:Gobolinux : Redefining Linux filesystem hierarchy by GlitchMr on Friday December 31, 2021 @04:00PM (#29752473)
> PostgreSQL table and column names aren't case sensitive

They are case-sensitive. The thing is however that is that PostgreSQL will automatically lowercase names that aren't explicitly double quoted.

Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Wednesday December 29, 2021 @03:36AM (#29723050)
> What is this? It's not capitalised so it can't be an acronym or initialism.

It's a case insensitive "to be honest". Non capitalizing it wasn't intentional, but it has shown to be a prime example how case also conveys meaning.

> And your username doesn't start with a capital like a Proper Noun, so it's unreadable.

No, it's a combination of my name and surname, and a play on C/C++ header convention, more specifically "bayindir.h", which is based on a joke one of my university friends. See? Again case conveys meaning. In this case, my username is case sensitive and has a meaning when it's all lowercase. Bayindirh won't do in this case.

> it's not how humans use writing, think...

Case carries information, conveys meaning. "apple" and Apple are not the same word, doesn't point to the same "thing". Computer is the ultimate data storage and manipulation device we have, and I don't want ambiguity in any parts of it.

If humans didn't use cases, and this is not how we use writing, i can just write will all lowercase letters and make distinctions between apple the fruit and apple the company, or turkey the animal and turkey the country some other, more convoluted way. Cases matter. They carry information. Try to tell a mathematician or any scientist that their formulas are moot because X and x are the same variable.

> If the computer isn't letting me use "apple" or "Apple" interchangably as I (the user, supposed to be in control here) wish, that isn't helping me, it's nitpickingly hindering me and making me implicitly care about character encoding values I can't even see. This is dreadful UX.

I'm the opposite. I consider apple being equal to Apple "Dreadful UX", so it's subjective. IMHO, every user have preferences and a computer can adapt to that. Given the choice I'll prefer case sensitive, you'll prefer case insensitive. That's OK. What's not OK is pointing a finger to a property and calling "This is useless!"

On the technicalities side, there are some capitalization rules which make case insensitive systems shiver and break. For you probably i and I are same. For me it's not. We have i, İ, ı, I. How to make this case insensitive? A lot of programs break because of this. This is fun. This is called Turkish.

So, no. Neither a and A, nor i and I are the same letters. They don't have to sound the same either.

> Domain names aren't case sensitive, email addresses could be but generally aren't, usernames...

Case insensitive passwords and usernames are big security nightmares, including the technicalities I've described above. Names on credit cards are built upon the assumption that capitalization works the same everywhere (it isn't). Just because Google wants to match something case-insensitive doesn't make it right.

Some things are designed to be case insensitive against the norms. In normal human language case conveys meaning. Some conventions decide to ditch that meaning. Many programming languages are case sensitive. Are they wrong? No they're not. SQL statements use cases to denote keywords, even if they're case insensitive.

Case conveys meaning. Ditching is a choice.

> It's nice, convenient, helpful when identifiers aren't case sensitive.

In some cases yes, in most cases no. Try to lower() this comment, and try to read it. It may not be nice, convenient and helpful.

Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Wednesday December 29, 2021 @07:48AM (#29724322)
Case insensitive filesystems usually preserve the case so you can use capital letters in filenames.
Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Wednesday December 29, 2021 @09:19AM (#29724985)
Yes, but it doesn't simplify any of the matching logic, to begin with. Also makes porting programs much harder in the long run.
Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Thursday December 30, 2021 @01:39AM (#29734269)
> "If humans didn't use cases, and this is not how we use writing, i can just write will all lowercase letters and make distinctions between apple the fruit and apple the company, or turkey the animal and turkey the country some other, more convoluted way. Cases matter. They carry information. Try to tell a mathematician or any scientist that their formulas are moot because X and x are the same variable."

I have occasionally complained that I find math notation frustrating to read because of the use of the same letter with a tiny variation, maybe an unpronouncable one. Mathematicians are not particularly interested in what outsiders find difficult (why would they be?).

I have occasionally enthused about PowerShell, a shell/scripting language where string comparison is case insensitive (by default, sensitive if you want it), where variable names, method names, object properties, function names, are all case insensitive, and how wonderfully convenient, liberating, easing and brilliant I think that is for an interactive shell experience. And about other simplified systems such as APL and Dr Iverson's work to simplify math precedence rules and how its builtins try to work the same over scalars, vectors, and multidimensional arrays. About Simplified Music Notation and their work to reduce cognitive load by in-lining sharp and flat information into the shape of the note instead of having to remember it from the beginning of the bar; the Esperanto language and the 'clockwork-morphology' where all the patterns about past/present/future apply to every verb with no exceptions for strong verbs or loan-words, and how much easier that makes it to learn.

Humans use case flexibly, it adds meaning but it can be overridden. News headline "Apple Announces New Computer" means something different from "Fruit Grower Announces New Apple". Humans now have to deal with more and more different systems, the fewer nitpicking rules humans have to learn for each one to be able to do that, the more the systems adapt to humans, the better.

> "Computer is the ultimate data storage and manipulation device we have, and I don't want ambiguity in any parts of it."

I don't want ambiguity, mapping "a = A" for information retrieval isn't ambiguous, it's completely specified. I don't know what it would do in Turkish, but your own example tells me you can see those four things as variants of 'i' differing in capitalisation and you don't confuse any of them with K or Z. If you can, computers should be able to. I would expect datetime and number formatting to be different in Turkey, and capitalisation too. If i, İ, ı, I are different, then they are different and need to be carefully specified each time, that Turkish case shouldn't mean English a-z and A-Z must be considered different.

> "I'm the opposite. I consider apple being equal to Apple "Dreadful UX", so it's subjective."

You consider it "a dreadful experience" that someone searching Google for 'apple computer' gets results instead of nothing? That "December 2021" and "december 2021" are considered the same month? Someone who doesn't remember the correct capitalisation for XF86Config, what should they search for to find it in your world? All possible case variants? One way they could find out is to list a directory which contains it and read the listing, and the only reason that works is because their brain can recognise 'the same thing' without knowing the case(!). Humans do it, machines should do it (unless explicitly overridden).

> "Case insensitive passwords and usernames are big security nightmares"

Passwords yes. Usernames, no. Case sensitive names are a security nightmare, they lead to problems like phishing. It's bad enough getting an email from @bankofamerlca.com but if the official one was bankofamerica.com and BankofAmerica.com was a scam domain, what chance would anyone have?

Like, apple and APPLE are the same company name in the UK! Search for 'apple' on this government site https://find-and-update.company-information.service.gov.uk/c... - and it says "The company name "APPLE" is considered to be the 'same as' the existing names shown below: APPLE.COM LTD". If that's ambiguous, a computer system should represent the ambiguity of real life.

> "In normal human language case conveys meaning."

But the case difference is not pronouncable, not memorable. I don't have to learn apple and Apple as two different words, I change the case on-the-fly as I need it. Same way I would not want to condiser apple and apple as different words where I have to get the italics correct before the computer will find them, or underlines, or bolding, or colour, I don't want to have to specify the way the news headline was written before I can find it - not font size or emphasis or capitalization. "README.TXT" is still at the core saying "read me" not anything fundamentally different.

> "Try to lower() this comment, and try to read it. It may not be nice, convenient and helpful."

Try to transcribe a talk and write the case they are speaking. They aren't speaking cases, you have to guess from your knowledge of language and work out from context which things are names and where sentences begin. Case isn't present in speech but it still carries meaning.

Re:Gobolinux : Redefining Linux filesystem hierarchy by greiskul on Tuesday December 28, 2021 @03:43PM (#29717889)
If you are manually typing a command, then the shell could do this work instead of the file system, right? That's what the shell is for, to be the bridge between humans and the computer right. In a perfect system, you would type ls /p, and one of the suggestions of the tab completion would be /Program.
Re:Gobolinux : Redefining Linux filesystem hierarchy by galaxyLogic on Tuesday December 28, 2021 @08:43PM (#29720743)
You are right. Imagine that you had a fancy speech-recognition interface to your system. When you pronounce the name of a command, there's no difference whether you pronounce it uppercase or lowercase.

Also imagine having two files in the same directory which differ only by case. What would be the benefit of being able to have two or more such files?

Are there any use-cases for which case-sensitive file-system is better than case-insensitive one?

Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Wednesday December 29, 2021 @04:10AM (#29723191)
However, the pronunciation of the actual body text will trigger some words to be upper case, so there's definitely a meaning under that capitalized letters.

Actually, not having the exact file may not provide a utility for you, or most of us, but searching for a file in a case sensitive manner, and getting ENOTFOUND just because it doesn't present in the way I searched is valuable from my point of view.

Also, having a case-sensitive system is simpler from technical point of view, and prone to less bugs. This is especially true after UTF-8 become ubiquitous. Searching for an exact byte stream is much more simpler than a country dependent, exceptions filled search/match algorithm.

Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Tuesday December 28, 2021 @03:49PM (#29717973)
Bash normally doesn't do that, but there are a lot of options available for both Bash and ZSH, which can do much more than just "case insensitive matching".
Re:Gobolinux : Redefining Linux filesystem hierarchy by yjftsjthsd-h on Wednesday December 29, 2021 @02:07AM (#29722637)
Specifically: For bash, `set completion-ignore-case on` in ~/.inputrc, for zsh ... I have `zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'`, which seems too complicated but that's what's in my zshrc.
Re:Gobolinux : Redefining Linux filesystem hierarchy by rickbad68 on Tuesday December 28, 2021 @03:25PM (#29717654)
A case sensitive filesystem doesn't require you to hit shift either if you just call the directory "programs". Also, there are many ways to save your pinky from moving the huge distance to the shift-key other than an arbitrary restriction on all file names in the file system..
Re:Gobolinux : Redefining Linux filesystem hierarchy by codedokode on Tuesday December 28, 2021 @06:09PM (#29719444)
What are the advantages of using a case-sensitive file system? I cannot imagine a situation when you need to create two files that differ only in letter case. This also would make program that create such files not portable.
Re:Gobolinux : Redefining Linux filesystem hierarchy by hvdijk on Tuesday December 28, 2021 @09:10PM (#29720922)
The primary advantage for me is simplicity. Case insensitive file systems are complicated when you start dealing with non-ASCII characters and different software implementing the case rules with subtle differences. With case sensitive file systems you know exactly what you get.
Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Tuesday December 28, 2021 @11:57PM (#29722045)
If you're going to move to non-ASCII characters, what about Unicode combining characters, do you have to care if your file named é is a single accented e or a pair of e-and-combining-accent before you can move it?

If you shouldn't have to care, if there should be a layer of Unicode normalization happening, why is that okay but case normalisation is not okay? If you do have to care, then you no longer "know exactly what you get".

Re:Gobolinux : Redefining Linux filesystem hierarchy by hvdijk on Wednesday December 29, 2021 @12:39PM (#29727252)
> If you do have to care, then you no longer "know exactly what you get".

You do know you get exactly what you put in, whether that is é (U+00E9) or é (U+0065 U+0301). When you reference files created by yourself, this is not a problem as realistically speaking, your input method will only have a convenient way of forming one of these, and it will consistently generate the same one every time. When you reference files created by someone else, this may be a problem but no more than e.g. the distinction between file.txt (lowercase L) and fiIe.txt (uppercase i): from the user's perspective, the problem is pretty much avoided by selecting the file using tab completion, TUIs, GUIs, whatever you use.

Re:Gobolinux : Redefining Linux filesystem hierarchy by bayindirh on Wednesday December 29, 2021 @02:15PM (#29728743)
> e.g. the distinction between file.txt (lowercase L) and fiIe.txt (uppercase i)...

Just want to remind a little but extremely important thing: There's absolutely no guarantees that upper("i") is I. There's at least one language breaks that convention, and you won't believe how a big headache is that.

Re:Gobolinux : Redefining Linux filesystem hierarchy by hvdijk on Wednesday December 29, 2021 @04:23PM (#29730201)
Good point, Turkish uppercases i to İ. This adds complexity to the idea of case insensitive file systems even when only considering ASCII.
Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Thursday December 30, 2021 @12:17AM (#29733882)
https://prnt.sc/257kxxa lowercase l and uppercase I are quite distinct. If you're going to select all your filenames with autocomplete, then why argue restrict me to case sensitive filenames?

Windows NTFS is sometimes described as case-preserving, case-insensitive; i.e. if you name a file "Test" it will stay in that case, but if you ask for "test" it will find the file "Test". I don't know whether that happens in Win32 or NTFS, but it seems like best of both worlds; I don't want "case insensitive" where it could show me the name in a different case than I entered.

Re:Gobolinux : Redefining Linux filesystem hierarchy by hvdijk on Thursday December 30, 2021 @06:28AM (#29735847)
For the record, this is how lowercase l and uppercase I show up here: https://prnt.sc/258zzy0
Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Thursday December 30, 2021 @10:04AM (#29737254)
And this is how they show up here: https://prnt.sc/259t3qy

I don't override the font, either HN or FireFox or Windows is picking a serif font. I assume you didn't explicitly choose a font where different things look the same, but if it rendered 'a' and 'Z' the same glyph, you wouldn't say that was a problem with the English alphabet or with case sensitivity, or anything other than bad font design, right?

Re:Gobolinux : Redefining Linux filesystem hierarchy by hvdijk on Thursday December 30, 2021 @10:45AM (#29737648)
You showed a screenshot earlier, I know what they look like for you. :) I don't override the font either. HN specifies a CSS font family "Verdana, Geneva, sans-serif", where Verdana is installed by default on Windows but is not a full sans-serif font, so it's a somewhat odd choice by HN. As for the English alphabet, I didn't say there was a problem with it, just that you cannot reliably tell just from looking at letters which letters they are. In practice it is not an issue.
Re:Gobolinux : Redefining Linux filesystem hierarchy by jodrellblank on Thursday December 30, 2021 @07:10AM (#29736072)
Frankly, the use case where I make a file to send to a customer "Example Ltd DNS details" and want to open it from a command line happens to me infinitely more often than the use case where I have a file called "fiIe.txt" and want to open it from a command line.
Re:Gobolinux : Redefining Linux filesystem hierarchy by naniwaduni on Tuesday December 28, 2021 @11:34PM (#29721899)
Well, it means you don't need to do things with Unicode casefolding tables in the middle of your not-eating-data fs code.
Re:Gobolinux : Redefining Linux filesystem hierarchy by pxc on Tuesday December 28, 2021 @03:25PM (#29717659)
I personally find the combination of case-sensitive filesystems with case-sensitive or smart-cased autocompletions pretty comfy.

Most shells can be configured to behave that way, and Fish works that way by default.

Re:Gobolinux : Redefining Linux filesystem hierarchy by actinium226 on Tuesday December 28, 2021 @12:51PM (#29716069)
Perhaps a new concept of a "symlink with backups" could be introduced.

You install ProgA and the lib is symlinked into the index You install ProgB and the index's symlink to ProgA's lib gets some information added to it along the lines of "if the symlink to ProgA/lib is broken, try ProgB/lib"

Then when you uninstall ProbA the fallback symlink is activated.

At some point you would want to clean up the dangling primary link but maybe the best time to do it is immedately. i.e. the first time the primary fails you make the backup the new primary and now there's no backup, i.e. it looks the way it would look if you had only ever installed ProgB.

Re:Gobolinux : Redefining Linux filesystem hierarchy by function_seven on Tuesday December 28, 2021 @03:24PM (#29717643)
Why not use hard links instead? Both ProgA and ProgB will have their own links to the same inode. Either one can delete their own link, but the library will still exist unless all programs using it delete their links.
Re:Gobolinux : Redefining Linux filesystem hierarchy by pjc50 on Tuesday December 28, 2021 @05:03PM (#29718818)
This is roughly what Debian "alternatives" does, although it's not used for libraries.