• arthurpizza@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    I can make a file named COM1 on Linux. That’s on the forbidden list for Windows.

    The forbidden list:

    • CON
    • PRN
    • AUX
    • CLOCK$
    • NUL
    • COM1
    • COM2
    • COM3
    • COM4
    • COM5
    • COM6
    • COM7
    • COM8
    • COM9
    • LPT1
    • LPT2
    • LPT3
    • LPT4
    • LPT5
    • LPT6
    • LPT7
    • LPT8
    • LPT9
    • lud@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      That’s because Windows is generally very backwards compatible.

        • DefederateLemmyMl@feddit.nl
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          The thing is, a lot of the legacy backwards compatible stuff that’s in Linux is because a lot of things in Unix were actually pretty well thought out from the get go, unlike many of the ugly hacks that went into MSDOS and later Windows and overstayed their welcome.

          Things like: long case sensitive file names from the beginning instead of forced uppercase 8.3 , a hierarchical filesystem instead of drive letters, “everything is a file” concept, a notion of multiple users and permissions, pre-emptive multitasking, proper virtual memory management instead of a “640k is enough” + XMS + EMS, and so on.

          • the_crotch@sh.itjust.works
            link
            fedilink
            arrow-up
            0
            ·
            7 months ago

            Unix was designed for mainframes, qdos/msdos was designed to be a cpm knockoff the local nerd could use to play commander keen and do his taxes. It’s actually impressive how much modern/business functionality they were able to cram into that.

            • DefederateLemmyMl@feddit.nl
              link
              fedilink
              English
              arrow-up
              0
              arrow-down
              1
              ·
              7 months ago

              Unix was designed for mainframes

              Unix was never for mainframes. It was for 16-bit minicomputers that sat below mainframes, but yes they were more advanced than the first personal computers.

              It’s actually impressive how much modern/business functionality they were able to cram into that.

              Absolutely, but you have to admit that it’s a less solid foundation to build a modern operating system on.

              In the 80s, there were several Unices for PC too btw: AT&T, SCO, even Microsoft’s own Xenix. Most of them were prohibitively expensive though.

    • stoy@lemmy.zip
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      I don’t really see the benefit of allowing users to create files with the same name in the same directory, yeah, yeah I know that case sensitivity means that it isn’t same name, but imagine talking to a user, guiding them to open the file /tmp/doc/File and they open /tmp/doc/file instead

      • MartianSands@sh.itjust.works
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        The reason, I suspect, is fundamentally because there’s no relationship between the uppercase and lowercase characters unless someone goes out of their way to create it. That requires that the filesystem contain knowledge of the alphabet, which might work if all you wanted was to handle ASCII in American English, but isn’t good for a system which needs to support the whole world.

        In fact, the UNIX filesystem isn’t ASCII. It’s also not unicode. UNIX uses arbitrary byte strings, with special significance given to a very small number of bytes (just ‘/’ and ‘\0’, I think). That means people are free to label files in whatever way they like, and their terminals or other applications are free to render them in whatever way seems appropriate, without the filesystem having to understand unicode.

        Adding case insensitivity would therefore actually be significant and unnecessary complexity to add to the filesystem drivers, and we’d probably take a big step backwards in support for other languages

        • LarmyOfLone@lemm.ee
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          You’re basically arguing that a system shouldn’t support user friendly things because that would add significant burden to the programmer.

          The quintessential linux philosophy. Well done! I mean, what is language? Why have named code variables? This is just a random array of bytes!

          • MartianSands@sh.itjust.works
            link
            fedilink
            arrow-up
            0
            arrow-down
            1
            ·
            7 months ago

            No, I’m arguing that the extra complexity is something to avoid because it creates new attack surfaces, new opportunities for bugs, and is very unlikely to accurately deal with all of the edge cases.

            Especially when you consider that the behaviour we have was established way before there even was a unicode standard which could have been applied, and when the alternative you want isn’t unambiguously better than what it does now.

            “What is language” is a far more insightful question than you clearly intended, because our collective best answer to that question right now is the unicode standard, and even that’s not perfect. Making the very core of the filesystem have to deal with that is a can of worms which a competent engineer wouldn’t open without very good reason, and at best I’m seeing a weak and subjective reason here.

      • DefederateLemmyMl@feddit.nl
        link
        fedilink
        English
        arrow-up
        0
        arrow-down
        1
        ·
        7 months ago

        It tells you there’s a name clash, and then it clones it anyway and you end up with the contents of README.MD in README.md as an unstaged change.

        • lseif@sopuli.xyz
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          sounds like actually a good solution … tho doesnt sound like it would work for more than 2 similarly-named files

          • DefederateLemmyMl@feddit.nl
            link
            fedilink
            arrow-up
            0
            arrow-down
            1
            ·
            7 months ago

            I don’t think it’s intended as a “solution”, it just lets the clobbering that is caused by the case insensitiveness happen.

            So git just goes:

            If you add a third or fourth file … it would just continue, and file gets checked out first gets the filename and whichever file gets checked out last, gets the content.

  • radamant@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Windows way is superior, in my opinion. I don’t think there’s a need for File.txt and fILE.txt

    • DefederateLemmyMl@feddit.nl
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      I don’t think there’s a need for File.txt and fILE.txt

      It’s not so much about that need. It’s about it being programmatically correct. f and F are not the same ASCII or UTF-8 character, so why would a file system treat them the same?

      Having a direct char type to filename mapping, without unnecessary hocus pocus in between, is the simple and elegant solution.

      • radamant@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        7 months ago

        That’s some suckless level cope. What’s correct is the way that creates the least friction for the end users. Who really cares about some programming purity aspect?

        • DefederateLemmyMl@feddit.nl
          link
          fedilink
          English
          arrow-up
          0
          arrow-down
          1
          ·
          edit-2
          7 months ago

          That’s some suckless level cope

          Thanks, really constructive way of arguing your point…

          Who really cares about some programming purity aspect?

          People who create operating systems and file systems, or programs that interface with those should, because behind every computing aspect is still a physical reality of how that data is structured and stored.

          What’s correct is the way that creates the least friction for the end users

          Treating different characters as different characters is objectively the most correct and predictable way. Case has meaning, both in natural language as well as in almost anything computer related, so users should be allowed to express case canonically in filenames as well. If you were never exposed to a case insensitive filesystem first, you would find case sensitive the most natural way. Give end users some credit, it’s really not rocket science to understand that f and F are not the same, most people handle this “mindblowing” concept just fine.

          Also the reason Microsoft made NTFS case insensitive by default was not because of “user friction” but because of backwards compatibility with MSDOS FAT16 all upper case 8.3 file names. However, when they created a new file system for the cloud, Azure Blob Storage, guess what: they made it case sensitive.