k001
k001
:...
k001 [userpic]
Microsoft vs. TomTom part 2, or why VFAT is sooo cooool

Краткое содержание предыдущей серии:

  • теория: патенты придуманы, чтобы стимулировать технический прогресс;
  • практика: патенты в области ПО зачастую используются нехорошими людьми и компаниями как средство конкурентной борьбы; о прогрессе можно забыть;
  • Microsoft подала в суд на TomTom, производителя устройств автонавигации, за нарушение семи её патентов;
  • все (ну или почти все) эти патенты довольно банальны и вовсе не являются какой-то инновацией или изобретением; по-русски говоря, чепуха на постном масле;
  • три из семи патентов имеют прямое отношение к Linux.
Рассмотрим эти три имеющихся у Microsoft патента, которые фигурируют в иске и имеют отношение к Linux. Точнее, не к Linux вообще, а прямо к одной из основных компонент этой операционной системы, которая называется ядро или, по-английски, kernel.

Патент 6,256,642 имеет отношение к работе с флеш-памятью. Там описывается компонент ядра ОС, который работает с флеш-памятью на уровне ниже, чем файловая система, и управляет распределением блоков флеш-памяти. Тут я небольшой специалист, но возможно, это что-то вроде ubifs в Линуксе, или ещё что-то похожее. Больше мне тут нечего сказать — надеюсь, слушание (если оно состоится) прольёт свет на то, что именно там ТомТом нарушает и как.

Два оставшихся патента (5,579,517 и 5,758,352) крайне похожи друг на друга и, честно говоря, мне непонятно, какая в них есть разница — возможно, просто разными словами написано одно и то же, или в одном есть какая-то деталь, отсутствующая в другом.

Тут хочется заметить вот что. Патенты пишут на каком-то нечеловеческом сам-чёрт-ногу-сломит языке. Возможно, это такой полутехнический legalese (легализ — термин, используемый в английском, чтобы подчеркнуть дутую, искуственную усложнённость юридического языка, делающую его непонятным для обычных людей; в русском языке самые близкие (но далеко не идентичные) термины — крючкотворство и канцелярит). Второе свойство патентов — использовать как можно более общие, неконкретные, расплывчатые описания «изобретений». Делается это с целью того, чтобы такое описание подходило под как можно более широкий круг практических реализаций (авторов которых можно затем «доить» тем или иным способом). Для этого феномена существует специальное название — зонтичные патенты. Однако, я отвлёкся, вернёмся к этим двум патентам-близнецам.

Одной из функций операционной системы, а точнее, её ядра, является реализация так называемой файловой системы. Все из нас имеют дело с файлами, но большинство, наверное, не задумывалось, как оно там всё внутри устроено. А внутри там всё примерно так — есть большое изначально пустое пространство (жёсткий диск, дискета, флешка), а далее оно каким-то образом размечается, разграфляется на кусочки — сектора, блоки, кластеры и пр. В каких-то блоках хранится содержимое файлов, в каких-то — информация о самих файлах (название, размер, дата создания, модификации, права доступа, всякие другие разные и где именно на диске искать его содержимое). Вот, собственно, всё это — создание файлов, удаление, изменение — и реализует файловая система.

Когда Билл Гейтс писал свой первый Бейсик (или это был не Билл Гейтс, или это был не Бейсик — история та скрыта туманом), жёстких дисков на его компьютерах не было, а были дискеты — большие, медленные, очень маленького (по современным меркам) объёма — пару сотен килобайт. Биллу Гейтсу (или кому там ещё) была нужна какая-то простая файловая система, и он такую файловую систему придумал. Называется она FAT и устроена не просто, а очень просто (я, помнится, курсе на втором или на третьем института реализовал её от нечего делать на языке Си (то есть программа умела писать-читать файлы на FAT, не используя DOS, а только лишь прерывания BIOS для чтения-записи сектора на диске) — и всё удивлялся её наивной простоте, местами доходящей до некоторой тупости). Частично эта простота обусловлена недостаточно мощными на то время компьютерами, малыми объёмами оперативной памяти и дисков. Представляете, в первой версии FAT не было даже каталогов (директорий, папок, фолдеров — кому как нравится). Потом добавили.

Ввиду этой простоты у FAT очень много недостатков. Когда эти недостатки уж очень вылазили наружу (например, при увеличении ёмкости дисков стало пропадать впустую всё больше и больше места на них), их как-то поправляли, причём способами не самыми лучшими, а самыми простыми.

Одним из недостатков FAT были короткие имена файлов. Нельзя было создать файл с именем «Отчёт от 12 декабря 2008 года» или даже «otch-12-12-08». В FAT для имени файла предусмотрено 11 символов, точнее, 12, но четвёртый с конца — всё время точка (ещё одно странное ограничение, возможно, по тем временам и оправданное, не буду судить). Поэтому самым длинным именем могло быть «OT121208.TXT» (и уж раз мы про это ведём речь — в FAT нет разницы между прописными и строчными буквами, поэтому обычно все имена показывались В ВЕРХНЕМ РЕГИСТРЕ). А ещё три последних символа (называемые расширением имени файла, или просто расширением, в противовес имени) в имени являются служебными, то есть имеют специальный смысл для ОС, так что по сути остаётся только 8 символов. Не очень большой простор.

Когда Microsoft дошёл до разработки Windows 95, все уже понимали, что ограничение в 8 символов — это топорно и негламурно. Во многих других ОС (семейства UNIX и т.п.) уже давно была поддержка более длинных имён — к примеру, 14 символов (что почти в два раза больше) или даже 255 (это уж вообще выше крыши!). Конечно, ситуацию надо было как-то исправлять, а другой файловой системы под рукой у Microsoft не было, да и о совместимости с DOS тогда очень сильно заботились (опять ремарка в сторону — в IBM OS/2 3.0 совместимость с DOS была всё-таки лучше, чем у Windows 95, да и длинные имена файлов (в другой файловой системе) и прочие рюшечки присутствовали в изобилии).

Microsoft исправил ситуацию в своём стиле — самым грубым, прямым, топорным, но совместимым с DOS способом. В английской википедии этот способ называется workaround, а можно было бы назвать и dirty hack. Желающие могут посмотреть детали в википедии, но, в общем, в FAT под описание файла выделено 32 байта, из которых первые 11 содержат его имя, а остальные 21 — всяческие атрибуты. Так вот, чтобы сделать имя длиннее, чем в FAT, брали очередные 32 байта и в первые 11 из них вписывали очередные 11 символов имени (а в атрибуты писали такое, чтобы DOS пугался и не отображал эту запись как отдельное имя), и так далее. Таким образом, имя длиной 100 символов помещалось не в 100 байт, как можно подумать, а в 320 байт, из них 210 терялись впустую. Вот такой «грязный хак». Получилось так — в Windows видно длинное имя (навроде "How to pick up girls in bars.txt"), а в DOS — обрезанное , вроде «HOWTOP~1.TXT». Фигня, конечно, полная, но в Windows работает и в DOS работает, и все довольны. Впрочем, если в DOS скопировать такой файл, то длинное имя отвалится. Ну и ещё есть всякие нюансы, ну да пусть.

Вот именно этот уродливый трюк (называемый иногда VFAT, где V — Virtual) и запатентовала Microsoft ажно в двух вышеуказанных патентах. Вот такое изобретение века, ага.

Но причём тут Линукс? Причём тут ТомТом?

Разных файловых систем много. Современный Линукс, например, поддерживает десятка два (или три?) разных файловых систем, и даже Windows — штуки четыре или пять. Люди имеют обыкновение переносить файлы с системы на систему, с компьютера на компьютер, используя внешние носители — раньше дискеты, сейчас всякого рода USB-флешки и карточки CF, SD и т.п. Причём нынче в роли компьютера может быть сотовый телефон, фотоаппарат, плейер и прочее. Соответственно, нужен какой-то общий стандарт на файловую систему, чтобы всё это переносилось и читалось на всех компьютерах. Как-то так получилось, что таким общим стандартом для дискет и флешек стал именно FAT.

Опять отойду в сторону от повествования и замечу, что с компакт-дисками такого не получилось — там совсем другая файловая система (ISO9660), являющаяся, как видно из названия, международным стандартом, и свободная от всяких там патентов и прочего. Почему с файловой системой для CD (и DVD) всё нормально, а с ФС для флешек такая ерунда — загадка. Возможно, к этому приложил руку Microsoft, и наверняка мы об этом уже никогда не узнаем… А может, просто в силу простоты реализации FAT и широкого распространения DOS/Windows, где FAT был основной (и до какого-то времени единственной) файловой системой.

Итак, причём тут ТомТом? Конечно же, большинство автонавигаторов снабжены устройством чтения флеш-карточек (для хранения и обновления карт, музыки и т.п.). Конечно, эти карточки де-факто отформатированы под FAT. Поэтому их надо уметь читать и писать, то есть надо уметь читать и писать FAT, в том числе длинные имена. Вот тут-то мы и можем нарушить вышеуказанные патенты.

А причём тут Линукс? А при том, что Линукс, конечно же, тоже умеет читать и писать файлы на FAT, включая и длинные имена. Скажем так — не очень-то и хочется, потому что есть свои файловые системы, но флешку пользователя Windows и карточку из фотоаппарата тоже надо читать, иначе кому будет нужна такая операционная система? Мало кому. Есть такое слово — interoperability, по-русски совместимость. Без совместимости жить трудно — представьте, что каждая марка автомобиля требовала бы свой фирменный бензин и свои дороги. Это ж был бы полный ахтунг!

Получается вот что — Microsoft хочет засудить TomTom, в частности, за то, что его устройства совместимы с майкрософтовской файловой системой VFAT, что они умеют читать и писать файлы (хотя ТомТом не писал программного обеспечения для поддержки VFAT, вообще ни строчки; они просто воспользовались ОС Linux, которая уже это умеет). Вот вам хороший пример использования патентов для удушения конкурентов. Хотя, какие ещё конкуренты? Майкрософт не делает автонавигаторы (хотя какая-то программа, умеющая проложить маршрут по карте, у них есть), а ТомТом не делает операционных систем и офисных пакетов. Вроде бы ну никак не пересекаются? Отчего же Microsoft так ополчился? Просто чтобы денег выжать? И тут мимо — у ТомТома в последний год большие финансовые проблемы, да и ведение дела в суде — дело не копеечное (для обеих сторон).

Какие же причины побудили Microsoft тащить ТомТом в суд? Конечно, сам Майкрософт об этом нам не расскажет (а если и расскажет, то наврёт с три короба), но мы можем попробовать поразмышлять об этом сами. Об этом, судя по всему, в следующей серии.

Comments

>>>легализ... в русском языке самый близкий (но не идентичный) термин
Мне показалось что на роль аналога больше подходит Канцелярит

Канцэлярит — это язык всяких внутренних производственных директив и указивок. Формировался в первую очередь чтобы пишущий не выглядил деревенщиной, соответственно, он избавлен от в первую очередь от разного рода просторечных выражэний и чего-либо похожэго на них. Однозначность указаний — дело в нём второе, хотя и очень важное.

У легализа чуть-чуть другая цэль: чтобы высказанное было вполне однозначно и не допускало потом докапываний.

Соответственно, разница таки есть.

> У легализа чуть-чуть другая цэль: чтобы высказанное было вполне однозначно и не допускало потом докапываний.

Канцелярит — слово, придуманное Корнеем Ивановичем Чуковским для обозначения стиля русского языка, употребляемого в основном в среде чиновников и юристов.
К нашим чиновникам и юристам — фиг докопаешься :) А закон, как известно, что дышло...

Точного аналога в русском языке нет. Крючкотворство — слишком широкий термин, обозначающий всякие разные проявления бюрократии. Канцелярит, конечно, ближе, но тоже не вполне передаёт чуть. Тем не менее я добавлю это слово, спасибо!

Я уверен, что "стандартная де-факто ФС на флешках" - не просто так получилось. Производители флеш-карт могли бы вообще не форматировать создаваемые ими флешки. Но нет, они форматируют, и почему-то именно в ФАТ.
А договариваться Майкрософт умеет, тут спору нет :)

Я просто не хотел уподобляться конспирологам. Пишу, о чём знаю, о чём не знаю — делаю предположения.

Да и какой-то особо хорошей для флеша файловой системы (помимо ubifs, которая была написана сильно позже) я не видел. Скорее всего, её просто не было в то время, поэтому такие нужные для флеша штуки, как wear levelling, реализовали в железе.

До ubifs был jffs2, а ещё раньше просто jffs. jffs появилась в районе 2000-2001-х годов.

Наверное в распространении на флеш-накопителях все же виновата простота этого VFAT и большое растпространение windows где его можно с легкостью прочитать с помощью кард ридера.

Тем не менее не стали же на CD-ROMах использовать FAT… Когда вводится новый носитель, всё можно предусмотреть и сделать заранее, и MS бы поддерживала новую FS также, как она поддерживает ISO9660 (даже в DOS). Но как-то так получилось, что не получилось…

Думаю, дело тут и в том, что CD-ROM'ы предполагалось использовать в полноценных компьютерах (ну и читать эти диски на аудио-проигрывателях, которые реализовывали одну простую операцию - читали указанный файл).
А флешки использовались в довольно миниатюрных устройствах, у которых есть некая своя основная задача, и читать-писать флешку - лишь её часть. К тому же, замечу -- тут надо не только читать то, что записано на большом компе, но и записывать/удалять.

Плюс к тому, возможно, производители собственно флешек не хотели связывать пользователя только одной fs, ну и просто прикладывать усилия для стандартизации. Типа "мы просто выпускаем носитель, а что на него и в каком формате писать - дело ваше".

cd9660 крайне плохо предназначена для дозаписи и ещё хуже -- для удаления файлов с неё. workaround для этого в виде UDF - не факт что лучше.

Нет щщастя™ в жызни, короче ;)

Я, если что, не призывал к использованию isofs на флешке. Просто как пример.

В целом я не вижу ничего, что бы препятствовало использованию FAT на CD-R (за исключением дозаписи-перезаписи, конечно). Для дозаписи могли бы придумать очередной грязный хак. Но сделали ж вот специальную ФС.

А для флешек так не сделали, хотя могли бы

> Какие же причины побудили Microsoft тащить ТомТом в суд?

Тут всё понятно — TomTom не пользуется WindowsCE.

Очень полезное, спасибо.

про директории

> Представляете, в первой версии FAT не было даже каталогов

Это был плюс. Жаль, что они не развили идею.