Об одной проблеме Android, и даже не столько Android

28 октябрь, 2010 - 15:49Андрей Зубинский

И не только Android, конечно. Есть одна совершенно очевидная проблема у всех "малых" ОС, ориентированных на встраиваемые применения в устройствах пользовательского назначения. И проблема эта вовсе не на пользовательском уровне - дело не в рюшиках, украшающих видимые пользователю мордочки. Рюшечки и прочие мультитачи дизайнеры и программисты прикрутят к чему угодно - благо, идеи эти такие не новые и не настолько сложные, чтобы им уделять внимание вообще. Пусть от этого ахают восторженные девы. Дело в системном уровне.

Поясню на типовом примере, с которым неизбежно столкнутся все пользователи подобных устройств. У вас есть нечто - например, таблет, в котором реализован USB-хост. И вот вы этому нечто бодро и радостно в USB-порт втыкаете какую-то полезную штуку. Например, 3G/4G/WiMax модем. И что просиходит? С вероятностью 90% (а то и все 100%) - системное сообщение "устройство не поддерживается". А какой год на улице? 2010-й? Это нормально в 2010-м году такое вот, да? По-моему, это ненормально.

А всё почему? А всё потому, что на системном уровне, похоже, пещерный век. А именно, - драйверы "торчат" там, где, по идее, у таких устройств им быть не место. На том же системном уровне. А где они должны быть? Конечно, в userspace. Потому что в этом случае можно определить тип подключенного устройства и что сделать? Правильно - подкачать драйвер из какого-то ...store (если он там, конечно, есть), запустить процесс с ним и тем самым дать возможность пользователю стать полноценным пользователем того, что у него имеется.

Я понимаю, что красивые слова типа "доносить высокие технологии рядовым пользователям" и откровения типа "сейчас никому не интересно, что там внутри" - это новые двигатели нового прогресса. Но тем, кто в новом прогрессе выпадает из цепочки выкачивания денег "за прогресс", как-то всё равно что первое, что второе. Первое не является заслугой, и прибегающие к подобной аргументации просто понятия не имеют что такое "технология" (и если уж что-то является технологической компанией, то оно по сути своей как раз и занимается донесением достижений бла-бла-бла) и потому повторяют опыт предков с "лампочкой Ильича". А вот второе как раз... Мне так кажется, что когда всем становится неинтересно что там внутри и как оно работает, когда сама идея неинтересности артефактов становится чуть ли не основой основ, артефакты становятся хуже. Потому что ими пользуется всеядная нелюбопытная аудитория, не способная создать полноценную обратную связь во время жизненного цикла артефакта, полностью отдавая требования, даже самые законные, разработчику, и тем самым отдаваясь ему же полностью.

Вот с этим очевидным соображением насчёт драйверов в user space - оно же под ногами валяется, и первое, о чём думаешь, глядя на результат "втыкания" обычного ходового во всём мире 3G-модема в новенький красивенький таблет - так именно о несоответствии между мордашками, тактильным интерфейсом и прочими милыми рюшечками и элементарной невозможностью использовать то, что, очевидно, должно быть можно использовать. По крайней мере, для использования чего не видно препятствий.

То же самое можно сказать и о файловых системах всей этой "мелочи". Я имею в виду сетевые файловые системы. В ОС Plan 9 и Inferno с незапамятных времён это отработано. Больше того, файловые серверы Plan 9  и протоколы портированы чуть ли не на всё, на что можно портировать. Ну почему бы не дать возможность пользователю таблета автоматически подключаться (wifi есть везде) к домашнему серверу (или к публичному) и совершенно прозрачно смотреть-читать-слушать файлы прямо с сервера? Да, для этого надо делать серверную и клиентскую часть. И кусок клиентской части надо "заталкивать" в системный уровень. Что для стороннего производителя ПО, не участвующего в проектировании конкретного устройства в существующей модели просто невозможно. Нельзя ему туда. То есть, можно, но это уже хак, который на месте не всякий пользователь сделает. А если бы, если бы поддерживались userspace-драйверы, было бы всё иначе.

К слову, нюанс с драйверами в userspace - большой, очень большой плюс к... хорошо забытой и недооцененной ОС типа Minix. Да, Minix это может, она так устроена. Принципиально так устроена. У неё все драйверы в userspace. И вот если всё что поверх ядра Linux в Android перенести и поместить над ядром Minix, может получиться куда более совершенная система. В первую очередь - с точки зрения пользователя. В принципе, и в Linux есть возможность создавать и использовать драйверы в userspace (даже API как будто устоялся) - так используйте её, дорогие производители, используйте.