<story><title>Linus Torvalds on HFS+</title><url>https://plus.google.com/+JunioCHamano/posts/1Bpaj3e3Rru</url></story><parent_chain><item><author>Someone1234</author><text>Can someone explain to me why case insensitivity is a bad thing? Clearly Linus believes so but didn&amp;#x27;t explain why he believes so.&lt;p&gt;Most UNIX and Linux systems seem to have an &amp;quot;all lowercase&amp;quot; or &amp;quot;all uppercase&amp;quot; convention, so the fact that they have case sensitivity is often not utilised.&lt;p&gt;In fact the biggest reason you&amp;#x27;d want case sensitivity off the top of my head is legacy support but that&amp;#x27;s just a circular argument (since you never really reach WHY it was that way originally, just that it was).&lt;p&gt;I guess based on what he talks about next he is worried about how case insensitivity interacts with other character sets (i.e. does it correctly change their case), but for most sets isn&amp;#x27;t the lower and upper case defined in the UNICODE language spec itself?</text></item></parent_chain><comment><author>thristian</author><text>The prime number-one concern in kernel programming is managing complexity. Well, in most programming really, but in kernel programming unmanaged complexity leads to lost data and sometimes broken hardware instead of &amp;quot;just&amp;quot; crashes.&lt;p&gt;Case-sensitivity is the easiest thing - you take a bytestring from userspace, you search for it exactly in the filesystem. Difficult to get wrong.&lt;p&gt;Case-insensitivity for ASCII is slightly more complex - thanks to the clever people who designed ASCII, you can convert lower-case to upper-case by clearing a single bit. You don&amp;#x27;t want to &lt;i&gt;always&lt;/i&gt; clear that bit, or else you&amp;#x27;d get weirdness like &amp;quot;`&amp;quot; being the lowercase form of &amp;quot;@&amp;quot;, so there&amp;#x27;s a couple of corner-cases to check.&lt;p&gt;Case-sensitivity for Unicode is a giant mud-ball by comparison. There&amp;#x27;s no simple bit flip to apply, just a 66KB table of mappings[1] you have to hard-code. And that&amp;#x27;s not all! Changing the case of a Unicode string can change its length (ß -&amp;gt; SS), sometimes lower -&amp;gt; upper -&amp;gt; lower is not a round-trip conversion (ß -&amp;gt; SS -&amp;gt; ss), and some case-folding rules depend on locale (In Turkish, uppercase LATIN SMALL LETTER I is LATIN CAPITAL LETTER I WITH DOT ABOVE, not LATIN CAPITAL LETTER I like it is in ASCII). Oh, and since Unicode requires that LATIN SMALL LETTER E + COMBINING ACUTE ACCENT should be treated the same way as LATIN SMALL LETTER E WITH ACUTE, you also need to bring in the Unicode normalisation tables too. And keep them up-to-date with each new release of Unicode.&lt;p&gt;So the last thing a kernel developer wants is Unicode support in a filesystem.&lt;p&gt;[1]: &lt;a href=&quot;http://www.unicode.org/Public/UNIDATA/CaseFolding.txt&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.unicode.org&amp;#x2F;Public&amp;#x2F;UNIDATA&amp;#x2F;CaseFolding.txt&lt;/a&gt;</text></comment>
<story><title>Linus Torvalds on HFS+</title><url>https://plus.google.com/+JunioCHamano/posts/1Bpaj3e3Rru</url></story><parent_chain><item><author>Someone1234</author><text>Can someone explain to me why case insensitivity is a bad thing? Clearly Linus believes so but didn&amp;#x27;t explain why he believes so.&lt;p&gt;Most UNIX and Linux systems seem to have an &amp;quot;all lowercase&amp;quot; or &amp;quot;all uppercase&amp;quot; convention, so the fact that they have case sensitivity is often not utilised.&lt;p&gt;In fact the biggest reason you&amp;#x27;d want case sensitivity off the top of my head is legacy support but that&amp;#x27;s just a circular argument (since you never really reach WHY it was that way originally, just that it was).&lt;p&gt;I guess based on what he talks about next he is worried about how case insensitivity interacts with other character sets (i.e. does it correctly change their case), but for most sets isn&amp;#x27;t the lower and upper case defined in the UNICODE language spec itself?</text></item></parent_chain><comment><author>kstenerud</author><text>Yes, it would be nice to have universal &amp;quot;uppercase&amp;quot; and &amp;quot;lowercase&amp;quot; rules, but in the real world, collation rules are crazy, arbitrary, and damn near impossible to get right. Now try to get it right in EVERY locale around the world, because if you don&amp;#x27;t, you open a big gaping security hole or data corruption bug.</text></comment>