Автор: Илья Щуров Voyager
Необычный ноутбук XO-1, разрабатываемый в рамках проекта OLPC (laptop.org) для борьбы с проблемой «цифрового разрыва», скептики могут высокомерно окрестить «компьютером для бедных». Формально они правы: целевая аудитория «стодолларового лэптопа» – дети из стран третьего мира, не имеющие доступа не только к высокоскоростному Интернету, блогам MySpace или вселенной Second Life, но и к обычным книжкам и учебникам. Однако, если сбудется хотя бы часть объявленных планов, я не удивлюсь, когда через десять-пятнадцать лет нынешние «бедные» пользователи по уровню владения информационными технологиями (и не только ими) окажутся на голову выше своих «богатеньких» сверстников. На то есть множество причин.
Своими глазами
Я давно присматривался к этой инициативе, однако до недавнего времени знакомство с нею не выходило за рамки внимательного прочтения новостей по теме, попадающих на страницы "КТ". Поводом к более серьезным отношениям послужил выход LiveCD с промежуточной версией операционной системы (конечно, это Linux), лежащей в основе XO. (Образ размером в 200 мегабайт доступен с сервера olpc.download.redhat.com.) На самом деле, складывается впечатление, что это не первый подобный релиз, однако на глаза он попался впервые, и, не имея надежды получить доступ к тестовым устройствам (уже существующим в реальности в очень ограниченном количестве), я не смог пройти мимо возможности своими руками пощупать заманчивую игрушку.
Памятуя заветы главного редактора, не буду рассказывать душераздирающие истории о том, как LiveCD не загрузился на моем (отнюдь не стодолларовом) ноутбуке из-за внешнего FireWire-привода, как он ругался на отсутствие каких-то устройств хранения уже на десктопе, как жутковато хрустел жесткими дисками при загрузке и как в конце концов счастливо загрузился. Вы не узнаете и о том, как я пытался найти в нем эмулятор терминала, меню «Пуск» или на худой конец иконку "Мой компьютер". Собственно, про LiveCD вы не узнаете больше вообще ничего: он представляет собой скорее SDK (набор для разработчика), чем «демонстрашку» возможностей и идей системы, о которых, собственно, мне и хочется рассказать.
Постановка задачи
Кстати
Название «XO» – это не загадочная аббревиатура, а просто символьное представление для иконки проекта.
Проблема создания максимально экономичного (в смысле цены и энергопотребления) компьютера, обладающего уникальными свойствами и ориентированного в первую очередь на детей, вернула разработчиков на несколько десятков лет назад. В те славные времена, когда каждый байт оперативной памяти был на счету, программы приходилось писать, все еще задумываясь о производительности, когда не было устоявшихся интерфейсных стереотипов и парадигм современных операционных систем. Конечно, разработка ведется далеко не с нуля – без ядра Linux, языка Python и множества других разработок OLPC вряд ли был бы возможен. Однако, участники проекта обладают огромной свободой в способах достижения заявленных целей, неведомой индустриальным программистам. Более того: благодаря этой свободе проект может ставить перед собой фундаментальные вопросы о роли информационных технологий в образовании – и давать на них нестандартные ответы.
Что именно нужно детям для обучения и как им могут помочь в этом ИТ? Очевидно, им не нужно уметь работать в Excel, в совершенстве владеть Photoshop или знать язык запросов SQL. Даже не нужно знать, что файл – это "поименованная область на жестком диске". Равно как и множество других вещей, которыми богаты курсы информатики в школе.
Что же все-таки требуется в первую очередь? Ответ очень простой: иметь возможность экспериментировать, творчески выражать себя, общаться с другими людьми (в первую очередь – своими сверстниками), обмениваться с ними приобретенным опытом – и тем самым активно познавать окружающий мир, учиться и учить других. Эти идеи, объединяемые в концепцию конструктивистского (constructivism) обучения, активно продвигаются создателем языка Logo Сеймуром Пэйпертом (Seymour Papert), создателем Smalltalk Аланом Кеем (Alan Kay) и другими известными участниками проекта OLPC, и лежат в основе операционной системы XO.
Детский мир
Взрослые живут в мире документов, таблиц, формул, писем, поручений, совещаний. Дети живут в совершенно другом мире. В нем можно сказать "давай поиграем?" или "я с тобой не дружу" (а не "ты добавлен в игнор-лист"), можно придумывать бесконечные истории (а не обсуждать бесконечные отчеты), фантазируя на ходу и подыгрывая фантазиям друг друга, можно рисовать смешные или серьезные картины (а не диаграммы и графики), делая штрихи по очереди. К счастью, разработчики OLPC не забыли обо всем этом.
Одно из основных направлений OLPC – совместная работа и общение между детьми. Технически оно обеспечивается автоматическим созданием беспроводных ad-hoc-сетей (ячеек, mesh), однако одной лишь возможности связи между несколькими компьютерами мало. Чтобы ей могли воспользоваться маленькие юзеры (причем естественным образом), нужно существенно перестроить всю модель системы. И это чувствуется практически в каждом ее элементе.
Например, в метафоре "рабочего стола". Собственно, как такового «стола» нет. (И правда, причем здесь стол, да еще и рабочий, когда мы говорим о детях?) Есть несколько режимов отображения виртуального пространства ноутбука и его окрестностей, различающихся масштабом [Эта идея удивительным образом перекликается с разработками Джефа Раскина о "зуммируемом интерфейсе" (см. статью Владимира Гуриева "Борец с системой" в «КТ» #582) – странно, что этой связи практически никто не замечает]. Наиболее близкий к привычному нам режим – "Дом", соответствующий собственно данному компьютеру. Более широкий взгляд покажет пользователей в группах, к которым принадлежит владелец ноутбука – например, его одноклассников, друзей и т. д. Участники представляются двухцветными иконками, причем этот цветовой идентификатор является важным элементом интерфейса системы – он сопровождает каждого пользователя почти постоянно (например, заменяет картинки-аватары в сообщениях). Поднимаясь на ступеньку вверх, можно осмотреть всю «окрестность» (neighborhood) – на экране отображаются все пользователи ячейки, объединенные в кластеры по текущей активности.
Кстати, об «активностях» (activity) – они заменяют привычные нам "приложения". Этим словом обозначается одновременно и программа, и документ, и группа участников, которые над ним работают, и пространство для общения между ними. Можно воспринимать activity как своеобразную многопользовательскую игру, которая может быть надстроена над любым привычным нам приложением (собственно игрушкам в XO уделяется совсем немного внимания). Конечно, если ребенок просто загрузит веб-страницу или станет рисовать картинку в графическом редакторе, разница между двумя понятиями будет практически несущественной, но как только ему захочется пригласить к участию других пользователей XO, он должен иметь возможность это сделать буквально одной кнопкой. Например, если на лэптопе приглашенного участника нет необходимого кода, он скопируется и установится автоматически.
Еще одна привычная концепция, которой нет в OLPC – иерархическая файловая система. Роль файлов играют "объекты", а вместо файловой системы имеется "журнал", в котором записываются основные их изменения. Сохранение и восстановление состояний в идеале происходит автоматически при запуске и завершении «активности» [И снова что-то подобное мы уже видели у Раскина]. Если же нужно запомнить текущую версию объекта, но при этом продолжить его изменение (аналог функции "сохранить как"), на помощь приходит встроенная система управления версиями, знакомая программистам и участникам вики-проектов.
Модель для разборки
Дети любят разбирать игрушки. (Это предложение я припас еще несколько лет назад как раз для статьи об использовании свободного софта в образовании. Думаю, сейчас самый подходящий момент.) Посмотреть, что находится внутри, и попытаться понять, как она устроена и почему работает так, а не иначе. То же желание движет хакером, изучающим код неизвестной системы, ученым, пытающимся понять окружающий мир, или писателем, рассказывающим о переживаниях людей. Наверное, это один из основных инстинктов мыслящего существа.
Один из девизов OLPC – "низкие полы и никаких потолков". С одной стороны, система должна быть максимально простой, чтобы быть доступной для полностью самостоятельного освоения ребенком с нуля, а с другой – эта простота не должна служить препятствием для раскрытия возможностей устройства и талантов ее владельца. Пятилетнему пользователю вряд ли захочется учить три тысячи команд Unix и читать многие страницы документации, но уже десятилетнему, возможно, захочется разобраться в том, как работает эта система и чего он может достичь с ее помощью.
"Прозрачность" системы – еще один ключевой пункт философии всего проекта. Конечно, открытые исходные коды – необходимое условие, однако одного лишь open source здесь мало. Требуется создать инфраструктуру, максимально упрощающую изучение и модификацию кода.
Такую инфраструктуру обеспечивает специальная Developer-activity, представляющая собой полноценную среду разработки новых видов деятельности. Большинство компонентов XO написаны на языке Python, по мнению многих экспертов являющемся одним из лучших кандидатов на роль первого «серьезного» языка программирования. Юный хакер может модифицировать любую готовую «активность» или даже организовать совместную разработку по всем правилам open source (с патчами, контролем версий и т. д.), а также использовать приемы экстремального программирования благодаря функциям совместного редактирования кода в реальном времени (эта возможность присутствует и в обычном текстовом редакторе, основанном на AbiWord).
Впрочем, вся эта деятельность доступна скорее достаточно продвинутым пользователям, нежели начинающим – разбираться в реальном коде реальных приложений – нетривиальная задача даже для людей, уже владеющих базовыми навыками программирования.
Получить же их можно с помощью «активности» eToys – визуальной среды разработки мультимедийных приложений. Основанная на языке Squeak (вариации легендарного Smalltalk) и созданная специально для обучения программированию, эта система позволяет максимально интуитивным способом создавать и модифицировать интерактивные "книги", объединяя и настраивая различные объекты, управляемые скриптами.
Вперед в будущее?
Многие вещи, о которых я рассказал выше (и те, которые не поместились в формат этого краткого обзора), пока не реализованы в коде и остаются скорее концепциями, либо реализованы не до конца (трехсоткилобайтный документ, описывающий пользовательский интерфейс системы, доступен на wiki.laptop.org). Посмотреть «вживую» мне удалось только на eToys и, отчасти, на зуммируемый рабочий стол (не слишком функциональный на одиночном компьютере, не включенном в беспроводную сеть с другими подобными устройствами). Однако это не самое главное. Как писал Джереми Эллисон (Jeremy Allison) в статье для ZDnet, "даже если OLPC потерпит неудачу, он существенно повлияет на компьютерный ландшафт". Идеи, заложенные в его основу, стоят того, чтобы их реализовали. И они будут реализованы. В рамках этого проекта или другого, через полгода или десять лет – уже не столь важно.