Версия книги v1.4
Tango Операционная система из будущего
1
Алексей Дубовцев
Tango Операционная система из будущего
http://youtu.be/R7_rnucyZg8
Жизнь и страсть
Алексей Дубовцев
2
Tango Операционная система из будущего
0 Оглавление Оглавление
1
0.1
О чем эта книга .................................................................................. 13
0.2
Об авторе ............................................................................................ 15
Раздел 1 – Послание к человечеству ...................................................... 18 1.1
Послание к человечеству .................................................................. 19
1.2
Почему я решил написать эту книгу ................................................. 20
1.3
Формат книги – «Хотелки» ................................................................ 23
1.3.1
2
3
Наиболее важные группы пользователей ............................. 25
1.4
Формат книги – Реализация .............................................................. 28
1.5
Формат книги – Архитектура ............................................................. 29
1.5.1
Глобальный уровень архитектуры .......................................... 33
1.5.2
Макро-уровень архитектуры ................................................... 35
1.5.3
Микро-архитектура .................................................................. 36
1.5.4
Архитектура в жизни ................................................................ 38
1.6
Священные войны ............................................................................. 40
1.7
Формат книги – версия текста........................................................... 41
Раздел 2 – Виденье системы – «Хотелки» .............................................. 42 2.1
Введение ............................................................................................ 43
2.2
«Хотелки» ........................................................................................... 44
2.2.1
Обычный пользователь ........................................................... 44
2.2.2
Безопасность и надежность .................................................... 46
2.2.3
Владелец дата-центра ............................................................. 47
2.2.4
Разработчик приложений........................................................ 48
Алексей Дубовцев
Tango Операционная система из будущего
2.2.5
Верстальщик ............................................................................. 50
2.2.6
Владелец предприятия............................................................ 51
2.2.7
Администратор ........................................................................ 52
2.2.8
Разработчик компонентов для приложений ......................... 53
2.2.9
Инвестор в приложения .......................................................... 54
2.2.10
Создатель приложения ........................................................... 55
2.3
Обычный пользователь..................................................................... 56
2.3.1 Хочу, чтобы мои данные были доступны мне всегда и везде с любого устройства ................................................................................... 57 2.3.2 Хочу, чтобы социальный сервис был частью операционной системы 59 2.3.3 Хочу иметь простой механизм обучения, поддержки и помощи 62 2.3.4
Хочу иметь множество дешевых лицензионных приложений 64
2.3.5
Хочу, чтобы файлы всегда открывались ................................ 65
2.3.6 Хочу быстро находить нужные мне приложения и моментально начинать их использовать ............................................... 66 2.3.7
Хочу иметь единую платежную систему ................................ 68
2.3.8
Хочу иметь единую систему «туториалов» ............................ 70
2.3.9
Хочу, чтобы все приложения были доступны по ссылке ...... 71
2.3.10 ссылке
Хочу, чтобы любые документы и файлы были доступны по 72
2.3.11
Хочу иметь голосовое и видео общение, быстро и просто .. 73
2.3.12
Хочу иметь единую систему сообщений и почты ................. 74
2.3.13
Хочу открывать все свои старые файлы ................................. 75
2.3.14
Хочу создавать документы совместно с моими друзьями ... 76
Алексей Дубовцев
4
Tango Операционная система из будущего
2.3.15 Хочу иметь возможность отзывать обратно и редактировать посланные сообщения ............................................................................. 77 2.3.16
Хочу иметь общую единую систему уведомлений................ 78
2.3.17 Хочу, чтобы установка Танго была всегда простой и максимально быстрой ............................................................................. 79 2.3.18 Хочу, чтобы операционная система работала всегда стабильно, и ее не нужно было переустанавливать .............................. 81 2.3.19 Хочу иметь возможность работать с системой автономно, без использования сети ........................................................................... 82 2.3.20 Хочу всегда знать, какие файлы к чему относятся, и чем занято у меня место ................................................................................. 83 2.3.21 Хочу иметь простой механизм публикации и доставки видео контента 84 2.3.22 людей
Хочу искать информацию на основе рекомендаций живых 85
2.3.23
Хочу иметь понятную систему сообщений об ошибках ........ 86
2.3.24 Хочу, чтобы Танго умела работать на компьютерах без жесткого диска ......................................................................................... 88 2.4
Владелец предприятия...................................................................... 89
2.4.1 Хочу концентрироваться на корпоративных сервисах, а не на инфраструктуре ........................................................................................ 90 2.4.2 Хочу разворачивать приложение по всему предприятию централизованно...................................................................................... 93 2.4.3 Хочу подключать пользователей к моей инфраструктуре в один клик .................................................................................................. 94 2.4.4 Хочу, чтобы все документы, которые делают сотрудники в рамках компании, были всегда доступны и никогда не терялись ....... 95 2.4.5
Хочу иметь единый поиск по данным предприятия ............. 96
2.4.6 Хочу иметь возможность быстро организовывать отделы, группы, проектные команды ................................................................... 97 5
Алексей Дубовцев
Tango Операционная система из будущего
2.5
Безопасность и надежность.............................................................. 98
2.5.1
Хочу, чтобы мои данные всегда были надежно защищены 100
2.5.2
Хочу защищать свои данные при помощи СМС .................. 102
2.5.3
Хочу защищать свои данные при помощи живого звонка . 103
2.5.4 Хочу защищать свои данные при помощи электронного брелока 104 2.5.5
Я параноик, хочу защищать свои данные очень сильно..... 105
2.5.6 уровне
Хочу, чтобы мои данные были защищены на физическом 106
2.5.7 Хочу, чтобы приложения без моего ведома не получали доступ к моим данным .......................................................................... 107 2.5.8
Не хочу, чтобы моим аккаунтом завладели «злодеи» ....... 108
2.5.9
Не хочу иметь тысячу паролей, хочу иметь только один.... 109
2.5.10
Хочу, чтобы мои данные хранились там, где я этого хочу.. 111
2.5.11 Хочу, чтобы мои данные хранились на чужих компьютерах минимальное время .............................................................................. 112 2.5.12 Хочу иметь возможность загружать приложения из-под другого логина/пароля .......................................................................... 113 2.5.13 Хочу иметь возможность загружать приложения в режиме инкогнито................................................................................................ 113 2.5.14 Хочу иметь встроенные механизмы контроля трафика и анти-ддоса .............................................................................................. 114 2.5.15
Хочу, чтобы операционная система защищала меня от спама 116
2.5.16 Хочу иметь возможность установить систему в закрытом варианте и без связи с внешним миром .............................................. 117 2.6
Владелец дата-центра ..................................................................... 118
Алексей Дубовцев
6
Tango Операционная система из будущего
2.6.1 Хочу купить компьютеры, поставить на них софт и моментально получать с них прибыль ................................................. 119 2.7
Владелец приложения .................................................................... 121
2.7.1 Хочу просто и быстро находить инвестора для моих приложений ............................................................................................ 122 2.7.2 Хочу иметь полную информацию о пользователях моих приложений ............................................................................................ 126 2.7.3 Хочу иметь простую и удобную систему лицензирования приложений ............................................................................................ 127 2.7.4 2.8
Хочу иметь единую и простую рекламную платформу ....... 129
Разработчик приложений ............................................................... 130
2.8.1 Хочу, чтобы один и тот же код запускался на всех платформах ............................................................................................. 131 2.8.2
Хочу знать информацию о качестве сервиса дата центров 134
2.8.3 логина
Хочу иметь единую систему идентификации пользователей, 136
2.8.4 Хочу, чтобы порог входа для программистов был максимально низкий.............................................................................. 137 2.8.5
Хочу проектировать приложение визуально ....................... 139
2.8.6 Хочу чтобы все форматы и протоколы были открытыми – текстовыми ............................................................................................. 141 2.8.7 Хочу сохранять свои данные в базе просто и сразу, без сложных движков ................................................................................... 143 2.8.8 Хочу, чтобы любой компонент системы можно было заменить на другой ................................................................................ 145 2.8.9
Хочу писать логику на том языке, который мне нравится .. 147
2.8.10 Хочу иметь одни и те же инструменты на все случаи для работы с кодом....................................................................................... 149 2.8.11
7
Хочу моментально разворачивать приложения в сети ....... 151
Алексей Дубовцев
Tango Операционная система из будущего
2.8.12 Хочу иметь четкую и логичную систему версионности и ссылок во всем ....................................................................................... 152 2.8.13
Хочу писать социальные комментарии прямо в коде ....... 155
2.8.14 Хочу иметь простую систему создания и лицензирования компонент............................................................................................... 158 2.8.15
Хочу иметь единый каталог компонентов ........................... 160
2.8.16 Хочу иметь единую систему управления проектами и исходным кодом .................................................................................... 161 2.8.17
Хочу иметь единую систему удаленного вызова объектов 162
2.8.18
Хочу иметь общую систему телеметрии и логов................. 163
2.8.19
Хочу иметь визуальные инструменты для всего ................. 165
2.8.20 Хочу иметь совместимость со старым кодом и старыми компонентами ........................................................................................ 166 2.8.21 Хочу, чтобы была возможность защищать свою интеллектуальную собственность ........................................................ 167 2.8.22 Хочу, чтобы в операционную систему была встроена поддержка транзакций.......................................................................... 168 2.8.23
Хочу, чтобы профайлер и отладчик работали удаленно .... 169
2.8.24
Хочу иметь встроенный сервер конфигураций ................... 170
2.8.25
Хочу иметь открытый механизм локализации приложений 171
2.9
Верстальщик .................................................................................... 172
2.9.1 Хочу делать приложения только один раз для всех платформ ................................................................................................ 174 2.9.2
Хочу расширять модель верстки новыми компонентами .. 176
2.9.3 Хочу писать логику для клиентских приложений на своем любимом языке...................................................................................... 178 2.9.4
Хочу использовать сложные каскадные таблицы стилей ... 180
Алексей Дубовцев
8
Tango Операционная система из будущего
2.10
Администратор приложения ..................................................... 181
2.10.1 Хочу иметь возможность удаленно подключаться к компьютеру и управлять им .................................................................. 182 2.10.2 Хочу иметь встроенные механизмы масштабирования приложений ............................................................................................ 183 2.10.3 Хочу иметь встроенный механизм резервирования приложений ............................................................................................ 186 2.10.4 Хочу, чтобы механизмы масштабирования и резервирования работали не привязано к дата-центру .................................................. 187 2.10.5 2.11 3
Итог .............................................................................................. 190
Раздел 3 – Организация или как съесть слона ..................................... 192 3.1
Основные принципы ....................................................................... 193
3.2
Принципы в жизни........................................................................... 195
3.3
Исходный код................................................................................... 196
3.4
Сообщество ...................................................................................... 197
3.4.1 3.5
9
Хочу выстраивать приложения в рабочие цепочки............. 189
Принципы организаций сообществ ...................................... 199
Система управления проектом ....................................................... 200
3.5.1
Люди........................................................................................ 201
3.5.2
Требования ............................................................................. 202
3.5.3
Задачи ..................................................................................... 203
3.5.4
Ошибки ................................................................................... 204
3.5.5
Тесты ....................................................................................... 204
3.5.6
Статьи ...................................................................................... 205
3.5.7
Дискуссии................................................................................ 206
3.5.8
Комментарии.......................................................................... 207
3.5.9
Глобальность проекта ............................................................ 209
Алексей Дубовцев
Tango Операционная система из будущего
3.5.10 3.6
Распространение идеи .......................................................... 212
3.6.2
Формирование первоначальных требований ..................... 213
3.6.3
Формирование списка задач ................................................ 214
3.6.4
Создание первого прототипа ................................................ 215
3.6.5
Организация тестирования ................................................... 216
3.6.6
Организация сообщества ...................................................... 217
3.6.7
Альфа запуск .......................................................................... 218
3.6.8
Бета запуск ............................................................................. 219
3.6.9
«Продакшин» запуск ............................................................. 220
3.6.10
Наращивание функционала и развитие системы................ 221
Как вы можете внести свой вклад .................................................. 222
3.7.1
Рассказать наибольшему количеству людей о Танго ......... 223
3.7.2
Разместить ссылку на Танго на информационных ресурсах 224
3.7.3
Написать статью, книгу, помочь переводом........................ 225
3.7.4
Разработать часть системы ................................................... 226
3.7.5
Помочь проекту финансово .................................................. 227
3.7.6
Помочь в формировании требований.................................. 228
3.7.7
Помочь техникой и инфраструктурой .................................. 229
3.7.8
Обучить пользователей ......................................................... 229
3.7.9
Предложить что-либо еще .................................................... 230
Раздел 4 – Экономика и финансы ......................................................... 232 4.1
5
Этапы развития проекта.................................................................. 210
3.6.1
3.7
4
Развитие самой системы управления .................................. 209
Модель монетизации...................................................................... 233
Раздел 5 – Архитектура .......................................................................... 236
Алексей Дубовцев
10
Tango Операционная система из будущего
5.1
Принципы ......................................................................................... 237
5.1.1
Принцип отсутствующих деталей ......................................... 238
5.1.2
Принцип песочницы .............................................................. 240
5.1.3
Принцип слабо связанности .................................................. 241
5.1.4
Принцип заменимости........................................................... 242
5.2
Суть, а не форма............................................................................... 243
5.3
Реализуемость ................................................................................. 245
5.3.1
Оценки реализуемости .......................................................... 246
5.3.2
Как понять уровень программиста ....................................... 248
5.4
Архитектура ...................................................................................... 250
5.4.1
Глобальный уровень .............................................................. 252
5.4.2
Макроуровень ........................................................................ 253
5.4.3
Микроуровень ........................................................................ 254
5.5
Глобальный уровень – цель ............................................................ 255
5.6
Макро-уровень................................................................................. 256
5.7
Микро-уровень ................................................................................ 257
11
5.7.1
Версионность и система ссылок ........................................... 258
5.7.2
Общая система типов............................................................. 260
5.7.3
Логика ..................................................................................... 261
5.7.4
Визуальная часть .................................................................... 264
5.7.5
Механизм стилей ................................................................... 266
5.7.6
Динамический компилятор ................................................... 268
5.7.7
Контекст вызова ..................................................................... 269
5.7.8
Модель-представление-контроллер .................................... 270
5.7.9
Инверсия контроля с контейнерами .................................... 271
5.7.10
Понятие приложения ............................................................. 272 Алексей Дубовцев
Tango Операционная система из будущего
6
5.7.11
Отладчик и профилировщик ................................................. 273
5.7.12
Транзакционность.................................................................. 274
5.7.13
Транзакционная память ........................................................ 276
5.7.14
Менеджер памяти ................................................................. 277
5.7.15
Исполняемый язык (Execution Language) ............................. 278
5.7.16
Компилятор времени исполнения ....................................... 279
5.7.17
Уровень абстракции от платформы...................................... 280
5.7.18
Автоматизированные тесты .................................................. 281
5.7.19
Безопасность .......................................................................... 282
Раздел 6 – Реализация ........................................................................... 284 6.1
7
6.1.1
Первая итерация .................................................................... 288
6.1.2
Определение требований ..................................................... 289
6.1.3
Подключение людей ............................................................. 295
6.1.4
Планирование ........................................................................ 295
6.1.5
Реализация ............................................................................. 296
6.1.6
Тестирование ......................................................................... 297
6.1.7
Документирование ................................................................ 299
6.1.8
Ввод в эксплуатацию ............................................................. 300
6.2
Принцип основных контуров .......................................................... 301
6.3
Первый прототип ............................................................................. 304
Раздел 7 – Права и интеллектуальная собственность ......................... 308 7.1
8
Введение .......................................................................................... 285
Права ................................................................................................ 309
Раздел 8 – Заключение .......................................................................... 310
Алексей Дубовцев
12
Tango Операционная система из будущего
0.1 О чем эта книга
1 2 3 13
В первую очередь, эта книга о том, как сделать продукт, полезный для людей. Продукт, который сделает жизнь людей лучше.
Эта книга об операционных системах будущего. Здесь написано о том, как создать принципиально новую операционную систему следующего поколения.
Эта книга о том, как приблизить будущее и сделать его реальным сегодня, а не завтра. И о том, как можно принять участие в этом проекте.
Алексей Дубовцев
Tango Операционная система из будущего
Алексей Дубовцев
14
Tango Операционная система из будущего
0.2 Об авторе Дубовцев Алексей Владимирович Родился в 1983 году в городе СанктПетербурге, в нем и живет сейчас. На момент написания этой книги − 27 лет.
Высшее образование получил в Санкт-Петербургском государственном политехническом университете, специализация − «Теоретическая физика». Начал программировать в 14 лет. В школе писал статьи в журналы «Хакер», «Компьютерра» и т.п. В 9 классе написал интерпретатор языка Pascal, в 10 классе доработал его до компилятора. Член команды создателей http://rsdn.ru. В 21 год написал книгу «Microsoft.NET в подлиннике», изданную в «BHV». Александр Ложечкин, региональный директор MSDN Microsoft в России, написал отзыв на обложку. (ISBN 5-94157-478-9). Опыт международной работы: США, Китай, Сингапур, Арабские Эмираты, Франция, Испания, Англия, Дания, Португалия, Словакия, Бельгия, Голландия, Германия, Италия.
15
Алексей Дубовцев
Tango Операционная система из будущего
Интересные продукты, которые создал: Платформа для интеграции http://microsoft.tv (MediaRoom) в экосистему оператора связи (биллинг, сетевые узлы, системы управления контентом, оповещения, IMS). Торговая платформа, через которую ежедневно проходит 10 % оборота российских бирж (РТС и ММВБ). Система «свой − чужой» для телеком-операторов 4G (AAA сервер TLS, Diameter, x.509 криптография под высокими нагрузками). Моделирование сознания и поведения игроков компьютерных игр http://AsadorStudio.com.
Контакты:
Skype
DaoOrbita
E-mail
[email protected]
ВКонтакте
Facebook
Twitter
Алексей Дубовцев
http://vkontakte.ru/mrorbita
http://facebook.com/mrorbita
http://twitter.com/mrorbita
16
Tango Операционная система из будущего
17
Алексей Дубовцев
Tango Операционная система из будущего
1 Раздел 1 – человечеству
1
Алексей Дубовцев
Послание
к
Послание к человечеству
18
Tango Операционная система из будущего
1.1 Послание к человечеству Эта книга об операционных системах – продукте, которым пользуется более 1 миллиарда людей на планете. Операционные системы давно уже перестали быть просто программами, они гораздо больше, чем программы; они и сети – часть всемирного разума. Значимость операционных систем в жизни человечества сложно переоценить. Они повсюду: в компьютерах, в телефонах, в машинах, в самолетах, в сложной военной технике, в детских игрушках, в спутниках, в поездах, в телевизорах, в стиральных машинах. Они управляют этим миром вместе с нами. Сейчас пришло время посмотреть на мир операционных систем целостно – зрелым взглядом, с учетом всего колоссального опыта, который накопило человечество в этой области. Пришло время реализовать видение планетарной операционной системы, созданной для удовлетворения потребностей человечества, а не для решения отдельных мелких задач.
Информация Планетарная операционная система – система, рассчитанная на использование в масштабах планеты, спроектированная для обслуживания миллиардов абонентов.
Развитие операционных систем нового поколения выведет на новый уровень организацию общества, а как следствие, даст толчок развитию науки, технологий и бизнеса. Нервной системой современного мира является сеть, мозг которой – софт, сеть воздействует на все аспекты жизни людей. Проведем аналогию с биологией: на наших глазах происходит эволюционный скачок, человечество, как единое целое, приобретает единый разум и сознание.
19
Алексей Дубовцев
Tango Операционная система из будущего
1.2 Почему я решил написать эту книгу Меня уже много лет терзает одна мысль, в целом она сводится к довольно простой формулировке: «Все операционные системы, которыми сейчас пользуется человечество, принципиально убоги и крайне неудобны в использовании». Мы используем системы, которые давно устарели, их идеология закладывалась более 15 лет назад. В то время операционная система должна была обслуживать небольшие потребности одного пользователя на одном компьютере. Но мир изменился, теперь компьютеры как таковые не важны, важна сеть; компьютеры – это лишь устройства воспроизведения информации. Акцент давно сместился, а мы все еще пытаемся адаптировать старые системы к новым реалиям. Это все равно что пытаться приделать поезду крылья, чтобы он взлетел, вместо того чтобы строить самолет. Цель книги: я пишу эту книгу потому, что хочу дать людям новый продукт – операционную систему, которая улучшит жизнь многих и многих людей. Систему, которая сделает использование и создание компьютерных программ на порядки более простым, понятным и приятным. Этот проект откроет огромные возможности для людей по всему миру – финансовые, инновационные, коммуникационные, созидательные.
Алексей Дубовцев
20
Tango Операционная система из будущего
Идея создания этой системы пришла мне в голову приблизительно в 2005 году. Тогда я начал систематически заниматься исследованиями в данной области.
Я начал с того, что очень внимательно изучил архитектуру всех наиболее популярных операционных систем (Windows, Linux, MacOs, FreeBsd и т.п.), а также промышленных программных платформ (Java, .NET, Boost, Zend и т.п.). Для того чтобы исследования были не только теоретическими, под каждую из систем я выпускал прикладной проект, которым пользовались люди. Многие из этих систем и сейчас стабильно работают, а главное – приносят пользу людям. Наиболее сложной системой, пожалуй, была торговая платформа, через которую сейчас проходит порядка 10 % оборота российских бирж (РТС и ММВБ). Чем больше я получал информации о внутреннем устройстве существующих операционных систем, тем больше я понимал, что все они очень и очень похожи, и задача построения принципиально новой системы не решается чисто в инженерной плоскости. Я расширил спектр своих исследований, теперь мне пришлось очень внимательно изучить материалы по следующим направлениям: психологии взаимодействия человека и машины, организации человеческих групп, организации бизнес-процессов, социологии, принципам построения глобальных информационных систем, глобальным финансовым системам, общей теории информации и управления, а также многим и многим другим. После того как я изменил подход к изучению вопроса, я смог взглянуть на него совершенного с другого ракурса. Теперь я начал понимать, почему некоторые странные инженерные решения столь успешны, а другие блестящие инженерные инновации никому не нужны.
21
Алексей Дубовцев
Tango Операционная система из будущего
Если говорить кратко, то все дело в человечестве – система должна наиболее полно удовлетворять потребности наибольшего количества людей. Те системы, которые делают это лучше других, выигрывают эволюционную схватку. В современных условиях невозможно навязать неудобную операционную систему силой или другими методами, сколь чудесна она ни была бы сделана внутри с инженерной точки зрения. В этой книге я стараюсь донести стержневую идеологию новой операционной системы. Информацию, которая позволит развить идею до реального воплощения. На текущий момент я считаю, что главное – это идеология и видение, все остальное уже есть в этом мире: талантливые инженеры, деньги, медиа и, в конце концов, люди, которые будут использовать продукт изо дня в день. Те люди, ради которых все должна быть создана система. Если донести идею четко и ясно до людей, то за реализацией дело не постоит. Рано или поздно идея будет реализована. Оказалось, сформулировать идею – крайне непростой процесс. А тем более – сформулировать ее понятно. Если быть честным, я переписывал книгу три раза. Тот вариант, который вы сейчас читаете, – третий. Сложность вопроса заключается в противоречивости: с одной стороны, нужно четко и ясно объяснить каждому человеку, чем будет лучше и удобней эта система, с другой – необходимо в деталях описать устройство сложнейшей инженерной системы, причем сделать это нужно в одной книжке. Я старался написать книгу таким образом, чтобы любой человек смог понять основную идею и принципы. Идея должна быть проста. К сожалению, ради простоты пришлось пожертвовать строгим инженерноакадемическим подходом описания систем. Цель – сделать общедоступную книгу, а не техническую спецификацию.
Алексей Дубовцев
22
Tango Операционная система из будущего
1.3 Формат книги – «хотелки» Общепринятым форматом описания информационных систем во всем мире является стандарт RFC 2119 (http://tools.ietf.org/html/rfc2119). Этот документ рекомендует описывать информационные системы в виде требований. Каждое требование записывается в следующей форме: «При нажатии на кнопку А должно открыться окно Б». Описание системы сводится к «бесконечному» списку: должен – не должен; может – не может. К сожалению, такой формат приемлем только для инженеров, а для широкого круга читателей абсолютно не подходит. Я старался подобрать формат, который, с одной стороны, будет понятен любому, а с другой – сохранит инженерный подход. В итоге я пришел к выводу, что наиболее подходящим форматом будет описание системы в следующем виде: хочу – не хочу. Требования описаны понятным человеческим языком от лица пользователя системы так, как будто он высказывает свои пожелания о том, как должна работать система.
Пример «Хотелка» 1 Я хочу, чтобы любой из моих файлов был доступен с любого устройства в этом мире. «Хотелка» 2 Я не хочу, чтобы посторонние люди читали мои файлы без моего ведома.
С одной стороны, такой подход довольно наивен и не позволяет оценить глубины многих внутренних технических решений, но с другой – всегда важнее сам пользователь. А его в большинстве случаев не волнует то, как задача решена внутри, его волнует результат, который он видит. 23
Алексей Дубовцев
Tango Операционная система из будущего
Описание всех «хотелок» должно сформировать у читателя образ новой операционной системы. Он сможет представить себе, как она будет работать, в чем будут заключаться основные принципы использования системы. Если читатель – талантливый программист, он сможет сесть и закодировать такую систему. Информации для этого в книге вполне достаточно. Естественно, что многие детали я не упоминаю в этой книге, а некоторые намеренно упускаю. Но я готов их с радостью обсудить здесь: http://ostango.com/community/discussion.
Алексей Дубовцев
24
Tango Операционная система из будущего
1.3.1
Наиболее важные группы пользователей
Группы пользователей
Я выделил наиболее важные группы пользователей операционной системы:
1. 2. 3. 4. 5. 6. 7. 8. 9.
Обычный рядовой пользователь. Владелец предприятия. Владелец дата-центра. Владелец приложения. Разработчик приложения. Верстальщик. Администратор приложения. Инвестор в приложения. Создатель приложения.
Такая классификация довольно проста и понятна, и в то же время она позволяет взглянуть на систему глазами самых важных групп людей, которые являются наиболее активными пользователями системы. От удовлетворения потребностей этих людей напрямую зависит ее успех. Для каждого из них в разделе 2 – «Видение системы» – описаны «хотелки», то есть требования, которым должна удовлетворять система, с точки зрения этих людей.
25
Алексей Дубовцев
Tango Операционная система из будущего
Оригинальная классификация
Чтобы эта модель не казалась сильно упрощенной, классификацию, которую я использовал в ходе исследований:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
приведу
Домашние пользователи. Разработчики. Владельцы и создатели видеоконтента. Рекламодатели. Создатели игр. Игроки. Издатели (книги, статьи, журналы). Торговцы. Студенты. Заказчики на разработку ПО. Владельцы предприятий. Директора предприятий и менеджеры. Администраторы предприятий. Работники предприятий. Владельцы и создатели музыки. Свободные наемники, фрилансеры. Правительственные заказчики. Военные заказчики. Мобильные пользователи. Создатели взрослого контента.
Для того чтобы не загромождать книгу, я упростил этот список до более короткой версии. Принцип, по которому я исследовал каждого пользователя и выделял для него важные требования, был следующим: я выписывал то, что является для каждого типа пользователей удобным и выгодным, а что больше всего затрудняет его работу. Далее я усиливал выгодные стороны и улучшал затрудняющие моменты – все просто.
Алексей Дубовцев
26
Tango Операционная система из будущего
Приведу пример. У вас есть файл, вы хотите, чтобы файл увидела ваша подруга Александра.
Текущая модель
Текущая модель:
1. 2. 3. 4. 5. 6. 7. 8. 9.
Открыть браузер. Ввести логин и пароль для входа в почту. Нажать «Создать письмо». Вспомнить e-mail Александры. Написать заголовок письма. Нажать «Прикрепить файл». Найти файл на диске. Написать текст письма. Нажать «Отправить».
Модель Танго
Улучшенная модель Танго:
1. 2. 3. 4.
Найти файл в моих файлах. Нажать «Сделать доступным для …». Выбрать Александру из списка друзей. Нажать «Ок».
Очевидно, что модель Танго более удобна: меньше действий, меньше затруднительных моментов. Чем меньше действий нужно сделать пользователю, чем с меньшим количеством сложностей он столкнется, тем лучше и удобнее будет система.
27
Алексей Дубовцев
Tango Операционная система из будущего
1.4 Формат книги – реализация Идея без воплощения представляет собой лишь академический интерес, для меня же важно создать реально работающий продукт. Недостаточно просто описать «хотелки», необходимо создать систему, которая удовлетворяет всем этим «хотелкам». С одной стороны, реализация системы – это всего лишь написание исходного текста на языке программирования, который затем нужно заставить заработать в виде программы. И если предположить, что в этом тексте будет, например, 10 миллионов строк, то можно дать 1 миллиону программистов написать по 10 строк, и дело в шляпе. Однако в реальной жизни это, к сожалению или к счастью, не работает. Создание подобной системы – это сложнейший процесс, включающий координацию и согласование действий огромного количества профессионалов. Для того чтобы быстро создать систему, нужно вовлечь много разноплановых специалистов, а следовательно, нужно их организовать так, чтобы они сплоченно шли к единому результату. В разделе 3 – «Организация» – я описываю то, как я вижу организацию процесса создания системы, в котором люди (инженеры, программисты, дизайнеры, художники, верстальщики, менеджеры) смогли бы раскрыть весь свой талант и потенциал, для того чтобы претворить систему в жизнь. Я стараюсь придерживаться четких и простых рекомендаций по организации процесса. Я верю в то, что если хочешь достигнуть результата, то указания к действию должны быть максимально конкретными, без употребления абстрактных терминов. Необходимы четкие и ясные цели, а также понятные шаги по их достижению.
Алексей Дубовцев
28
Tango Операционная система из будущего
1.5 Формат книги – архитектура Иметь четкое видение идеи и план по ее реализации – это хорошо, но недостаточно для воплощения продукта в материальное изделие. Приведу наглядный пример. Однажды я смогу сказать, что все существующие системы связи принципиально убоги, потому что используют среду для передачи данных: металлическую (провода), оптическую (оптоволокно, воздух) или пространство (электромагнитные волны). Давно уже пора делать торсионную связь, основанную на принципе свертки многомерных пространств, когда можно из одной точки нашего пространства передать сигнал в другую через измерения, в которых путь между этими точками минимален, и делать это с совершенно незначительными энергетическими затратами. Представляете, как здорово: не нужно строить никаких приемников-передатчиков, не нужно прокладывать кабели. У вас просто будет устройство, которое сможет связываться с другим таким же в любой точке нашей метагалактики. Идея превосходна. Скажем, для того чтобы ее реализовать, нужно 50 тысяч физиков и математиков, их нужно организовать в рабочие группы и институты. Предположим, что мы нашли необходимое финансирование, наняли всех физиков и математиков и установили срок в 3 года. Вопрос в том, что делать дальше. Для того чтобы создать подобный продукт, необходимо существование базовой технологии. А ее-то как раз и нет. Непонятно, чем заниматься, даже приблизительно, как построить первый прототип. Создание операционной системы – это скорее инженерный проект, а не исследовательский, для его реализации технологии уже готовы. Необходим лишь четкий проект – описание технологии – архитектура системы. Архитектура – это набор технических спецификаций, отталкиваясь от которых, можно писать код программы.
29
Алексей Дубовцев
Tango Операционная система из будущего
Аналогия Можно привести аналогию со строительством домов: если вы хотите построить дом, то нужно придумать его место расположения, сколько этажей в нем должно быть, какова конфигурация комнат, какая будет высота потолков. Затем необходимо организовать команду, которая будет воплощать этот проект. Команда разработает архитектуру и передаст ее на реализацию строителям. Строители, используя спецификации из архитектуры, построят дом. Схема, конечно, крайне упрощенная, но дает общее представление о процессе создания сложного инженерного объекта. То же самое справедливо и для создания операционной системы.
Создание операционной системы очень сильно зависит от программистов: если в проектной команде не будет талантливых программистов, то не будет и системы. Но, с другой стороны, если талантливые программисты не будут знать, какой код им писать, то системы тоже не будет. Для этого и существует архитектура, она дает общее представление об устройстве системы. В отличие от строительства домов, где вся проектная документация подготавливается на первом этапе и затем используется строителями, в индустрии программного обеспечения чаще всего это не работает. Не берусь точно судить о причинах данного явления, но, скорее всего, это связано со сложностью процесса и постоянно меняющимися условиями среды. Первоначальный архитектурный проект чаще всего к релизу программы претерпевает довольно серьезные изменения. Архитектура программы – это не четкое, детальное, пошаговое руководство по реализации, а скорее техническое видение системы, которое позволяет создать в голове у программистов образ полного ее устройства.
Алексей Дубовцев
30
Tango Операционная система из будущего
Архитектура. Уровни
Архитектуру системы я разделил на три основных уровня:
1. 2. 3.
Глобальный уровень. Макроуровень. Микроуровень.
Такой подход позволяет разделить вопросы, которые должны рассматриваться разными специалистами, и при этом одновременно держать всю информацию в рамках одного архитектурного проекта. Такой подход позволяет повысить качество интеграции компонентов системы.
31
Алексей Дубовцев
Tango Операционная система из будущего
Например, вопросы масштабирования приложений в рамках планеты должны рассматриваться на уровне глобальной архитектуры. Глобальная архитектура должна определять основные потребности в масштабировании и паттерны, которые используются для удовлетворения этих потребностей. На их основании должны вноситься необходимые изменения в макро- и микроархитектуру. Изменения подразумевают создание дополнительных API (программные интерфейсы), необходимых для реализации глобальных паттернов. Если архитектура согласована, то конечному разработчику будет понятно, для чего необходимы те или иные программные интерфейсы, он сможет найти объяснение в глобальной архитектуре. Если же рассматривать уровни в отрыве друг от друга, то многие элементы в микроархитектуре будут казаться абсолютно бессмысленными, и программисты не будут понимать, зачем они нужны, а как следствие, обязательно снизится качество продукта – такова реальность. Программист не должен быть тупым кодером, просто набивающим текст программы, он должен осознавать, что и для чего он делает. Такой подход всегда повышает качество конечного продукта.
Алексей Дубовцев
32
Tango Операционная система из будущего
1.5.1
Глобальный уровень архитектуры
Глобальный уровень архитектуры описывает паттерны, относящиеся к построению планетарных приложений. Примерами подобных приложений могут служить ВКонтакте, Яндекс, Facebook, Google, Bing, Yahoo, EBay, Amazon и т.д.
Глобальный уровень архитектуры позволяет взглянуть на систему с точки зрения планетарной информационной системы, обслуживающей потребности миллиардов людей. Целью глобального уровня является создание платформы для приложений, позволяющей в секунды и с минимальными издержками разворачивать приложения, которыми будут пользоваться по всей планете.
33
Алексей Дубовцев
Tango Операционная система из будущего
Глобальная архитектура
Как следствие, всплывает огромное необходимо решить в рамках платформы:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
количество
задач,
которые
Распространение приложений. Локализация. Глобализация. Гео-масштабирование. Защита от атак. Резервирование. Идентификация пользователей. Телеметрия. Статистика. Платежная платформа.
Алексей Дубовцев
34
Tango Операционная система из будущего
1.5.2
Макроуровень архитектуры
Макроуровень архитектуры включает в себя все то, что относится к взаимодействию пользователя с системой, а также к архитектуре пользовательских приложений.
Задачей макроархитектуры является создание удобной среды для пользователя, максимальная простота использования конечных приложений, минимизация количества действий (кликов), которые должен совершать пользователь при работе с системой. Чем меньше пользователь совершает действий, чтобы добиться результата, тем больше он удовлетворен. С точки зрения создателей приложений, этот уровень должен максимально упрощать их жизнь. Создание программных продуктов должно быть приятным времяпрепровождением, а не постоянной борьбой со сложностями.
35
Алексей Дубовцев
Tango Операционная система из будущего
1.5.3
Микроархитектура
Микроархитектура – это самый нижний уровень архитектуры, определяющий базовые компоненты, низкоуровневые детали, взаимодействие с железом и программными платформами.
На этом уровне должны специфицироваться протоколы и форматы реализации системы, а также рекомендуемые способы их реализации. Именно рекомендуемые, а не обязательные. Система должна, прежде всего, накладывать требования на протоколы, форматы и стандарты, а реализации должны быть взаимозаменяемыми – только это позволит действительно развивать систему усилиями сообщества, усилиями человечества.
Алексей Дубовцев
36
Tango Операционная система из будущего
Приведу пример. В ядре системы есть компонент – менеджер памяти со встроенным сборщиком мусора. Этот компонент управляет выделением памяти для приложений во всей системе. То есть все приложения, все компоненты, все драйверы системы зависят от него. Если этот компонент сделать жестко встроенным в систему, то система всегда будет ограничена производительностью его реализации. Если же можно будет заменить этот компонент на другой, то это открывает большие возможности. Всегда есть люди, которые знают, как улучшить любой компонент, сделать его производительней и быстрее. Такие люди смогут создать суперпроизводительный менеджер памяти, который будет использоваться для развертывания сверхмасштабируемых приложений.
Важно Микроархитектура системы должна быть открытой!
37
Алексей Дубовцев
Tango Операционная система из будущего
1.5.4
Архитектура в жизни
Изучая различные системы, я обнаружил довольно интересное явление. Все три уровня (глобальный, макро- и микроуровень) крайне важны для создания удобной и классной операционной системы. Если хотя бы один из уровней не удовлетворяет потребности людей, то вся система сразу же проваливается. Например, если система не масштабируется, но удобна в использовании и проста с точки зрения программирования, то она не получит распространения. Интересное явление заключается в том, что люди, которые проектируют и создают различные уровни (глобальный, макро- и микроуровень), похоже, живут в параллельных вселенных. Не то чтобы они вовсе не общались между собой, просто у них, скорее всего, совершенно различные цели и способы восприятия мира. Они осознают существование других слоев архитектуры постольку-поскольку. Типичным примером может служить ситуация, когда человек, проектирующий драйвера, понятия не имеет, для чего создаются окна на экране, чего уж там говорить о глобальных сервисах. Эти люди чаще всего абсолютно не понимают друг друга.
Это явление накладывает на компьютерные системы довольно сильный отпечаток. Каждый уровень сам по себе может быть довольно совершенен, но вот взаимодействие между ними чаще всего организовано крайне неоптимально. Именно здесь разбиваются мечты об идеальных системах. Алексей Дубовцев
38
Tango Операционная система из будущего
Именно поэтому крайне важно спроектировать систему от начала до конца, для того чтобы взаимодействие между уровнями было максимально бесшовным, согласованным и простым. Так, чтобы система казалась единой и целостной, а не одеялом, сшитым из хороших лоскутков. Это внесет ясность в структуру системы, не будет непонятных и странных решений. Определенно, это позволит достичь лучшего взаимопонимания между людьми, ответственными за разные уровни системы.
Одни уровни системы не должны выигрывать в ущерб другим. Развитие уровней не должно зависеть от харизмы и личности их создателей. Здесь важно согласие и взаимопонимание между участниками процесса. Важны не уровни – важна система как целое.
39
Алексей Дубовцев
Tango Операционная система из будущего
1.6 Священные войны Для меня важнее всего конструктивно донести полезную идею. А затем воплотить ее в жизнь. Больше всего мне не хотелось бы вступать в полемику на тему превосходства одних систем над другими, а тем более вдаваться в детали – так называемые «священные войны». Именно поэтому я постарался избежать в книге упоминания конкретных технологий, компаний или продуктов.
Если вы заметите, что предлагаемые решения уже где-то реализованы, то, скорее всего, так и есть. Если для вас важна определенная система или технология, то вы можете рассматривать идеи, изложенные здесь, как предложения, которые могли бы развить вашу систему или технологию. Если вы знаете, что в какой-то из существующих систем что-то реализовано гораздо лучше, то предложите, как сделать это для системы Танго.
Алексей Дубовцев
40
Tango Операционная система из будущего
1.7 Формат книги – версия текста В левом верхнем углу обложки есть небольшая надпись «Версия текста vX.X». Люди, которые читают книгу, делятся со мной своими идеями и высказывают мнение о проекте Танго. Сообщество помогает мне развивать идею, она становится более четкой и понятной. По мере развития проекта я буду обновлять книгу и выпускать ее новые версии. Такие изменения отразятся в первой цифре версии, стоящей до точки. Также книга проходит правки, люди обнаруживают в ней неточности и опечатки. Такие изменения отражаются при помощи второй цифры версии, стоящей после точки. Структура версии: «Версия текста v(Смысловые изменения).(Корректура)».
Последняя версия книги Последнюю версию вы можете найти здесь: http://os-tango.com.
41
Алексей Дубовцев
Tango Операционная система из будущего
2 Раздел 2 «Хотелки»
2 Алексей Дубовцев
–
Виденье
системы–
Видение системы. «Хотелки»
42
Tango Операционная система из будущего
2.1 Введение Задача этого раздела – сформировать общее представление о системе у любого человека. Крайне важно, чтобы любой смог понять идеологию системы, она не должна быть тайным знанием только для узкого круга «посвященных». Открытая идеология, понятная всем, так же важна, как и открытая архитектура. Важно, чтобы максимальное количество людей смогли высказывать свои идеи, смогли обсуждать и развивать систему. Чем проще идея, тем проще ее распространить, а следовательно, проще будет развить и внедрить систему.
43
Алексей Дубовцев
Tango Операционная система из будущего
2.2 «Хотелки» Кратко перечислим «хотелки» для каждого типа пользователей.
2.2.1 1.
Обычный пользователь
2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Обычный пользователь
Хочу, чтобы мои данные были доступны мне всегда и везде с любого устройства. Хочу, чтобы социальный сервис был частью системы. Хочу иметь простой механизм обучения, поддержки и помощи. Хочу иметь множество дешевых лицензионных приложений. Хочу, чтобы файлы всегда открывались. Хочу делиться своими файлами с друзьями. Хочу отправлять сообщения друзьям напрямую. Хочу отправлять и получать мгновенные сообщения на любом устройстве, хранить их историю. Хочу, чтобы мои контакты были едины везде и всегда. Хочу иметь единый и простой поиск моих данных. Хочу, чтобы поиск в интернете основывался на рекомендациях людей. Хочу иметь единую систему сообщений и почты. Хочу иметь единую платежную систему. Хочу иметь единую систему обучающих видео. Хочу иметь голосовое и видеообщение быстро и просто. Хочу открывать все свои старые файлы. Хочу создавать документы совместно с моими друзьями. Хочу, чтобы все приложения были доступны по ссылке. Хочу, чтобы любые документы и файлы были доступны по ссылке. Хочу иметь возможность отзывать обратно и редактировать посланные сообщения.
Алексей Дубовцев
44
Обычный пользователь
Tango Операционная система из будущего
45
21. Хочу, чтобы мои файлы всегда были целы, даже если компьютер уничтожен. 22. Хочу иметь единый каталог приложений. 23. Хочу иметь возможность работать с системой автономно, без использования сети. 24. Хочу иметь общую единую систему уведомлений. 25. Хочу всегда знать, какие файлы к чему относятся и чем занято у меня место. 26. Хочу, чтобы установка Танго была всегда простой и максимально быстрой. 27. Хочу, чтобы операционная система работала всегда стабильно и ее не нужно было переустанавливать. 28. Хочу, чтобы была возможность удаленно дать доступ к своему экрану любому из своих друзей. 29. Хочу иметь простой механизм публикации и доставки видеоконтента. 30. Хочу иметь понятную систему сообщений об ошибках. 31. Хочу, чтобы Танго умела работать на компьютере без жесткого диска.
Алексей Дубовцев
Tango Операционная система из будущего
2.2.2
Безопасность и надежность
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Безопасность и надежность
Хочу, чтобы мои данные всегда были надежно защищены. Хочу защищать свои данные при помощи SMS. Хочу защищать свои данные при помощи живого звонка. Хочу защищать свои данные при помощи электронного брелока. Я параноик, хочу защищать свои данные очень сильно. Хочу, чтобы мои данные были защищены на физическом уровне. Хочу, чтобы мои данные хранились на чужих компьютерах минимальное время. Хочу, чтобы приложения без моего ведома не получали доступ к моим данным. Не хочу, чтобы моим аккаунтом завладели чужие люди. Не хочу иметь тысячу паролей, хочу иметь только один. Хочу, чтобы мои данные хранились там, где я этого хочу. Хочу иметь возможность загружать приложения из-под другого логина и пароля. Хочу иметь возможность загружать приложения в режиме инкогнито. Хочу, чтобы операционная система защищала меня от спама. Хочу встроенные механизмы контроля трафика и анти-DDoS. Хочу иметь возможность установить систему в закрытом варианте и без связи с внешним миром.
Алексей Дубовцев
46
Tango Операционная система из будущего
Владелец дата-центра
2.2.3
47
1. 2.
Владелец дата-центра
Хочу купить компьютеры, поставить на них софт и моментально получать с них прибыль. Хочу иметь единую точку управления моим дата-центром.
Алексей Дубовцев
Tango Операционная система из будущего
2.2.4
1. 2. 3. 4. 5.
Программист
6. 7. 8. 9. 10. 11.
12. 13. 14. 15. 16. 17.
Разработчик приложений
Хочу, чтобы один и тот же код запускался на всех платформах. Хочу, чтобы порог входа для программистов был максимально низким. Хочу проектировать приложение визуально. Хочу, чтобы все форматы и протоколы были открытыми и текстовыми. Хочу сохранять свои данные в базе данных просто и сразу, без сложных движков. Не хочу использовать сложные языки и сервера для управления базами данных. Хочу писать логику на том языке, который мне нравится. Хочу иметь одни и те же инструменты на все случаи для работы с кодом. Хочу иметь универсальные инструменты разработки на все случаи жизни. Хочу, чтобы мой код всегда исполнялся корректно, вне зависимости от изменений в зависимых библиотеках. Хочу разрабатывать приложения один раз для OSTango, мобильника, персонального компьютера, Windows, Mac, Linux. Хочу моментально разворачивать приложения в сети. Хочу знать информацию о качестве сервиса дата-центров. Хочу иметь четкую и логичную систему версионности во всем. Хочу иметь простую систему создания и лицензирования компонентов. Хочу иметь единый каталог компонентов. Хочу писать социальные комментарии прямо в коде.
Алексей Дубовцев
48
Программист
Tango Операционная система из будущего
49
18. Хочу иметь единую систему управления проектами и исходным кодом. 19. Хочу иметь визуальные инструменты для всего. 20. Хочу иметь единую систему идентификации пользователей, логина. 21. Хочу иметь единую систему удаленного вызова объектов. 22. Хочу иметь общую систему телеметрии и логов. 23. Хочу иметь совместимость со старым кодом и старыми компонентами. 24. Хочу защищать свою интеллектуальную собственность. 25. Хочу, чтобы любой компонент системы можно было заменить на другой. 26. Хочу, чтобы в операционную систему была встроена поддержка транзакций. 27. Хочу, чтобы профайлер и отладчик работали удаленно. 28. Хочу иметь встроенный сервер конфигураций. 29. Хочу иметь встроенную поддержку P2P для хранения файлов и передачи потоков. 30. Хочу иметь возможность интегрировать одно приложение в другое в один клик.
Алексей Дубовцев
Tango Операционная система из будущего
Верстальщик
2.2.5
1. 2. 3. 4.
Верстальщик
Хочу делать приложения только один раз для всех платформ. Хочу расширять модель верстки новыми компонентами. Хочу писать логику для клиентских приложений на своем любимом языке. Хочу использовать сложные каскадные таблицы стилей.
Алексей Дубовцев
50
Tango Операционная система из будущего
2.2.6
Владелец предприятия
Владелец предприятия
1.
51
Хочу концентрироваться на корпоративных сервисах, а не на инфраструктуре. 2. Хочу подключать пользователей к моей инфраструктуре в один клик. 3. Хочу создавать рабочие группы для сотрудников предприятия. 4. Хочу разворачивать приложение по всему предприятию централизованно. 5. Хочу обновлять приложения автоматически. 6. Хочу, чтобы все документы, которые создают сотрудники в рамках компании, были всегда доступны и никогда не терялись. 7. Хочу хранить данные предприятия на собственных серверах. 8. Хочу полностью изолировать систему от внешнего мира. 9. Хочу иметь единый поиск по данным предприятия. 10. Хочу иметь возможность быстро организовывать отделы, группы, проектные команды.
Алексей Дубовцев
Tango Операционная система из будущего
2.2.7 1. 2. 3.
Администратор
4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Администратор
Хочу обновлять мои приложения просто, быстро и глобально. Хочу, чтобы данные моего приложения всегда были продублированы и надежно сохранены. Хочу иметь возможность публиковать свои приложения не через общий каталог. Хочу пецифические приложения для узкого круга людей. Хочу иметь встроенные механизмы масштабирования приложений. Хочу иметь встроенный механизм резервирования приложений от сбоев. Хочу, чтобы механизмы масштабирования и резервирования работали не привязанно к одному дата-центру. Хочу, чтобы веб-приложение на моем старом домене попрежнему продолжало работать. Хочу иметь возможность удаленно подключаться к компьютеру и управлять им. Хочу иметь встроенные механизмы масштабирования. Хочу иметь встроенные механизмы резервирования. Хочу, чтобы механизмы масштабирования и резервирования работали не привязанно к дата-центру. Хочу выстраивать приложения в рабочие цепочки.
Алексей Дубовцев
52
Tango Операционная система из будущего
Разработчик компонентов для приложений
2.2.8
53
1. 2. 3.
Разработчик компонентов для приложений
Хочу иметь простую систему публикации компонентов. Хочу отслеживать, какие приложения используют мой компонент. Хочу иметь прозрачную систему лицензирования и монетизации моего компонента.
Алексей Дубовцев
Tango Операционная система из будущего
Инвестор в приложения
2.2.9
1. 2. 3.
Инвестор в приложения
Хочу четко и просто определять, в кого мне вкладывать. Хочу преумножить свои инвестиции. Хочу модель акций.
Алексей Дубовцев
54
Tango Операционная система из будущего
2.2.10 1.
Создатель приложения
2.
3. 4. 5. 6. 7. 8.
55
Создатель приложения
Хочу просто и быстро находить инвестора для моих приложений. Хочу, чтобы процесс инвестирования был прост и зависел не от личных связей, а от того, насколько классно мое приложение. Хочу иметь полную информацию о пользователях моих приложений. Хочу иметь единую систему публикации: публикация, продажа и защита в один клик. Хочу иметь единую и простую рекламную платформу. Хочу иметь простую и удобную систему распространения приложений. Хочу иметь простую и удобную систему получения денег за мои приложения. Хочу иметь простую и удобную систему лицензирования приложений.
Алексей Дубовцев
Tango Операционная система из будущего
2.3 Обычный пользователь Пользователь – это центр вселенной, все делается ради людей. Больше всех в конечном итоге должны выиграть именно они, им должно быть доступно больше качественных сервисов и приложений. Система должна быть для них проще, дружелюбнее и надежнее. Если какая-то часть системы осложняет жизнь пользователю, то проблема именно в ней. Пользователь должен быть удовлетворен. Система ради системы не нужна миру. Операционная система – это продукт, с которым человек сталкивается очень часто; ошибки, затруднения и сбои очень сильно влияют на его жизнь. Классический пользователь системы – это «моя мама». Ей должно быть просто и удобно пользоваться Танго, она не должна задумываться о сложных премудростях.
Алексей Дубовцев
56
Tango Операционная система из будущего
2.3.1
Хочу, чтобы мои данные были доступны мне всегда и везде с любого устройства
Я помню, как ждал того момента, когда родители купят мне мой первый компьютер. Долгое время мне приходилось допоздна проводить время в компьютерном классе в школе, потому что компьютер был только там. В те времена компьютер был очень дорогой игрушкой, и моим родителям пришлось копить на него, прежде чем они смогли его купить. Сейчас у каждого в нашей семье есть личный компьютер. У меня самого несколько компьютеров, на работе еще несколько. Когда я прихожу на переговоры, зачастую люди приходят с ноутбуками. И с каждым днем их становиться все больше. Я думаю, что настало время разделить представления о компьютере и информации. Информация должна находиться в сети, а компьютер – это лишь устройство для ее воспроизведения. Было бы здорово, чтобы, подойдя к любому компьютеру, вы набрали свой логин и пароль и сразу же увидели свой рабочий стол со своими приложениями, со своими файлами и, конечно же, со своими настройками. Я хочу дома работать над документом, таблицей или чем бы то ни было еще, сохранить полученный файл. А затем прийти на работу, войти в систему и открыть именно тот файл, который я делал дома. Сейчас я могу делать это, используя приложения «Google docs», но я хочу, чтобы это было свойством системы и было прозрачно для приложений, чтобы это работало всегда, а не для отдельно взятого сервиса.
57
Алексей Дубовцев
Tango Операционная система из будущего
Я хочу, чтобы мои файлы были доступны с любого устройства, с любой платформы. Я хочу войти в систему с моего мобильника и видеть там свои файлы, хочу иметь возможность открыть их и использовать. Файловая система должна быть проста и понятна. Когда я открываю мой компьютер, я не хочу там видеть диск С, диск D, диск Е; что мне это дает как пользователю? Я хочу иметь единую файловую систему. Простую папку, которую я смогу видеть с любого компьютера. Конечно, я хочу иметь возможность самостоятельно управлять физическим месторасположением своих файлов. Я хочу щелкнуть на папку и выбрать местоположение – хранить в сети. Сразу же после этого папка должна стать доступной с других компьютеров, и все изменения должны автоматически синхронизироваться. Если же я захочу хранить ее локально, я просто выберу местоположение – хранить на локальном диске.
Алексей Дубовцев
58
Tango Операционная система из будущего
2.3.2
Хочу, чтобы социальный сервис был частью операционной системы
Польза и удобство социальных сервисов очевидны. Они дают людям возможность общаться без ограничений. С их появлением интернет перестал быть виртуальной реальностью для кучи странноватых парней, социальные сети превратили его в средство коммуникации для всех нас. Это средство коммуникации нового поколения, о котором еще недавно писатели-фантасты только мечтали. Это действительно здорово, когда я в два клика мышки могу найти любого человека на планете, отправить ему сообщение, фотографию или послание. Но совсем не здорово, что я не могу так же просто поделиться с ним любым своим файлом. Я вижу социальный сервис частью операционной системы. Операционная система управляет информацией, с которой работает пользователь: системы, файлы, видео, таблицы, проекты, программы и все остальное. Для операционной системы это всего лишь объекты. Если социальный сервис будет частью операционный системы, то все эти объекты можно будет с легкостью использовать совместно с любыми пользователями социальной сети. Сейчас, когда я пишу книгу, я вынужден использовать много файлов с текстами, таблицами, графиками, заметками. Было бы здорово создать группу в социальной сети, пригласить туда моих друзей и сделать для них доступными все эти файлы, чтобы они могли редактировать их совместно со мной.
59
Алексей Дубовцев
Tango Операционная система из будущего
Я хочу кликнуть на файл или папку и выбрать пункт «Сделать доступным для моих друзей». Этот пункт позволяет мне передавать файлы в два клика любому человеку. А не через почту, как сейчас. Прикрепленные файлы – это жутко неудобно: их нужно скачивать, нужно следить за версиями, обновлять их, пересылать заново. Я хочу, чтобы файл стал доступным для людей. Это должно быть просто, в два клика. Раз, два – и все. И никакой головной боли. Социальный сервис должен быть точкой хранения всех моих друзей, всех моих контактов. Когда я открываю свой мобильник, на нем должна быть запущена такая же система, в нем должны быть те же самые контакты. На любом устройстве, вводя свои логин и пароль, я должен мгновенно получать доступ к моим контактам. Я бы хотел обмениваться сообщениями только через этот сервис. Сейчас на моем компьютере установлено 5 программ для обмена мгновенными сообщениями; я использую 5 разных почтовых систем, 4 социальных сети и еще пару специализированных систем для обмена сообщениями. Это ненормально. Я хочу иметь базовый сервис, встроенный в операционную систему. Конечно же, сервис должен поддерживать механизм графических тем и дополнительных расширений, но при этом система сообщений должна оставаться единой.
Алексей Дубовцев
60
Tango Операционная система из будущего
Я хочу видеть своих «друзей» на моем рабочем столе. Я хочу положить на рабочий стол ярлыки «своих любимых друзей», чтобы иметь к ним мгновенный доступ. Я хочу положить на рабочий стол своей мамы ярлык «себя», чтобы она смогла в любое время кликнуть на меня и мгновенно со мной связаться. При перетаскивании ярлыка одного из друзей на любого «человека» система автоматически должна знакомить их друг с другом. Социальный сервис должен быть частью рабочего стола, частью системы – система должна быть социальна во всех проявлениях. Крайне важно, чтобы система предоставляла приложениям открытый стандарт для использования социальных функций. Каждое приложение должно быть социально, для людей уже давно пришло время взаимодействовать друг с другом гораздо более активно.
61
Алексей Дубовцев
Tango Операционная система из будущего
2.3.3
Хочу иметь простой механизм обучения, поддержки и помощи
Современные компьютерные системы очень сложны. Пожалуй, невероятно сложны! Даже не смотря на то, что с каждым днем системы становятся дружелюбнее и проще, понять, как ими пользоваться, порой бывает жутко сложно. Зачастую пользователь остается со своим вопросом один на один, не имея простого механизма, чтобы найти ответ на него. А еще чаще бывает так, что пользователь даже не знает, как сформулировать свой вопрос. Поиск ответа на него становится сложнейшей задачей. Я хочу, чтобы пользователя отделял от ответа на вопрос всего один клик. Microsoft ввела в офисных системах помощника – героя в углу, который пытался ответить на вопросы пользователя. Штука прикольная, но абсолютно бесполезная. Но идея сама по себе блестящая. Вот было бы здорово наделить его интеллектом, чтобы он действительно тебя понимал и помогал тебе. Ответ очевиден, давайте посадим с обратной стороны настоящего человека, который будет помогать. Люди любят помогать друг другу, огромное количество людей вокруг готово помочь и ответить на любые ваши вопросы. Ярким примером является сайт http://Stackoverflow.com, где люди помогают друг другу, отвечая на сложные вопросы в области программирования. Необходимо лишь правильно создать механизм, который бы позволял сообществу помогать пользователям.
Алексей Дубовцев
62
Tango Операционная система из будущего
Я вижу себе его следующим образом:
1.
Получение помощи
2.
3. 4.
5. 6.
Пользователь нажимает на заметную всегда кнопку «Получить помощь». Появляется окно, где ему предлагается: 2.1. Дождаться соединения с реальным человеком. 2.2. Ввести свой вопрос текстом. 2.3. Приложить снимок экрана (по желанию). Вопрос пользователя мгновенно попадает на открытый сайт, где его видят люди, которые готовы помогать. Они видят этот вопрос и присылают ему в ответ 20-секундный видеоролик, который показывает, как этому пользователю решить свою проблему. Ролик сохраняется на сайте, чтобы удобнее было показывать его в будущем другим пользователям. После просмотра ролика пользователь оценивает его (плюс или минус), и этот балл засчитывается помощнику.
Безусловно, здесь описан лишь принцип, а не полный механизм в деталях. Основная идея заключается в том, чтобы люди помогали друг другу, а система предоставляла для этого удобный механизм. Односторонний механизм связи в виде роликов, с одной стороны, должен упросить процесс получения помощи пользователем, с другой – он позволит избежать действий «злодеев», которые, воспользовавшись неграмотностью пользователей, захотят использовать их в своих целях. Система помощи, безусловно, должна быть открытой, вся информация, проходящая через нее, должна постоянно сохраняться и быть доступной людям. С каждым днем будет накапливаться все больше и больше знаний и опыта, сообщество будет самостоятельно развивать себя.
63
Алексей Дубовцев
Tango Операционная система из будущего
2.3.4
Хочу иметь множество дешевых лицензионных приложений
С каждым днем всем нам (обычным пользователям, владельцам компаний и их сотрудникам, государственным служащим, школьникам, студентам, преподавателям, даже домохозяйкам) нужно все больше и больше приложений. Все хотят, чтобы программное обеспечение было если не бесплатным, то, по крайней мере, очень дешевым. Также ни для кого не секрет, что большая часть программного обеспечения используется нелегально. Это, с одной стороны, компенсирует высокие цены на него, а с другой – замедляет рост и развитие рынка программных продуктов. Очень рискованно вкладывать деньги в производство качественного программного продукта, зная, что систему защиты создать все равно не получится (взломают в любом случае), а в итоге пользователи не заплатят за продукт. Система должна иметь единый каталог программных продуктов, которые были бы доступны пользователям за несколько долларов. Каталог должен, с одной стороны, предоставлять пользователям доступ ко всем программам, с другой – контролировать доставку и оплату приложений. Этот механизм наполнит систему приложениями, он будет выгоден как пользователям, так и создателям. Пользователи получат дешевые приложения, а создатели получат стабильный денежный поток. Цены в таком каталоге не будут завышаться – это не позволит сделать конкуренция. «Невидимая рука рынка» Адама Смита.
Алексей Дубовцев
64
Tango Операционная система из будущего
2.3.5
Хочу, чтобы файлы всегда открывались
Бывают такие ситуации, когда получаешь файл от кого-нибудь, а он ничем не открывается. Ненавижу такие ситуации, нужно лезть в сеть, искать программу, которая сможет открыть файл, обычно, конечно, она находится. Но что делать моей маме – она-то, скорее всего, не сможет найти нужную программу и, как следствие, не сможет открыть файл. На мой взгляд, каждый файл должен содержать информацию о том, какой программой он создан, и содержать внутри себя ссылку на нее. А поскольку в новой операционной системе все приложения будут доступны по ссылке, то любой файл всегда можно будет открыть. При щелчке на файл всегда будет открываться приложение; пользователь не должен видеть «окошко беспомощности» – «невозможно открыть файл». Если же приложение может открывать файлы других приложений, например, OpenOfficeText хочет открывать файлы MicrosoftWord, то это приложение должно сообщить операционной системе, что может открывать файлы другого приложения. То есть OpenOfficeText сообщает операционный системе: «А я еще умею открывать файлы MicrosoftWord». Разумеется, происходит это во время установки приложения. И когда пользователь установит себе OpenOffice, то файлы, предназначенные для Word, сможет открывать OpenOffice. К тому же, можно будет отказаться от практики использования файловых расширений для определения программ. Можно будет просто называть файлы своими именами. Теперь не нужно будет называть файл «Важный документ.doc», можно будет просто назвать его «Важный документ».
65
Алексей Дубовцев
Tango Операционная система из будущего
2.3.6
Хочу быстро находить нужные мне приложения и моментально начинать их использовать
Приложений миллионы, и их становится все больше и больше. У каждого приложения есть свой сайт в интернете, каждый сайт имеет собственную структуру и организацию. Даже специалисты порой удивляются, что в их области есть классные приложения, которые облегчают работу и о которых они даже не подозревали. Чего уж говорить об обычных пользователях, для них найти приложение – это все равно что отыскать звезду во Вселенной.
Поиск приложений в каталоге
Система должна содержать каталог приложений, он должен быть всегда под рукой и доступен в один клик. В этом каталоге должна быть возможность поиска по различным параметрам:
1. 2. 3. 4. 5.
Поиск по названию: «Супер текстовый редактор». Поиск по тегам: «Редактор», «фотографии», «восстановление». Поиск по категориям: Редакторы -> Дизайн -> 3d-моделирование. По друзьям, людям: Какими программами пользуется крутой хакер Вася. По рекомендации: Система сама должна предложить мне программу на основе моих предпочтений.
Алексей Дубовцев
66
Tango Операционная система из будущего
Эффективность системы поиска можно очень просто оценить по примеру телефонного разговора о том, как найти приложение.
Хороший пример – Привет, мама. – Привет. – Заходишь в каталог приложений, вводишь в поиске «Карты Марса», кликаешь на него и начинаешь смотреть их. – Отлично, я вижу Марс.
Плохой пример – Привет, мама. – Привет. – Тебе нужно ввести в строке браузера http://bestmarsmaps.com. Там тебе нужно найти раздел «скачивание», затем выбрать пункт «бесплатный вариант», скачать его, не забудь сохранить файл на рабочем столе. Потом распакуй архив, запусти инсталлятор. Когда спросит, какой тип инсталляции ты хочешь, выбирай полный и не забудь поставить галку «Добавить в меню Start». Когда дождешься установки, на всякий случай перезапусти компьютер, потом зайди в меню Start, найди приложение и запусти его. Возможно, оно потребует установки дополнительной компоненты Java – это просто, тебе нужно будет зайти на сайт http://sun.com и выбрать там «Установка Java»… – А что ты имел в виду, когда сказал «браузер»?
Можно моментально объяснить любому человеку, как найти приложение. Миллионы сэкономленных человеко-веков и миллиарды нервных клеток. Больше не будет ситуаций, когда нужно искать сайт, потом на нем – страничку, после этого скачивать и устанавливать приложение и дополнительные сервисы. Все приложения всегда будут доступны в один клик. Каждое приложение в каталоге должно иметь персональную страничку, на которой его пользователи смогут общаться, оставлять сообщения, выкладывать видео и фотографии, узнавать, кто еще использует приложение. Социальность должна пронизывать систему на каждом шагу.
67
Алексей Дубовцев
Tango Операционная система из будущего
2.3.7
Хочу иметь единую платежную систему
С каждым днем все больше и больше услуг и товаров можно приобрести через сеть. Покупая через новый сайт, каждый раз сталкиваешься с новой процедурой оплаты. Каждый раз приходится разбираться с новыми формами и последовательностью ввода информации. Зачастую бывает так, что одной и той же кредиткой на одном сайте заплатить можно, а на другом – нет. Часто бывает так, что сайт с самым лучшим предложением не принимает необходимую форму оплаты. Это сильно затормаживает развитие отрасли электронной коммерции, гораздо сильнее, чем можно было бы себе представить. Я не могу обучить свою маму тому, как платить в сети, один раз: всегда возникают новые вопросы, самостоятельно она не может оплачивать свои покупки в сети. Гораздо удобнее иметь встроенную в операционную систему платежную систему, чтобы все приложения были интегрированы в нее. Каждое приложение использует единое и привычное окно оплаты, где оплачивать покупки можно было бы в один клик. К тому же, платформа должна предоставлять механизмы SMS-подтверждения, что делает транзакции гораздо безопаснее.
Информация Сейчас при оплате кредитной картой пользователь должен ввести номер карты, код CCV2, расположенный на обратной стороне карты, фамилию, имя и дату окончания срока действия карты. Не секрет, что эти данные крадут в огромных количествах и продают в сети. Гораздо надежнее завязать механизм оплаты на код, передающийся на личный мобильный телефон. Этот механизм делает кражу самих платежных реквизитов бессмысленной, ведь без секретного пароля из SMS оплату провести нельзя.
Алексей Дубовцев
68
Tango Операционная система из будущего
Единая платежная система будет поддерживать огромное количество способов ввода и вывода. Необходимо поддерживать всевозможные региональные способы ввода средств: терминалы, SMS, кредитные карты, банковские платежи, купоны. Также важно поддерживать прозрачные способы вывода средств, чтобы любой пользователь смог простым и понятным способом воспользоваться этими средствами. Один раз научившись использовать встроенную платежную систему, пользователь будет с легкостью использовать ее во всех приложениях. Ему не нужно будет каждый раз вводить свои данные, потребуется лишь щелкнуть мышкой для того, чтобы согласиться и подтвердить факт оплаты по SMS. Интегрирование платежной системы в ядро операционной системы, а также упрощение финансовых процедур выведет электронную коммерцию на принципиально новый уровень.
69
Алексей Дубовцев
Tango Операционная система из будущего
2.3.8
Хочу иметь единую систему обучающих
видео Одним из ключевых факторов развития системы является обучение пользователей. Система должна быть не только максимально простой, она еще должна позволять обучать пользователей максимально быстро. Легче всего научиться использовать программу – посмотреть, как это делает профессионал. Обожаю смотреть обучающие видео в интернете. Операционная система должна предоставлять единый сетевой центр помощи, на котором любой человек сможет опубликовать свое обучающее видео. Обучающие видео позволяют кардинально оптимизировать процесс обучения пользователей. Давайте сравним: вам необходимо научить свою подругу Марину использовать функцию отправки почты. Вы можете сесть с ней и начать по шагам обучать ее или же дать ссылку на обучающее видео, чтобы она смогла сама просмотреть его и повторить шаг за шагом. В первом случае потребуется от нескольких минут до нескольких часов, в зависимости от сообразительности девушки. Во втором же случае потребуется всего лишь несколько секунд, чтобы передать ссылку на видео. Вы сможете обучить не только Марину, но еще с десяток подруг за это же время. Сам центр обучающих видео должен быть доступен в один клик из любого места системы. При этом портал должен понимать, из какой части системы вы вошли в него, чтобы предложить вам подходящее на текущий момент видео.
Алексей Дубовцев
70
Tango Операционная система из будущего
2.3.9
Хочу, чтобы все приложения были доступны по ссылке
В сети столько полезных и классных программ. Но, для того чтобы ими воспользоваться, их нужно скачать, потом установить, а уж только затем запустить. Это очень сложно. Я хочу, чтобы приложения были сразу же доступны по ссылке. Чтобы я мог получить ссылку от друга или найти ее в сети, открыть ее и сразу же начать использовать приложения. Никакой установки, никакой настройки, я хочу сразу использовать приложение. Чем больше действий нужно совершить, чтобы установить приложение, тем менее вероятно, что его будут использовать. Это так называемый порог использования. Я заметил, что этот порог имеет кубическую зависимость от количества шагов, необходимых при установке. Если для установки приложения нужен один шаг, то порог условно равен 1, если же шагов 5, то порог равен 125. С каждым шагом у пользователей возникает все больше и больше сомнений и сложностей.
71
Алексей Дубовцев
Tango Операционная система из будущего
2.3.10
Хочу, чтобы любые документы и файлы были доступны по ссылке
Я как пользователь хочу, чтобы все объекты всегда были доступны по ссылке. Объекты – документы, файлы, люди, сообщения, части документов, все-все-все. Например, когда я пишу документ, я хочу послать другу ссылку на раздел из него и хочу, чтобы, когда он открыл ссылку, увидел бы именно ту часть документа. Я хочу, чтобы этот принцип действовал для всех приложений. Это очень удобно: я просто могу опубликовать ссылку или послать ее своим друзьям, чтобы поделиться тем, что есть у меня. Сейчас огромное количество программ хранят все данные пользователя на компьютере. Для обычных пользователей крайне сложно сделать эти данные доступными по ссылке. Тем более сложно сделать доступными конкретные части документов или объектов внутри них. Например, если я делаю презентацию, то в принципе невозможно стандартными средствами сделать ссылку на отдельный слайд и послать ее своим друзьям. Данные должны храниться в сети и быть доступными по ссылке. Я не хочу записывать данные на флешку, я не хочу записывать данные на компактдиски, я хочу обмениваться ссылками. Ссылки – это круто. Ссылки кардинально меняют модель распространения и обмена информацией.
Алексей Дубовцев
72
Tango Операционная система из будущего
2.3.11
Хочу иметь голосовое и видеообщение быстро и просто
Я хочу общаться с другими пользователями системы при помощи голоса и видео. Я хочу, чтобы пользователи во всех частях системы имели свои стандартные аватары – небольшие компоненты, которые в один клик делали бы возможным общение с ними он-лайн. Когда в системе в любом месте отображается пользователь – в окне входящих писем, в информации о создателе файла, в логе посещений моей страницы – я хочу просто подвести курсор мыши к аватарке, щелкнуть кнопкой и начать с ним живое видеообщение. Я не хочу долго искать человека в сети. Я хочу, чтобы это было свойством операционной системы. Любой человек должен быть доступен в один клик. Это должно быть настолько естественно и просто, чтобы пользователь даже не задумывался, как ему связаться с другим человеком. Достаточно упомянуть ссылку на человека в документе, и система должна сразу же предоставить возможность связаться с ним. Например, вы пишете в документе «Дубовцев Алексей», операционная система должна сразу понять, что это человек и с ним можно связаться. Она должна показать значок, при нажатии на который, можно было бы сразу позвонить, написать сообщение или отправить файл.
73
Алексей Дубовцев
Tango Операционная система из будущего
2.3.12
Хочу иметь единую систему сообщений и
почты Когда я обнаружил, что у моей мамы три почтовых ящика (два личных и один рабочий), я понял, что что-то не так. У нас всех множество ящиков, аккаунтов в социальных сетях, и их количество растет с каждым днем. Справляться с ними все сложнее и сложнее. Я хочу иметь один единый почтовый интерфейс для личной и корпоративной почты. Новые и старые адреса должны подключаться к единому почтовому ящику, вся переписка должна быть доступна через одно окно. Мне решительно не нравятся прикрепленные файлы в почте. Должна быть возможность давать доступ к любым своим файлам, а также посылать ссылки на них. Сама процедура прикрепления файла к письму должна уйти в прошлое. Есть файл, есть человек, который должен его получить. Я хочу просто щелкнуть на файл, выбрать человека и нажать «Ок». Все!
Алексей Дубовцев
74
Tango Операционная система из будущего
2.3.13
Хочу открывать все свои старые файлы
Я хочу сохранить версию файла на будущее. Я хочу кликнуть по файлу и выбрать «Сохранить версию в архив». После этого я смогу изменить файл, но версия, которая лежит в архиве, всегда будет доступна мне. Я хочу, чтобы была возможность сохранить эту версию в сети. Я хочу делать ссылки на сохраненные версии. Я хочу, чтобы это было свойством самой операционной системы, чтобы это работало для любого файла. Сейчас мне приходится сохранять версии файлов в отдельных папках или использовать сложные системы контроля версий. Как только над одним файлом начинают работать несколько человек, эта возможность становится критически важной. Моментально появляется множество копий одного документа, никто не знает, кто внес последние поправки и какая версия актуальна на текущий момент.
75
Алексей Дубовцев
Tango Операционная система из будущего
2.3.14
Хочу создавать документы совместно с моими друзьями
Я хочу создавать документы и файлы совместно с моими друзьями. Я хочу, чтобы документ, который я в данный момент редактирую, могли открыть мои друзья и видеть те изменения, которые я вношу в данный момент. Я хочу, чтобы этот принцип распространялся на все документы и файлы, я хочу, чтобы этот сервис был частью операционной системы и поддерживался всеми приложениями. Чем больше приложений будут поддерживать этот сервис, тем в больших областях повысится производительность труда. Люди смогут совместно созидать, и для этого им не придется каждый раз встречаться и садиться рядом друг с другом за один стол. Это откроет колоссальные возможности для совместной работы людей из разных частей света, что даст жизнь многим доселе невозможным проектам.
Алексей Дубовцев
76
Tango Операционная система из будущего
2.3.15
Хочу иметь возможность отзывать обратно и редактировать отправленные сообщения
Зачастую бывает так, что в сообщения, которые уже отосланы, хочется внести изменения. Но этого сделать невозможно, и приходится писать новое сообщение и объяснять, что в старом было не так. А еще хуже, когда отослал сообщение и понимаешь, что отослал не тому или его вообще не стоило отсылать, вернуть сообщение нет никакой возможности. Какой-то прямо принцип необратимости. Я хочу, чтобы любое сообщение, которое я отослал, можно было изменить или удалить – это же так просто. Это существенно бы повысило качество коммуникаций. Данная проблема относится не только к сообщениям, но и вообще к любым действиями пользователя. Должна быть возможность отменить любое действие, не должно быть необратимых действий. Пользователь не должен опасаться испортить что-либо, всегда должна быть возможность отката.
77
Алексей Дубовцев
Tango Операционная система из будущего
2.3.16
Хочу иметь общую единую систему уведомлений
Я замечаю, что с каждым днем я получаю все больше и больше сигналов извне. Нет-нет, не из космоса, отнюдь, – это телефонные звонки, SMS, все мои почтовые ящики, приложения, которыми я пользуюсь в сети: социальные сети, твиттер, мгновенные сообщения. За этим всем совершенно невозможно уследить, и только на то, чтобы проверить все места, где может появиться что-нибудь важное, уходит как минимум час. Я хочу, чтобы у меня была единая точка для уведомлений – страница, на которой я бы мог быстро просмотреть, что нового есть для меня. Я хочу иметь персональную ленту новостей, которую я настрою так, как мне будет удобно, и в этой ленте я буду видеть все новости. Этот механизм должен быть открытым, чтобы любое приложение могло вывести туда интересную для меня информацию.
Алексей Дубовцев
78
Tango Операционная система из будущего
2.3.17
Хочу, чтобы установка Танго была всегда простой и максимально быстрой
Новые системы и программы это, конечно, здорово, но мне не хотелось бы снова тратить часы на их установку, настройку и обучение. Большинство людей никогда не воспользуется системой, если нужно будет потратить больше 10 минут на настройку и установку. Пользователь должен начать использовать систему Танго сразу, под какой бы операционной системой он ни работал. Я вижу это следующим образом. Пользователь скачивает небольшой файл, до 100 килобайт, запускает его и сразу же видит рабочий стол Танго. Остальные части системы постепенно скачиваются, возможно, это и займет какое-нибудь время, но пользователю не нужно будет ничего специально делать.
Сервисы, доступные сразу после старта
Как только необходимые части системы будут закачаны, пользователь сразу, без регистрации, может начать использовать основные сервисы:
79
1. Социальные сервисы (поиск друзей). 2. Любые приложения, не требующие авторизации. 3. Регистрацию.
Алексей Дубовцев
Tango Операционная система из будущего
Для того чтобы начать использовать систему полностью, пользователю необходимо будет зарегистрироваться и получить собственные логин и пароль или просто ввести те, которые у него уже есть. После этого пользователю станут доступны абсолютно все сервисы системы. Этот процесс должен работать на всех современных операционных системах: Windows, MacOS, Linux. Таким образом, огромное количество людей сможет начать использовать систему практически мгновенно, не предпринимая никаких сложных действий. Многие пользователи будут еще долгое время одновременно использовать базовую операционную систему и Танго, загруженную поверх нее. Но некоторые из них постепенно перейдут полностью на Танго. Для этого им нужно будет просто сделать себе загрузочный диск или флешку, вставить ее в компьютер, загрузиться, подождать немного и начать использовать систему. Прелесть в том, что все данные пользователя Танго хранятся в сети, и, когда он устанавливает систему на новый компьютер, ему достаточно лишь ввести свои логин и пароль, и данные будут у него под рукой. Никакой головной боли по поводу переноса и синхронизации данных, пользователи должны забыть об этом. Такой подход позволяет воспользоваться системой с любого компьютера. Вам достаточно ввести свои логин и пароль, и данные сразу же доступны вам.
Алексей Дубовцев
80
Tango Операционная система из будущего
2.3.18
Хочу, чтобы операционная система работала всегда стабильно и ее не нужно было переустанавливать
Как было бы ужасно, если бы после открытия тысячи-другой страничек приходилось переустанавливать браузер или полностью операционную систему. Почему же это приходится делать, если установить на компьютер множество приложений? Их никогда невозможно полностью удалить из системы. Всегда что-нибудь остается. Я хочу, чтобы, сколько бы я приложений ни поставил, сама система всегда стабильно работала. Чтобы я мог всегда завершить приложения, чтобы я мог всегда быстро удалить их, не боясь навредить системе, и был уверен, что после их удаления не останется никаких следов от них. Операционная система должна знать, какие изменения приложение вносит в систему и как оно воздействует на систему. Не должно быть ситуаций, когда у операционной системы нет полной информации о том, как удалить приложение из системы. Это также важно с точки зрения безопасности: когда система не контролирует свои приложения, появляется множество червей и вирусов, они делают с системой все что хотят, не спрашивая на то разрешение пользователя.
81
Алексей Дубовцев
Tango Операционная система из будущего
2.3.19
Хочу иметь возможность работать с системой автономно, без использования сети
Интеграция операционной системы и сети дает колоссальные преимущества и множество удивительных возможностей, но иногда бывают ситуации, что сеть недоступна. Не хотелось бы оставаться полностью беспомощным на это время. Безусловно, полностью компенсировать отсутствие сети невозможно, но тем не менее операционная система должна поддерживать режим самолета. Перед тем как садиться в самолет, пользователь нажимает кнопку «Режим самолета», и операционная система подготавливает приложения к автономной работе. Во время полета пользователь сможет использовать часть приложений – те, которые поддерживают этот режим. Например, пользователь сможет редактировать свои документы, просматривать таблицы, написать заранее несколько писем; естественно, он не сможет сразу же их отправить. Когда пользователь вновь доберется до сети, данные автоматически синхронизируются с сетью, письма будут отправлены, и станут доступны остальные функции. Другое дело, если соединение с сетью внезапно прервется. В этом случае операционная система должна сообщить приложениям о разрыве соединения, чтобы потерялось как можно меньше пользовательских данных.
Алексей Дубовцев
82
Tango Операционная система из будущего
2.3.20
Хочу всегда знать, какие файлы к чему относятся и чем занято у меня место
Зачастую бывает так, что место на жестком диске внезапно заканчивается. Когда это происходит, я обычно пытаюсь найти, куда оно делось. Пытаюсь деинсталлировать некоторые приложения, но обычно это не очень помогает. Место по-прежнему занято какими-то файлами. Сами файлы я, конечно, через некоторое время нахожу, но вот что это за файлы, для чего они вообще нужны и кем используются – в большинстве случаев совершенно непонятно. Если я нахожу файл на своем жестком диске, я желаю знать, откуда он там появился, какое приложение его создало, для чего этот файл нужен. Эта информация крайне важна для меня, я не хочу оставаться в неведении. Такая прозрачность позволит быстрее и проще отлавливать вирусы и черви, останется гораздо меньше мест в системе, где можно будет спрятать вредоносный код.
83
Алексей Дубовцев
Tango Операционная система из будущего
2.3.21
Хочу иметь простой механизм публикации и доставки видеоконтента
С каждым днем видеокамеры и фотоаппараты дешевеют, у меня даже есть подозрение, что скоро их начнут раздавать бесплатно в качестве бонуса к другим товарам. Хлебу, например. Все снимают видео, все делают фотографии. Снимать для себя неинтересно и ненужно, всегда снимаешь для того, чтобы поделиться с кем-то. Публикация видео- и аудиоконтента должна быть простой. Я хочу просто выложить видео, чтобы оно стало доступно всем пользователям сети. Сейчас публиковать видеоконтент могут только крупные дата-центры. Операционная система должна поддерживать пиринговые механизмы публикации контента. Каждый, скачавший контент, должен становиться узлом его распространения. Эта технология уже реализована в жизни, необходимо просто сделать ее частью операционной системы. Нужно всего лишь включить поддержку необходимых протоколов. Темпы увеличения объемов производства видео- и аудиоконтента будут только возрастать. Без такой системы в будущем очень сложно будет организовать качественную систему распространения контента. Организация вещания видео должна быть доступна всем, а не только тем, кто может построить огромные дата-центры.
Алексей Дубовцев
84
Tango Операционная система из будущего
2.3.22
Хочу искать информацию на основе рекомендаций живых людей
Я не сомневаюсь в том, что компьютерная логика может рано или поздно создать подобие искусственного интеллекта, но я сильно сомневаюсь в том, что этот интеллект будет человеческим. Компьютеру никогда не понять, что такое вкус ананаса или радость от созерцания пузырей шампанского в лучах заходящего солнца. Я хочу, чтобы поиск информации был основан на мнениях и рекомендациях живых людей. Поисковые системы оперируют понятием «релевантность результатов по поисковому запросу». Интересно, как люди из поисковой индустрии определяют понятие релевантности. Некоторые из них считают, что релевантность – это уместность результата, другие используют сложные математические формулы для вычисления встречаемости документов в интернете. Но ни один из этих подходов не верен, поскольку он исключает из уравнения самого пользователя системы. Приведем пример: я ввожу поисковый запрос «помидор». Если я фермер, то я хочу узнать все об особенностях выращивания помидоров, а если я микробиолог, то захочу знать все о воздействии бактерий на помидоры. Пример, конечно, упрощенный, но суть раскрывает. Поиск информации должен быть основан на рекомендациях и предпочтениях похожих людей. Подобные системы прекрасно себя зарекомендовали и позволяют получать превосходное качество результатов поиска.
85
Алексей Дубовцев
Tango Операционная система из будущего
2.3.23
Хочу иметь понятную систему сообщений об ошибках
Очень часто пользователям приходится сталкиваться с совершенно непонятными сообщениями об ошибках. Например, «Нарушение общей сегментации памяти по адресу 0x323342, приложение будет закрыто». Еще хуже, если пользователя попросят принять по этому поводу какое-нибудь решение. Например, «Нарушение общей сегментации памяти по адресу 0х33232324, вы хотите закрыть приложение или использовать диспетчер маршрутизации?». Помню, как одна девушка мне сказала: «Знаешь, когда я вижу подобные сообщения, мне кажется, что компьютер мне угрожает и хочет моей смерти». Подобные сообщения об ошибках ставят пользователя в тупик, они не несут абсолютно никакой полезной информации. Единственное, что может сделать опытный пользователь, – попытаться найти в интернете описание этой проблемы. Обычному же пользователю остается лишь осознать собственную беспомощность. Это неправильно. Хорошая система сообщений об ошибках должна давать пользователю действительно полезную информацию, которая может быть использована для решения возникшей проблемы. Я вижу это следующим образом. Все сообщения об ошибках должны иметь персональную страничку, зайдя на которую, пользователь сможет просмотреть видео решений этой проблемы, почитать отзывы людей, статьи. Любой пользователь должен иметь возможность добавить туда собственное видео, показывающее пути решения проблемы. Этот механизм должен быть стандартизирован и открыт, все приложения в системе должны использовать его. Опыт пользователей по борьбе с ошибками должен быть единым для всех приложений системы.
Алексей Дубовцев
86
Tango Операционная система из будущего
Этот механизм кардинально ускорит обучение пользователей и упросит использование системы. Будет сэкономлено бессчетное количество человеко-веков и миллиарды нервных клеток. Работа с компьютером для многих людей представляет собой бесконечную и заведомо проигранную борьбу со сложностями. На каждом шагу их поджидают странные «окошки», уведомления, требования, вопросы. У большинства людей, естественно, сдают нервы. Именно поэтому только маленький процент людей становится настоящими компьютерными профессионалами, только они могут разобраться в сложности систем. Система должна быть спроектирована так, чтобы помогать пользователю комфортно проводить время за компьютером, а не пытаться довести его до самоубийства за 7 дней. Каждый вопрос или ошибка должны сопровождаться ссылкой на страничку, где пользователь смог бы получить исчерпывающую информацию. А главное – простые и понятные варианты действий.
87
Алексей Дубовцев
Tango Операционная система из будущего
2.3.24
Хочу, чтобы Танго умела работать на компьютерах без жесткого диска
Я должен иметь возможность разместить Танго на «флешке» и сделать ее загрузочной. Вставив такую «флешку» в любой компьютер, я автоматически получаю полностью работоспособную систему. Такая конфигурация должна работать, не используя жесткий диск компьютера, и при этом пользователю будут доступны все его приложения, сервисы и файлы. Это очень упрощает использование и распространение системы. Представьте, что вы можете запустить Танго практически мгновенно на любом компьютере в мире – достаточно лишь вставить «флешку» и нажать кнопку перезагрузки. Это идеально для пользователей, которые по идеологическим причинам против установки нового софта на свои компьютеры. Такие пользователи ничем не рискуют, они лишь вставят «флешку», посмотрят на систему, и, если она им не придется по вкусу, можно будет просто перезагрузиться и мгновенно вернуться к прежнему порядку вещей. Также данная функция важна с точки зрения безопасности. Система не оставляет никаких данных на жестком диске – все лежит в оперативной памяти, которая сотрет все данные при выключении компьютера. Эта функция даст толчок к еще большему распространению компьютеров по планете и сотрет границы цифрового неравенства. Отказ от жестких дисков позволит вывести на рынок еще более дешевые терминалы. Можно будет прошить ядро операционной системы прямо на чипе (SystemOnChip), а приложения и данные пользователя будут автоматически загружаться из сети. Эта технология повлияет также на рынок бытовой электроники – телевизоров, приставок, консолей и т.п. Потому как на рынке важнее всего – стоимость конечного устройства на прилавке. Скорость распространения устройств и технологий регулируется эластичностью спроса. Цена меньше – покупают больше, цена больше – покупают меньше.
Алексей Дубовцев
88
Tango Операционная система из будущего
2.4 Владелец предприятия Компании и корпорации создают современный мир. Продукты, которые создают компании, кардинально улучшили наш образ жизни за прошедшее столетие. Компании достигли потрясающих успехов в обслуживании массового рынка, в особенности в последние 50 лет. Произошло это благодаря внедрению научных методов менеджмента. С появлением дешевых информационных систем методы научного менеджмента получили еще большее развитие и распространение. Для того чтобы внедрить современные процессы в компании, наладить взаимодействие сотрудников и управление операциями, теперь достаточно купить компьютеры работникам и установить соответствующее программное обеспечение.
Компаниям нужен простой и удобный софт, который можно было бы моментально внедрять. От этого зависит эффективность компаний, а от их эффективности и способности производить продукты и поставлять услуги напрямую зависит экономическое благополучие не только отдельных государств, но и человечества в целом.
89
Алексей Дубовцев
Tango Операционная система из будущего
2.4.1
Хочу концентрироваться на корпоративных сервисах, а не на инфраструктуре
Корпоративные сервисы
Давно в прошлом те времена, когда компьютер был для бизнеса просто усовершенствованной печатной машинкой, ускорявшей делопроизводство. Сейчас, скорее, бизнес строится вокруг компьютерных систем, а не наоборот. Компьютерные системы предоставляют жизненно важные корпоративные сервисы:
1. 2. 3. 4.
Почта. Директория сотрудников – кто есть кто в компании. Управление задачами. Управление корпоративными ресурсами: a. Склад. b. Поставки. c. Бухгалтерия. d. Финансы. e. Документы.
Люди же встраиваются в эти корпоративные сервисы и начинают действовать на основе информации, предоставляемой им. Мир перевернулся, и теперь хвост крутит собакой. От того, насколько удобны и просты в использовании эти сервисы, во многом зависит эффективность работы компании. Те компании, которые внедряют сервисы наиболее эффективно, получают неоспоримые преимущества перед конкурентами. Они становятся более организованными, быстрыми и целенаправленными. Их сотрудники действуют на основе информации, приходящей в режиме реального времени.
Алексей Дубовцев
90
Tango Операционная система из будущего
Я не буду вдаваться в детали преимущества использования современных корпоративных систем, дабы не «раздувать» книгу. Но преимущества и выгода от их использования очевидны как в больших корпорациях, так и маленьких компаниях из трех человек. Я хочу, чтобы операционная система позволяла моментально, в один клик, создать виртуальное представление компании и подключить туда людей и корпоративные сервисы. Я хочу, чтобы это было так же просто, как создать группу в социальной сети. Я вижу это следующим образом – я, как владелец предприятия:
Создание компании
1. 2. 3.
91
Создаю свою компанию. Приглашаю туда сотрудников. Через эту площадку я централизованно и просто управляю: a. Корпоративными сервисами. b. Приложениями. c. Директорией сотрудников. d. Созданием отделов и филиалов. e. Обменом файлом между сотрудниками. f. Внутренним порталом. g. Внешним порталом. h. Политиками использования корпоративных сервисов.
Алексей Дубовцев
Tango Операционная система из будущего
Я хочу полностью виртуализировать управление корпоративными сервисами. Люди придают слишком большое значение физической инфраструктуре предприятия: строят огромные дата-центры, прокладывают сложные сети и каналы связи, закупают мощные сервера, но в конечном итоге все сводится к тому, что сотрудники сидят перед мониторами и используют приложения. Для них важны именно приложения, а не сервера и инфраструктура. Современная операционная система должна предоставлять площадку для корпоративных сервисов. Площадку, которую можно создать в один клик, подключить туда сотрудников и начать сразу же организовывать их деятельность. Для обычных компаний важны реальные бизнес-процессы, а не компьютерные примочки.
Алексей Дубовцев
92
Tango Операционная система из будущего
2.4.2
Хочу разворачивать приложение по всему предприятию централизованно
Представьте себе среднюю компанию из 1000 человек, 300 из которых находятся в Санкт-Петербурге, 500 – в Москве, а 300 работают в малых офисах в Европе, Азии и Америке. В один прекрасный день вы понимаете, что 800 из этих сотрудников должны использовать в работе новое приложение. Первое, что нужно сделать, – купить лицензии. Потом установить приложение всем пользователям, которые должны его использовать. А как его установить? Для этого нужно использовать системы распределенной установки, они обычно крайне сложны в использовании и очень капризны – позволяют работать далеко не со всеми приложениями. Или же придется созывать экстренное совещание со всеми региональными администраторами и давать им дистрибутивы, чтобы они устанавливали приложение руками на каждый компьютер. При этом встает вопрос о лицензионной чистоте: как проверить, что правильно лицензирована каждая копия установленного софта? В общем, одна сплошная головная боль. А если еще вспомнить о том, что программы нужно обновлять, нужно делать это быстро и регулярно, то тут стоит запасаться сильными седативными препаратами. Я хочу распространять приложение одним кликом мышки. Я хочу войти в панель управления моим предприятием, выбрать список пользователей и нажать «установить приложение», оплатить необходимое количество лицензий – и все. После этого я ожидаю, что все мои сотрудники автоматически получат уведомление о том, что им стало доступно новое приложение (или сервис). Они получат это уведомление на свой личный аккаунт (вне зависимости от того, где (географически) и через какое устройство они подключены к нему). Все приложения будут загружены пользователям при помощи стандартных средств операционной системы, они будут обновляться автоматически, лицензии будут проверяться автоматически для каждого пользователя. Все должно быть просто и удобно.
93
Алексей Дубовцев
Tango Операционная система из будущего
2.4.3
Хочу подключать пользователей к моей инфраструктуре в один клик
Я хочу строить распределенные предприятия, подключая в них сотрудников с разных концов света. Договорившись с человеком, я хочу мгновенно сделать доступными для него корпоративные сервисы. Подключение сотрудника к корпоративной структуре не должно требовать больше одного клика. После подключения сотрудники предприятия должны мгновенно увидеть его и иметь возможность наладить с ним коммуникацию. Недопустима ситуация, когда при приеме нового сотрудника дни или недели тратятся на подключение его к корпоративным сервисам. Это крайне важно, потому что сейчас без доступа к корпоративным сервисам чаще всего человек не может даже приступить к работе.
Алексей Дубовцев
94
Tango Операционная система из будущего
2.4.4
Хочу, чтобы все документы, которые создают сотрудники в рамках компании, были всегда доступны и никогда не терялись
Со временем в компании накапливается огромное количество информации: файлы, документы, таблицы, графики, письма. В большинстве случаев эта информация хаотична, разбросана по компьютерам сотрудников и не поддается никакой систематизации, а тем более – поиску. Хорошо, если существует единое хранилище, куда пользователи скидывают документы. Но чаще всего, даже если оно есть, туда никто никогда ничего не складывает. Очень часто бывает так, что после ухода сотрудника данные, с которыми он работал, безвозвратно теряются. Например, потому что никто не может вспомнить, где он их хранил – то ли на собственном компьютере, то ли на общем диске. Я хочу, чтобы у сотрудников была возможность сохранять файлы в компании, в которой они работают. Компания – это единая информационная точка, что-то среднее между папкой и страничкой. Пользователь всегда из любого приложения может сохранить файлы в компанию. Такие файлы всегда хранятся в сети или на серверах компании, они никогда не потеряются, даже если компьютер пользователя будет уничтожен. Это очень удобно для всех пользователей. При подключении своего аккаунта к компании пользователь сразу получал бы доступ к корпоративному хранилищу. Сотрудники всегда знают, где сохранять файлы и где их можно потом найти, никогда не было бы путаницы и потерянных человеко-часов.
95
Алексей Дубовцев
Tango Операционная система из будущего
2.4.5
Хочу иметь единый поиск по данным предприятия
Найти документ или файл в современной компании – обычно сложнейшая задача. Документы постоянно куда-то теряются, компьютеры исчезают, сервера становятся недоступными.
Поиск файлов в компании
Хранение документов и файлов в едином хранилище компании открывает поистине беспрецедентные возможности по поиску. Можно будет просто организовать поиск по:
1. 2. 3.
Названию. Содержимому. Создателю (можно будет выбрать сотрудника компании и узнать, какие документы он создавал).
Для сотрудника компании будет крайне просто найти документ, нужно будет лишь зайти в компанию и ввести в строку поиска интересующий документ. Два простых шага, которым можно будет очень быстро обучить всех.
Пример – Василий Петрович, а где договор, который ведет Петр Андреевич? – Все просто. Щелкните на Петра Андреевича в компании, далее на его файлы и там найдете договор.
Алексей Дубовцев
96
Tango Операционная система из будущего
2.4.6
Хочу иметь возможность быстро организовывать отделы, группы, проектные команды
Раньше в компаниях организация сотрудников велась по принципу офисов. Сотрудников, выполняющих одну функцию или занимающихся одним проектом, старались посадить в одну комнату. Сейчас даже в больших компаниях, имеющих возможность выделить сколько угодно комнат, этот подход перестал работать. В современном мире функции и проекты обновляются настолько быстро, что сотрудникам пришлось бы пересаживаться слишком часто, а также одновременно сидеть в нескольких комнатах. Помню, довелось работать в одном странном офисе, где каждый раз при входе в здание нужно было прикладывать свою карточку доступа, и компьютер здания называл мне место, за которым я буду сидеть сегодня. Каждый день место менялось. Когда я приходил на место, телефон на рабочем столе был уже настроен под меня. Каждый день рядом со мной сидели новые люди, я никак не мог понять, каким образом компьютер назначает места. Крайне странные были ощущения от работы в этом месте. Я хочу иметь возможность одним кликом создавать отделы, группы внутри компании, помещать туда сотрудников. Будет очень просто найти в любой компании нужный отдел или проект, просмотреть проектные файлы, связаться с людьми. Должен преобладать информационный принцип организации, а не географический. Должна быть возможность встраивать сторонние программы в отделы. Например, отделу проектирования можно сразу же дать доступ к приложению проектирования и чертежей, логистическому отделу – приложения управления складами и грузами.
97
Алексей Дубовцев
Tango Операционная система из будущего
2.5 Безопасность и надежность При чтении описания системы может показаться, что я очень идеалистичен и живу в стране волшебных эльфов, которые исключительно дружелюбны и никогда не делают плохих вещей. Я описываю систему как максимально открытую, в которой легко и непринужденно можно обмениваться всей информацией; систему, в которой все файлы лежат в сети и могут быть доступны с любого компьютера.
Безусловно, система должна защищать пользователя от нежелательных воздействий. Безусловно, появятся «плохие парни», которые захотят украсть информацию пользователей и деньги с их счетов. И, безусловно, в системе будут механизмы, которые не позволят им этого сделать.
Алексей Дубовцев
98
Tango Операционная система из будущего
Я описывал систему упрощенно, без рассмотрения вопросов безопасности, по двум причинам:
Упрощение
1.
99
2.
Я стараюсь как можно сильнее упростить описание системы, чтобы было легче понять стержневую идею. Вопрос безопасности лучше рассмотреть отдельно, внимательно и пристально, не смешивая с основной функциональностью. Для подобных систем безопасность – это свойство, а не главная функция.
Алексей Дубовцев
Tango Операционная система из будущего
2.5.1
Хочу, чтобы мои данные всегда были надежно защищены
Итак, что же такое безопасность системы? Нам нужен простой подход. Система содержит множество функций, и некоторые из них должны выполняться только с личного согласия пользователя и никак иначе. Например, функция перевода денег должна выполняться только с вашего личного согласия и никак иначе.
Безопасность – определение «Безопасность» означает, что функция программы должна выполняться только с личного согласия пользователя и никак иначе.
Личное согласие пользователя может обеспечиваться различными механизмами: паролями, SMS, звонками, электронными брелоками. Каждый механизм имеет свой уровень стойкости и затраты на взлом. Например, пароль украсть гораздо проще, чем обойти механизм подтверждения со звонком на сотовый телефон от реального человека. Система должна предоставлять пользователю механизмы собственных данных при помощи всех возможных способов.
Алексей Дубовцев
защиты
100
Tango Операционная система из будущего
Степени защиты
Пользователь должен иметь возможность для любого объекта операционной системы или важных функций определить степень защиты:
1. 2. 3. 4. 5.
Общедоступно. При помощи пароля. При помощи SMS. При помощи звонка. Отключено в принципе.
Например, пользователь может разрешить доступ к файлу со своей банковской выпиской при помощи SMS. Когда он попытается открыть этот файл, ему придет SMS с одноразовым паролем. А если кто-то украдет его основной логин и пароль и попадет в систему, он все равно не сможет открыть этот файл без одноразового SMS-пароля. То есть без личного участия пользователя. Ключевым моментом безопасности является личное участие пользователя. Если копнуть глубже, сутью является простое решение вопроса «дать или не дать доступ к объекту человеку, запрашивающему его?». Важно обеспечить ситуацию, когда это решение принималось бы внутри головы человека, владеющего объектом, а не где-либо еще.
101
Алексей Дубовцев
Tango Операционная система из будущего
2.5.2
Хочу защищать свои данные при помощи
SMS Я хочу иметь возможность защищать данные и использовать функции системы при помощи SMS на свой мобильный телефон. При попытке получения доступа я буду вводить каждый раз SMS с одноразовым паролем, который теряет свою актуальность после первого ввода или в течение 10 минут. Такая система практически не может быть взломана автоматически. Если только злоумышленники не получат доступ к телефону пользователя. А это уже сложнее и точно слабо осуществимо в больших масштабах.
Пароли
Для большей надежности система должна поддерживать возможность разделять посылку пароля на два или более телефонов. То есть пароль придет в разбитом виде на два телефона:
1. 2.
Телефон 1 – Пароль 44 35. Телефон 2 – Пароль 87 66.
Для того чтобы активировать функцию, нужно будет ввести единый пароль 44 35 87 66. В этом случае, даже если «плохие парни» получат доступ к одному из телефонов, они все равно не получат доступ к защищенным функциям. Такая возможность делает систему настолько защищенной, что можно будет доверять ей критически важные данные.
Алексей Дубовцев
102
Tango Операционная система из будущего
2.5.3
Хочу защищать свои данные при помощи живого звонка
Я хочу, чтобы доступ к важным данным можно было осуществить при помощи живого звонка.
Диалог со службой безопасности
Когда я пытаюсь получить доступ к защищенным объектам, я нажимаю кнопку «Получить одноразовый пароль», и мне на телефон поступает звонок, после чего у меня с оператором состоится примерно следующий диалог:
1. 2. 3. 4. 5.
Оператор: «Добрый день, служба безопасности Танго, назовите Ваше имя, пожалуйста». Пользователь системы: «Дубовцев Алексей» (если имя названо неверно, дальше диалог не пойдет). Оператор: «Спасибо, назовите Ваше кодовое слово». Пользователь системы: «Чебурашка» (если кодовое слово названо неверно, дальше диалог не пойдет). Оператор: «Спасибо, Ваш одноразовый пароль – 4831».
Технически такую службу организовать довольно просто. С точки зрения безопасности взломать ее будет еще сложнее, чем SMS-пароли. С точки зрения финансов услуги колл-центра с каждым днем все дешевеют, к тому же разработки в области автоматизации подобных служб далеко шагнули вперед, и подобные сценарии можно организовать без участия живого оператора.
103
Алексей Дубовцев
Tango Операционная система из будущего
2.5.4
Хочу защищать свои данные при помощи электронного брелока
Электронный брелок – это небольшое электронное устройство, в которое пользователь вводит секретный ключ и получает одноразовый пароль для входа в систему. Такие брелоки используют открытую криптографию, которую очень сложно подделать. Система должна предоставлять открытый API для производителей электронных брелоков для того, чтобы пользователь мог купить такой брелок в любом магазине компьютеров и привязать его к своему аккаунту. Использование брелока довольно просто: пользователь должен ввести в брелок секретный ключ для того, чтобы получить одноразовый пароль. Без брелока этот пароль сгенерировать невозможно, он нигде не хранится и его не нужно запоминать. Как только система предоставит такой механизм, на рынке сразу же появится огромное количество брелоков на все случаи жизни.
Алексей Дубовцев
104
Tango Операционная система из будущего
2.5.5
Я параноик, хочу защищать свои данные очень сильно
На тот случай, если я параноик и если я сильно забочусь о сохранности свои данных, у меня должна быть возможность комбинировать вышеописанные возможности защиты данных. Это может выглядеть следующим образом. Параноик решил сделать перевод денег со своего счета:
1.
Защита для параноика
2. 3. 4. 5. 6. 7.
8. 9.
Он заходит в платежную консоль, вводит реквизиты, сумму и нажимает «Перевести». Его просят ввести пароль. Затем на каждый из трех его телефонов приходит SMS с частями пароля. Он объединяет их, вводит их в систему и переходит на следующий этап. На каждый из телефонов приходит живой звонок, и ему сообщают часть общего пароля. Он объединяет эти пароли, вводит в систему и переходит на следующий этап. Далее его просят воспользоваться всеми подключенными брелоками, чтобы сгенерировать пароли. Он генерирует эти пароли, вводит их и переходит на следующий этап. Здесь он подтверждает перевод, и только тогда деньги уходят.
При такой схеме защиты взломать систему будет крайне сложно.
Мысли вслух Осталось только добавить схему с красной кнопкой и двумя стальными ключами сложной формы, которые поворачивают два офицера, находящихся в разных комнатах.
105
Алексей Дубовцев
Tango Операционная система из будущего
2.5.6
Хочу, чтобы мои данные были защищены на физическом уровне
Архитектура системы предполагает, что я могу зайти в нее с любого компьютера и сразу же получить доступ к моим данным. А значит, эти данные попадут на жесткий диск данного компьютера. Я хочу иметь возможность шифровать данные, попадающие на жесткий диск, таким образом, чтобы нельзя было их просмотреть, например, из другой операционной системы, просто подключив к ней диск.
Физическая защита данных
Схема шифрования должна выглядеть примерно так:
1. 2.
3.
Шифрование должно производиться при помощи симметричного поточного ключа. Поточный ключ генерируется на базе ассиметричного ключа компьютера и ассиметричного ключа пользователя. Поточный ключ для надежности можно генерировать на сервере.
Симметричный поточный ключ позволит шифровать данные очень быстро и абсолютно незаметно для пользователя. При таком подходе бесполезно пытаться достать данные на физическом уровне.
Алексей Дубовцев
106
Tango Операционная система из будущего
2.5.7
Хочу, чтобы приложения без моего ведома не получали доступ к моим данным
Приложения должны иметь доступ только к своим файлам. Ко всем остальным файлам они должны получать доступ только с личного согласия пользователя. Такая политика не только предотвратит утечку данных, но также снимет множество других головных болей, вроде злонамеренного изменения ядра системы. Сейчас приложения, устанавливаемые на компьютер, имеют множество возможностей – документированных и скрытых – получить полный контроль над системой и сделать с ней все что угодно: украсть персональные данные, использовать компьютер для собственных целей. Операционная система должна полностью контролировать поведение приложений, у них не должно быть возможности без спросу получить доступ к критически важным данным.
Важно Система должна контролировать приложения, а не приложения систему.
107
Алексей Дубовцев
Tango Операционная система из будущего
2.5.8
Не хочу, чтобы моим аккаунтом завладели «злодеи»
С одной стороны, я хочу доверить системе свои данные, свои контакты, свою переписку, личные документы, но с другой – довольно страшно: а вдруг «злодеи» завладеют моими логином и паролем, сменят их, и я полностью потеряю всю информацию. Этого в принципе не должно никогда случиться! Это должно быть исключено. Именно поэтому стоит привязывать свой аккаунт к мобильному телефону. Если кому-то и удастся украсть логин и пароль и даже сменить его, нужно будет всего лишь восстановить себе новый при помощи сотового телефона. Этот механизм очень надежен и практически не поддается взлому автоматизированным способом при помощи вирусов или червей. Даже если получить на время доступ к сотовому телефону и украсть с его помощью аккаунт, SIM-карту всегда можно восстановить и вернуть себе свой аккаунт.
Алексей Дубовцев
108
Tango Операционная система из будущего
2.5.9
Не хочу иметь тысячу паролей, хочу иметь только один
Сейчас на всегда и везде нужны пароли, куда ни ткнись − тебя просят ввести пароль и логин. Везде нужно вводить разные логины и пароли, как это все упомнить − непонятно. Существуют, конечно, менеджеры паролей, но для простых пользователей это слишком сложно, они не должны об этом задумываться, для них все должно быть максимально просто и удобно.
В Танго у пользователя по умолчанию будет только один логин и пароль на вход в систему. Вход в приложения будет производиться автоматически, без участия пользователя.
109
Алексей Дубовцев
Tango Операционная система из будущего
Если, конечно, пользователь захочет, он сможет защитить множеством паролей и других механизмов безопасности.
Алексей Дубовцев
себя
110
Tango Операционная система из будущего
2.5.10
Хочу, чтобы мои данные хранились там, где я этого хочу
Я очень часто говорю о том, что данные пользователей будут храниться в сети, что будут использоваться пиринговые технологии, которые будут разбивать данные на множество кусочков и надежно хранить их на тысячах компьютеров. Тем не менее данные в конечном итоге будут храниться на жестком диске. Танго должна предоставлять механизм контроля, на каком именно носителе будут храниться данные пользователя. Пользователь должен иметь возможность подключить любой диск к сети. А затем указать Танго хранить его файлы именно там. Есть данные, которые никогда не хочется доверять сети, насколько надежной она бы ни казалась.
111
Алексей Дубовцев
Tango Операционная система из будущего
2.5.11
Хочу, чтобы мои данные хранились на чужих компьютерах минимальное время
Поскольку операционная система сетевая и пользователь будет получать доступ к своим файлам с чужих компьютеров, то разумно ввести функцию уничтожения личных данных. Операционная система понимает, что это чужой компьютер (для этого пользователю достаточно лишь поставить галочку во время входа в систему), и по завершении сеанса (когда пользователь выходит из системы) она очень быстро удаляет все данные пользователя. В таком случае пользователь может быть уверен, что его информация не попадет в чужие руки. Представьте, вы приходите в компьютерный клуб, садитесь за первый компьютер, вводите свои логин и пароль и получаете доступ ко всем своим файлам. Для вас, конечно, будет важна уверенность в том, что после того как вы уйдете, данные не останутся на жестком диске, и ими никто не сможет воспользоваться.
Алексей Дубовцев
112
Tango Операционная система из будущего
2.5.12
Хочу иметь возможность загружать приложения из-под другого логина и пароля
Пользователь должен иметь возможность прямо во время работы системы загружать любое приложение от имени другого пользователя. Для этого ему необходимо будет всего лишь ввести логин и пароль этого пользователя и работать с этим приложением от имени нового пользователя. Многие пользователи имеют несколько аккаунтов для различных целей. Для них будет неудобно каждый раз входить и выходить из системы или менять пользователя только для того, чтобы воспользоваться несколькими приложениями. Система управления идентификацией должна быть максимально гибкой и не ограничивать пользователя только одним аккаунтом. При этом важно, чтобы пользователь всегда участвовал в процессе предоставления доступа, чтобы приложения не пытались взломать систему, используя этот механизм.
113
Алексей Дубовцев
Tango Операционная система из будущего
2.5.13
Хочу иметь возможность загружать приложения в режиме инкогнито
Всегда должна быть возможность запустить любое приложение в режиме инкогнито, когда приложению не передается никакая информацию о пользователе. Для многих людей важно соблюдать свою анонимность в сети, и операционная система должно содержать эти механизмы, чтобы не утруждать пользователя поиском сторонних инструментов. Анонимность и личная информация должны быть полностью под контролем пользователей, система должна быть абсолютно прозрачна, ни у кого не должно возникать подозрений в нечестной игре. Пользователь должен чувствовать, что он всегда контролирует ситуацию. Если он захочет быть анонимным и система не позволит ему это сделать, он будет в ней разочарован. Этого нельзя допускать.
Алексей Дубовцев
114
Tango Операционная система из будущего
2.5.14
Хочу иметь встроенные механизмы контроля трафика и анти-DDoS
Проблема неконтролируемого трафика крайне актуальна в наше время. Даже легальные и стандартные приложения злоупотребляют трафиком и делают множество непонятных запросов, что уж говорить о руткитах, которые превращают компьютеры пользователя в зомби-машины и используют их для DDoS-атак. Танго должна иметь встроенные механизмы контроля и анализа трафика. Антивирусы должны использовать эти механизмы для того, чтобы понимать, заражена ли машина пользователя.
Также эти механизмы будут крайне полезны для пользователей с ограниченным трафиком. Они смогут контролировать свои приложения и будут знать, что те не используют сеть без их ведома. Система станет более прозрачной для пользователей. Естественно, что информация о трафике пользователя – это его личные данные, и они не должны передаваться за пределы его компьютера.
115
Алексей Дубовцев
Tango Операционная система из будущего
2.5.15
Хочу, чтобы операционная система защищала меня от спама
Операционная система должна иметь мощные механизмы контроля спама, она должна защищать пользователя от спама во всех его проявлениях. Я не хочу получать не интересующую меня информацию в виде писем, уведомлений, файлов или чего бы то ни было еще. Задача борьбы со спамом гораздо сложнее, чем может показаться на первый взгляд. Уж больно много факторов для принятия решения о том, является сообщение спамом или нет. Система должна предоставлять открытый стандарт для антиспам-систем, алгоритмы должны быть полностью открыты и доступны для обновления сообществом. Только так можно будет противостоять легионам спамеров, силы добра и зла должны быть сопоставимы.
Алексей Дубовцев
116
Tango Операционная система из будущего
2.5.16
Хочу иметь возможность установить систему в закрытом варианте и без связи с внешним миром
Для некоторых организаций, например, правительственных и военных, крайне важна безопасность системы. Для них важно установить систему в здании, обрезать все провода, ведущие наружу, обтянуть все колючей проволокой, вырыть ров вокруг, заселить туда крокодилов и поставить роту часовых. В таких условиях система должна функционировать без связи с внешним миром и глобальными серверами Танго. Она должна полностью контролироваться людьми, которые ее устанавливают и настраивают, никаких сюрпризов быть не должно. Система Танго должна поддерживать такой вариант функционирования. Естественно, что многие сервисы и приложения при этом варианте использования будут недоступны, зато система будет очень надежна и безопасна.
117
Алексей Дубовцев
Tango Операционная система из будущего
2.6 Владелец дата-центра Приложения и сервисы стремительно мигрируют с компьютеров в сеть, все больше и больше приложений работают в сети. Приложение, работающее через сеть, обязательно использует сервера в дата-центре. Без датацентров невозможно функционирование сетевых приложений. Развитие логической инфраструктуры дата-центров крайне важно для развития сети в целом.
Владельцы дата-центров – это люди, инвестирующие в физическую инфраструктуру: сервера, кабели, помещения, вентиляцию, фальш-полы и т.п. Они должны быть уверены, что их инвестиции окупятся, они должны иметь простые механизмы организации предоставления услуг пользователям и их монетизации.
Алексей Дубовцев
118
Tango Операционная система из будущего
2.6.1
Хочу купить компьютеры, поставить на них софт и моментально получать с них прибыль
Потребности человечества в дата-центрах будут возрастать с каждым годом все больше и больше. Количество серверных приложений, которые обслуживают пользователей через интернет, увеличивается в геометрической прогрессии. Инвестирование в дата-центры – хороший, но крайне сложный бизнес.
При создании дата-центра в первую очередь производят капитальные инвестиции в помещения, монтажно-строительные работы, подключения к магистральным каналам, серверам. Когда этот этап закончен, начинается самое интересное – необходимо найти клиентов. Поиск клиентов для датацентра – довольно «магическое» занятие: нужно давать рекламу, искать правильные медиаканалы, искать выход на разработчиков и администраторов приложений, а также предпринимать кучу других «волшебных» действий. Как владелец дата-центра, я хочу сразу же после установки серверов получить клиентов и начать окупать вложения в инфраструктуру. При помощи системы Танго сделать это будет крайне просто. Я установлю на всех компьютерах операционную систему Танго. Два из них выделю под управляющие (один ведущий, один резервный). На управляющем компьютере я зарегистрирую все компьютеры и другие ресурсы моего дата-центра, после этого опубликую дата-центр в общей директории датацентров Танго, указав цены на услуги. 119
Алексей Дубовцев
Tango Операционная система из будущего
Теперь мне останется только ждать, и через некоторое время приложения автоматически заполнят мой дата-центр. Как это произойдет? Очень просто. Среда разработки, в которой работают программисты, будет содержать функцию «Опубликовать приложение». Эта функция будет автоматически соединяться с единой директорией датацентров и предлагать разработчикам список дата-центров, в которых можно опубликовать приложение. Для программистов это тоже будет крайне удобно: не нужно искать дата-центр через поисковые системы, читать множество отзывов, разбираться в сложных формах и панелях управления, нужно будет просто выбрать из списка наиболее подходящее предложение и нажать кнопку «Опубликовать». И приложение станет моментально доступным в сети. Естественно, что авторы приложений будут оплачивать услуги дата-центра. Деньги будут поступать на счет дата-центра автоматически, через платежную платформу Танго.
Дополнительные услуги
Дата-центры смогут конкурировать дополнительные услуги:
1. 2. 3.
между
собой,
предоставляя
Круглосуточная поддержка. Голосовая поддержка на родном языке. Консультации администраторов и разработчиков.
Алексей Дубовцев
120
Tango Операционная система из будущего
2.7 Владелец приложения Какой бы классной операционная система ни была, без приложений она никому не нужна. Это как ракета без боеголовки – летающий кусок металла. Эффектно, но много не навоюешь. Приложения являются одним из главных активов операционной системы. Приложения же сами по себе не появляются, их делают люди. Людей, в голову к которым приходит идея сделать приложение и которые реализуют ее, я называю владельцами приложений. При создании операционной системы крайне важно понимать, что успех системы во многом зависит именно от этих людей. Ни одна компания не может самостоятельно сделать все приложения, это невозможно. Важно поддержать владельцев приложений настолько, насколько это возможно. Создание софта является одним из сложнейших видов деятельности на земле. Люди, которые этим занимаются, должны иметь четкие и осязаемые механизмы поддержки.
121
Алексей Дубовцев
Tango Операционная система из будущего
2.7.1
Хочу просто и быстро находить инвестора для моих приложений
Успех операционной системы зависит во многом от количества и качества приложений, которыми будут пользоваться люди. Количество приложений, которые будут созданы для системы, зависит от многих факторов, но один из них – самый главный – финансовый. Если инвесторы будут вкладываться в создание приложений для этой платформы, то появится множество приложений, они привлекут пользователей, денежные потоки, новых инвесторов, круг замкнется, и система будет развиваться. Механизм инвестирования в приложения, а также контроль денежных потоков должен быть максимально прозрачен. Сейчас поиск инвесторов представляет собой «магический» процесс, зависящий во многом от субъективных и географических факторов. Найти инвестиции под среднего качества проект в Калифорнии намного проще, чем найти деньги на развитие отличного проекта в России. Я считаю, что операционная система должна содержать встроенные механизмы для решения этих задач. Я вижу это следующим образом. Владелец регистрирует свое приложение в общей директории приложений. К этому приложению автоматически привязывается счет встроенной платежной системы, а также статистика по использованию приложения. На счет стекаются деньги, которые пользователи платят за использование приложения, а также доходы от рекламы, размещенной внутри приложения. Статистика предоставляет полную информацию обо всех пользователях приложения, частоте прихода пользователей, географических данных, а также другую информацию.
Алексей Дубовцев
122
Tango Операционная система из будущего
Владелец приложения может выставить приложение на торги в виде акций. В ходе этого процесса он самостоятельно определяет количество акций и их стоимость (стандартный эмиссионный процесс).
К примеру, я создаю навороченный калькулятор, который содержит функцию, остро необходимую всем математикам в мире. Я создаю прототип этого калькулятора, публикую его в каталоге приложений, определяю стоимость использования в 1 доллар. Затем я начинаю распространять его среди математиков, им он начинает нравиться, и в первую неделю его загружают 10 000 математиков, из которых 1000 платит 1 доллар за его использование. Сразу после этого я выпускаю акции моего приложения в каталоге и делаю финансовую и статистическую информацию доступной публично. Я решаю, что акций будет 100 и каждая будет стоить 1000 долларов. Общая стоимость компании на текущий момент составит 100 000 долларов. При этом я рассчитываю, что количество скачиваний за 6 месяцев моего приложения достигнет 10 миллионов, из которых 3 миллиона купят его за 1 доллар. То есть общий доход за 6 месяцев составит 3 миллиона долларов. Таким образом, на каждый вложенный доллар ожидается 2900 % прибыли за полгода. Этот прогноз я публикую вместе с информацией о моем приложении.
123
Алексей Дубовцев
Tango Операционная система из будущего
Каждая акция автоматически дает право на долю прибыли. Каждый заработанный приложением доллар автоматически и мгновенно распределяется между владельцами акций.
Публичная информация
Инвесторы заходят в каталог приложений, как на инвестиционную площадку. Они видят приложения как котировки. Они могут просматривать публичную информацию о приложениях:
1. 2. 4. 5. 6.
Динамика доходности. Динамика статистики приложения: сколько текущих пользователей, каков прирост. Динамика котировок. Объем торгов. Социальные обсуждения вокруг приложения: форум, группа, файлы.
Я, как инвестор, заходя в подобную систему, быстро смогу найти интересующее меня приложение. Смогу пообщаться с владельцами приложения, узнать всю интересующую информацию, а затем быстро купить акции приложения и отслеживать всю динамику в реальном времени. Это классический и давно известный механизм биржи. Подобная система напрямую свяжет создателей приложений и инвесторов, сделает процесс инвестирования более прозрачным и защищенным. Эта система будет выгодна всем: создателям приложений, инвесторам, конечным пользователям, – поскольку рынок приложений будет активно и динамично развиваться, предоставляя все более качественные сервисы.
Алексей Дубовцев
124
Tango Операционная система из будущего
Выгода от спекулянтов
Биржа приложений, конечно, привлечет большое количество спекулянтов, которым будет интересовать только лишь перепродажа акций и заработок на этом. Это тоже выгодно системе по ряду причин:
1. 2.
Вложение капитала в систему делает ее более привлекательной для всех участников. Комиссия по сделкам даст дополнительные источники финансирования самой системы, а как следствие, ее развитие и улучшение качества предоставляемых услуг.
Биржевые и финансовые механизмы существуют много столетий, они проверены и понятны всем. Приложив эти механизмы для развития системы, можно добиться отличных результатов. Такая биржа в очень короткий срок привлечет огромные капиталы. Это будет «песочница», структурирующая текущие деньги, хаотично вкладываемые в IT. Причем капитал будет привлекаться организованно, что, в свою очередь, ускорит развитие технологий.
125
Алексей Дубовцев
Tango Операционная система из будущего
2.7.2
Хочу иметь полную информацию о пользователях моих приложений
Для создателей приложений очень важно в реальном времени отслеживать статистику по использованию их детищ. Важно получать подробную информацию о количестве установок, о профиле пользователей, установивших приложение, об их возрасте, поле, географическом местоположении. Также важно, чтобы статистическая система была расширяема, и я мог бы регистрировать там дополнительную информацию, например, о том, как часто используется та или иная функция. Было бы здорово, чтобы эти возможности предоставлялись платформой по умолчанию, чтобы любое созданное приложение автоматически подключалось к этой системе. При необходимости, конечно, можно было бы отказаться от нее. Крайне важно, чтобы эту информацию можно было бы публиковать и давать доступ к ней другим людям. Эта система являлась бы доверенным источником информации о приложении, и можно было бы запросто дать доступ к ней инвесторам, они бы, в свою очередь, знали, что все честно, и этой информации можно доверять. Такой подход существенно упростил бы получение инвестиций под приложения. Также система статистики даст полезную и нужную информацию для разработчиков.
Алексей Дубовцев
126
Tango Операционная система из будущего
2.7.3
Хочу иметь простую и удобную систему лицензирования приложений
Как создатель приложения, я хочу быть сфокусированным на моих пользователях, на сервисе, который им предоставляю, и на технологии. Я хочу иметь простую систему лицензирования функций приложения, в которой я могу определить, сколько эти функции стоят и на какой срок предоставляются. Приложение же будет предоставлять функции пользователю, основываясь на данных единой подсистемы лицензирования Танго. Такой подход дает огромное количество преимуществ:
Преимущества единой системы лицензирования
1.
127
2. 3.
4.
Упрощается механизм подключения платежных систем. Как следствие, упрощается механизм монетизации. Пользователи производят оплату через стандартный механизм, которому доверяют. Множество способов оплаты: a. Единая система лицензирования будет принимать все возможные системы оплаты, приложения будут подключаться к ним автоматически. b. Как следствие, упрощение монетизации приложений и расширение рынка сбыта. Единая система отчетности по оплате пользователей: a. В режиме реального времени видно, за что платил пользователь, когда и как. b. Эту отчетность можно мгновенно публиковать и делать ее доступной для людей, например, потенциальных инвесторов.
Алексей Дубовцев
Tango Операционная система из будущего
Создатель приложения должен в один клик получить доступ к глобальной системе лицензирования и приема платежей. Публикуя приложения, он сразу же получает возможность продавать свое приложение в любой стране мира и зарабатывать на этом мгновенно.
Алексей Дубовцев
128
Tango Операционная система из будущего
2.7.4
Хочу иметь единую и простую рекламную платформу
Важным источником дохода является размещение рекламы в приложениях. Как разработчик приложения, я хочу иметь простой интегрированный механизм, который позволил бы мне в один клик встроить в мое приложение мини рекламную площадку и зарабатывать на этом. Я хочу, чтобы реклама и статистика были интегрированы вместе, чтобы я точно видел, сколько денег я зарабатываю на показах и переходах. Рекламная площадка должна быть открыта как для рекламодателей, так и для владельцев площадок (приложений), она должна напрямую соединять одних с другими.
129
Алексей Дубовцев
Tango Операционная система из будущего
2.8 Разработчик приложений Разработчик приложений – это программист, инженер, руками которого создаются программы. Как разработчик приложений, я хочу простоты и ясности. Казалось бы, компьютерные программы – это так просто, всего лишь картинка на экране. Но в реальности создание приложений – это нечеловеческие усилия, муки и боль. Тот, кто создавал и выводил приложения на рынок, прекрасно меня понимает. Я пришел к выводу, что создание приложений нужно кардинально упростить. Прежде всего, необходимо сократить количество технологий, которое используется сейчас для создания приложений. Приведу аналогию с двигателями. Автомобильные компании десятилетиями бьются над тем, чтобы сократить количество деталей в автомобилях. Упрощая конструкцию двигателя, они повышают надежность и эффективность конструкции, а также облегчают его производство. IT-компании действуют с точностью до наоборот: из года в год они усложняют архитектуру приложений, добавляют новые технологии и компоненты. Возьмем простой пример. Для того чтобы создать довольно простое, но современное web-приложение, вам необходимо уметь использовать HTML, CSS, JavaScript, Ajax, PHP или ASP.NET, MySQL или Oracle. То есть знать как минимум три языка программирования – JavaScript, PHP и SQL. Что уж говорить о более сложных приложениях. Я не согласен с таким подходом. Технологий должно быть меньше. Изучая технологии более внимательно, я обратил внимание на то, что большинство из них дублирует друг друга.
Алексей Дубовцев
130
Tango Операционная система из будущего
2.8.1
Хочу, чтобы один и тот же код запускался на всех платформах
Зачастую у меня возникает подозрение, что программы пишутся для компьютеров, а не для людей. Происходит это примерно так. Когда рождается идея программы, люди садятся за стол и принимают решение: «Мы делаем программу для Windows» или «Мы делаем программу для iPhone». Я же хочу, чтобы люди садились за стол и говорили: «Мы делаем программу для людей, для наших пользователей». Писали эту программу, и она сразу же запускалась бы везде и всегда.
Любая программа содержит функции. Я хочу один раз написать функцию для пользователя и хочу, чтобы он использовал эту функцию на любых удобных ему платформах. На Winows, Linux, MacOS, Android, iPhone, на других мобильных устройствах. Для меня, как для программиста, устройства должны лишь различаться размером экрана и количеством доступных средств ввода – мышка, тачскрин, клавиатура, кнопки. Но не более того.
131
Алексей Дубовцев
Tango Операционная система из будущего
Я вижу, что операционная система Танго должна иметь возможность запускаться как полноценная операционная система, а также в виде виртуальной машины в контексте всех популярных операционных систем Windows, Linux, MacOs и других. Наиболее важным должно быть удобство пользователей. Если человек уже давно использует Windows, то ему будет крайне сложно сразу же переключиться на другую операционную систему. Порог входа в технологию должен быть минимальным. Пользователь должен скачать маленькое приложение (несколько десятков килобайт), запустить его под своей операционной системой и сразу увидеть рабочий стол Танго. Необходимые части системы должны скачиваться в режиме онлайн по мере необходимости. Программист – создатель приложения – вообще не должен ничего знать о базовой операционной системе. Он должен использовать удобные сервисы операционной системы Танго. С каждым днем появляется больше и больше аппаратных и программных платформ. Платформы распространяются с огромной скоростью, еще вчера никто не слышал о новой платформе, а сегодня уже миллионы людей вокруг используют новую платформу, и инвесторы приложения требуют, чтобы оно работало на новой платформе. Это происходит снова, снова и снова. И процесс этот будет повторяться постоянно. Постоянно появляются новые мобильные платформы и новые мобильные операционные системы, их разработчики убеждают нас в их принципиальной уникальности и инновационности. Хотя на самом деле мобильные телефоны отличаются друг от друга лишь размером, разрешением экрана и количеством кнопок. Я хочу, чтобы приложение, которое я написал на компьютере, запускалось и на мобильном телефоне.
Алексей Дубовцев
132
Tango Операционная система из будущего
Для того чтобы это стало реальностью, операционная система должна иметь возможность запускаться и на мобильном телефоне. Производителям новых мобильных платформ (сотовых телефонов, планшетов и других) должно быть выгодно и удобно устанавливать систему на свои устройства.
133
Алексей Дубовцев
Tango Операционная система из будущего
2.8.2
Хочу знать информацию о качестве сервиса дата-центров
В большинстве случаев, когда нужно выбрать дата-центр для проекта, приходится опираться лишь на косвенную информацию. На сайте датацентра или хостинговой компании обычно публикуется только положительная информация. Можно, конечно, попробовать искать отзывы на форумах или в других местах. Но в любом случае эти источники информации не надежны, единственный реальный способ определить качество услуг – начать использовать сервис.
Телеметрия дата-центра
Операционная система Танго должна поддерживать единый каталог датацентров по миру. Этот каталог должен также постоянно собирать статистику по дата-центрам. Каждый Танго-сервер, установленный в датацентре, должен иметь служебный интерфейс, по которому каталог собирает телеметрию о работе дата-центра:
1. 2. 3. 4. 5. 6. 7.
Степень доступности (количество часов, в которые датацентр был недоступен по техническим причинам). Скорость ответа. Степень загруженности процессоров. Скорость работы дисковых подсистем. Задержки при ответах. Количество сбоев в оборудовании и электропитании. Сетевые задержки. Географические задержки.
Эти данные должны централизованно собираться и предоставляться публично через каталог, чтобы пользователи могли выбрать наиболее подходящий дата-центр, основываясь на точных характеристиках. Заходя в каталог дата-центров для публикации своего приложения, я буду точно знать, что я покупаю за свои деньги, основываясь на точной и достоверной информации.
Алексей Дубовцев
134
Tango Операционная система из будущего
В большинстве случаев, когда я приобретаю услуги дата-центра, это покупка кота в мешке. Я вынужден опираться на рекламную информацию, а также на мнения на форумах. Обычно дата-центры любят писать, что у них обслуживаются чуть ли не все компании из списка «Форбс» и множество популярных в интернете сервисов. Но, когда пытаешься задать конкретные вопросы службе поддержки, они всегда отвечают одно и то же: «Мы не вправе раскрывать конфиденциальную информацию о своих клиентах». Сервисы статистики и телеметрии должны быть частью операционной системы и интегрированы с каталогом дата-центров. Во время публикации своего приложения я хочу выбирать дата-центр не только по имени и цене, я хочу видеть реальную информацию о доступности, скорости отклика, задержках, ширине каналов. Я хочу видеть историческую информацию, для меня очень важно знать, насколько часто в дата-центре происходят сбои, потому что каждая минута простоя – это простой моего сервиса и потеря конечных клиентов.
Выгода и польза
Такой подход выгоден всем:
1.
2.
3.
Владельцем дата-центров. Не нужно рискованно вкладывать деньги в рекламу, можно вкладывать деньги в реальную инфраструктуру и знать, что это окупится. Разработчикам приложений. Качество услуг, предоставляемых дата-центром, будет более высоким и гораздо более предсказуемым. Конечным пользователям. Приложения будут работать гораздо более стабильно и качественно.
Дата-центры смогут бороться за пользователей, инвестируя в инфраструктуру, а также предоставляя качественную поддержку живыми сотрудниками.
135
Алексей Дубовцев
Tango Операционная система из будущего
2.8.3
Хочу иметь единую систему идентификации пользователей, логина
Я хочу использовать единую систему идентификации пользователей. Пользователи не должны каждый раз вводить логин и пароль для входа в систему. Они должны щелкать на значке моего приложения и сразу же попадать в него. С программной точки зрения я хочу иметь простые интерфейсы для получения идентификационной информации о пользователе, а также о его личной информации. Каждый контекст вызова должен быть прозрачно идентификационной информацией о пользователе.
связан
с
Все приложения должны иметь возможность использовать единую систему идентификации пользователей. Эта система должна поддерживаться на уровне ядра операционной системы. Пользователь будет переходить от приложения к приложению «бесшовно», ему не нужно будет постоянно вводить свой пароль. Пользователь просто будет щелкать по ссылкам и открывать новые окна, а каждая новая страница, каждое новое приложение будут автоматически идентифицировать его и сохранять информацию о нем. Приложения будут иметь возможность запоминать настройки и предпочтения пользователя. Зайдя на сайт и настроив что-то под себя, пользователь не должен будет делать это заново, когда попадет туда с другого компьютера. Этот механизм позволит интегрировать приложения друг с другом. Можно будет собирать воедино новые удобные сервисы, делать это абсолютно бесшовно – никаких промежуточных логинов и паролей.
Алексей Дубовцев
136
Tango Операционная система из будущего
2.8.4
Хочу, чтобы порог входа для программистов был максимально низким
Я хочу, чтобы любой человек мог создавать приложения для Танго максимально просто и быстро, не используя сложных инструментов. Важно, чтобы количество предварительных шагов до первого результата было минимальным.
Пример php Для того чтобы сделать простейшее приложение на php, нужно открыть файл в любом текстовом редакторе, набросать пару строчек кода, выложить файл на хостинг (хотя найти хостинг – тоже не такая простая задача), и приложение сразу же заработает.
Пример asp.net Для того чтобы сделать приложение на ASP.NET, необходимо купить и скачать VisualStudio.NET размером в несколько гигабайт, установить ее, создать файл проекта, разобраться в том, куда нужно внести изменения, затем скомпилировать проект, затем опубликовать его на хостинг.
То же самое относится к Java, настольным приложениям и огромному количеству других технологий.
137
Алексей Дубовцев
Tango Операционная система из будущего
Создание приложений
Количество действий, которые должен совершить программист, прежде чем программа заработает, совершенно необоснованно. На мой взгляд, минимальная последовательность действий для программиста должна быть следующей:
1. Создать текстовый файл. 2. Написать код программы. 3. Сохранить файл. 4. Щелкнуть на файле два раза кнопкой мыши. 5. Программа запущена и работает.
Этой последовательности действий можно обучить любого, любой сможет создавать приложения. Чем ниже будет порог входа, тем больше качественных приложений будет для платформы Танго. А как следствие, больше удовлетворенных пользователей.
Алексей Дубовцев
138
Tango Операционная система из будущего
2.8.5
Хочу проектировать приложение визуально
На дворе XXI век, еще чуть-чуть – и у нас будут летающие машины («Возможно», – скептически подумал я), а мы до сих пор в большинстве случаев пишем программный код текстом. На текущий момент не существует действительно серьезных промышленных систем, которые бы позволяли создавать программную логику мышкой. Программная логика, на каком бы языке ни создавалась, состоит из четко определенных и, в общем-то, простых элементов. Каждый элемент может быть представлен графически: в виде геометрической фигуры и текста. Другие элементы могут располагаться внутри него, вовне или иметь связь с ним. Программист должен иметь возможность самостоятельно определить, в каком виде он хочет визуализировать логику – в графическом или текстовом. Также у него должна быть возможность, просматривая графический исходный код программы, переключать нужные ему блоки в текстовый режим и прямо там дописывать и изменять текст программы. В визуальном режиме программист стаскивает элементы логики с панели на рабочую область, соединяя их с другими элементами − такой подход намного более нагляден. Можно перетаскивать целые участки кода, например, отправку сообщений. Естественно, что в визуальном режиме просмотра кода должна быть возможность полноценной отладки и профилирования. Визуальный редактор должен поддерживать замену и выбор визуализаторов. Визуализатор – это код, отвечающий за прорисовку компонента на экране. Пользователи должны иметь возможность создавать и подключать собственные визуализаторы. Такой механизм даст жизнь огромному количеству дополнений, которые позволят разрабатывать код еще более эффективно.
139
Алексей Дубовцев
Tango Операционная система из будущего
Такая функциональность может показаться лишь приятной фишкой. На самом деле ее значимость колоссальна. Сейчас программный код логики могут создавать лишь люди со специфическим типом сознания, это люди, которые в голове представляют логику, могут это мысленное предоставление перенести в текст программы и оперировать им. Графическое предоставление логики прямо на экране существенно расширит круг людей, которые смогут создавать приложения. Эта визуальная система позволит сформировать у людей наглядное представление о программной логике. Не зря детей учат программировать, показывая им блок-схемы – наглядные изображения. У человека можно выделить 5 сенсорных каналов восприятия информации: визуальный, аудиальный, кинестетический, офлакторый (обонятельный) и дигитальный (цифровой). Известно, что большая часть населения – визуалы, воспринимающие информацию образно. По своей природе компьютеры дигитальны (это цифровые устройства), именно поэтому большинство компьютерных гениев не могут общаться с обычными людьми. Они попросту воспринимают информацию совершенно по-другому. Развитие визуальных систем приблизит компьютеры к еще большему количеству людей, сделает их понятными и предсказуемыми.
Алексей Дубовцев
140
Tango Операционная система из будущего
2.8.6
Хочу, чтобы все форматы и протоколы были открытыми – текстовыми
Текстовые протоколы доказали свое преимущество перед бинарными. Не берусь судить почему, но, скорее всего, потому что человек может читать текст, а следовательно, отлаживать такие протоколы намного проще и удобнее, чем любые другие. Также важно, что на всех платформах есть средства работы с текстом. Раньше бинарные протоколы и форматы использовались для того, чтобы оптимизировать размер пакетов или, например, исполняемых файлов. Сейчас это требование уже не имеет значения из-за увеличения объема жестких дисков, скорости их работы, а также пропускной способности сетевых каналов. Безусловно, здесь есть свои ограничения: низкоуровневые транспортные протоколы (вроде IP) не стоит делать текстовыми, это излишне нагрузит сеть.
Все протоколы и форматы должны быть текстовыми и базироваться на формате .xml. Необходимо сделать упор на простоте и эффективности сериализации в этот формат. Открытые протоколы – очень мощный инструмент развития системы.
141
Алексей Дубовцев
Tango Операционная система из будущего
Исключение, пожалуй, составляют такие потоковые данные, как звук, музыка или изображения, а также, возможно, другие форматы, которые я упустил из виду. Их имеет смысл хранить в закодированном виде внутри текстовых файлов. Каждый такой файл должен содержать текстовую, видимую глазу, информацию о том, что это за файл и каким образом его можно открыть и редактировать.
Алексей Дубовцев
142
Tango Операционная система из будущего
2.8.7
Хочу сохранять свои данные в базе просто и сразу, без сложных движков
Мир баз данных – это свой закрытый мир, со своими правилами, технологиями и форматами. Обычный программист представляет базу данных как нечто сложное и большое, что обязательно должно выполняться на сервере. Но это не так, база данных – это довольно простой механизм, позволяющий надежно сохранять данные на диске и делать быстрый поиск по ним. Любая база данных по своей сути поддерживает лишь 4 операции: создание, чтение, обновление, удаление (CRUD – create, read, update, delete). Естественно, должны удовлетворяться требования ACID (atomicity, consistency, isolation, durability). Также база данных предоставляет операции манипуляций с коллекциями данных в виде языка SQL. Я считаю, что эти операции должны быть стандартизированы на уровне языка логики, а база данных должна получать лишь приказ в стандартном формате. Такой подход уже опробован на примере технологии LINQ. Абсолютно правильно формировать строго типизированный приказ на уровне языка и пересылать его в базу данных. При этом, в отличие от технологии LINQ, структура дерева запроса должно сохраняться сквозным образом − от логики до базы. Не должно быть текстовых преобразований. Я считаю, что типы, которые используются в базе данных и языке логики, должны совпадать. Сейчас приходится конвертировать данные при каждом запросе в базу данных, причем делать это необходимо при переносе данных туда и обратно.
143
Алексей Дубовцев
Tango Операционная система из будущего
Подключение базы данных
Я вижу использование базы данных следующим образом:
1.
2. 3. 4. 5.
Программист создает файл базы данных, затем определяет структуру базы данных. Возможно, даже в текстовом файле. Затем делает из логики ссылку на базу данных. В логике сразу же становятся доступными таблицы базы данных. Программист делает один из 4 типов запросов (создание, чтение, обновление, удаление). Данные автоматически сохраняются в файле базы.
Вызов движка базы данных должен происходить прозрачно и незаметно для самого программиста. В манифесте файла базы данных будет указываться, какой движок базы данных предпочитает использовать программист. Должно быть максимально просто переключить базу данных на удаленное использование. Я вижу это так:
1. 2.
Программист копирует файл базы данных на сервер. В приложении (логике) он устанавливает ссылку на файл базы на этом сервере.
Операционная система должна стандартизировать интерфейс взаимодействия с движком базы данных, она должна предоставлять стандарт протоколов и форматов. Сами же движки будут реализовываться сторонними компаниями.
Алексей Дубовцев
144
Tango Операционная система из будущего
2.8.8
Хочу, чтобы любой компонент системы можно было заменить на другой
Система не должна быть монолитной и неизменяемой. Главная задача системы – предоставить открытые стандарты, форматы, протоколы и правила. А любой из компонентов должен быть заменяем и расширяем.
У программистов должна быть возможность заменить сервер баз данных, или сервер приложений, или любой другой компонент системы. Открытая архитектура создаст рынок для разработчиков улучшенных версий компонентов системы и придаст динамику развитию системы. Здесь, конечно, крайне важна безопасность. Система должна быть расширяемой и модифицируемой, но при этом очень важно, чтобы сохранился уровень безопасности и защищенности. Безопасность конечных пользователей крайне важна. Крайне важно, чтобы система не была монолитной и сильно связанной. Система должна быть полностью компонентной и слабо связанной. Система – это, прежде всего, не реализации компонентов, а определение стандартов, форматов и принципов обмена информацией.
145
Алексей Дубовцев
Tango Операционная система из будущего
Невозможно реализовать оптимально все компоненты операционной системы, всегда будет возможность улучшить эти компоненты и заставить работать их быстрее. У пользователей должна быть возможность обновлять части системы самостоятельно, а не ждать годами обновлений от производителя. Огромное количество талантливых программистов сделают для системы множество полезных улучшений, система станет лучше, быстрее, качественнее. А выиграют от этого в итоге конечные пользователи. Было бы здорово применить в системе паттерны инверсии контроля с контейнерной загрузкой и жесткими контрактами. Это внесло бы ясность и понятность в механизмы замены и расширения компонентов.
Алексей Дубовцев
146
Tango Операционная система из будущего
2.8.9
Хочу писать логику на том языке, который мне нравится
Я хочу писать программную логику на том языке, который мне нравится. Я хочу, чтобы операционная система поддерживала стандартные механизмы выбора компилятора, чтобы это можно было делать крайне просто, указав лишь в текстовом файле ссылку на него.
Пример
ShowMessage("Helloworld");
Виртуальная машина исполнения логического кода должна являться неотъемлемой частью операционной системы. Она должна получать на входе объект Logic, читать информацию о компиляторе. Передавать содержимое объекта этому компилятору, если его нет локально, то скачивать его. Затем, после компиляции, запускать подготовленный код на исполнение. Очень важно, чтобы программисты использовали те языки и диалекты, которые им нравиться. Такой подход гарантирует, что не только использование языков будет максимально просто, но и введение новых языков в жизнь будет очень простым.
147
Алексей Дубовцев
Tango Операционная система из будущего
Например, создать программу на python будет крайне просто.
Пример
defparrot(voltage, state='a stiff', action='voom'): print "-- This parrot wouldn't", action, print"if you put", voltage, "volts through it.", print"E's", state, "!" d = {"voltage": "four million", "bleedin' demised", "action": "VOOM"} parrot(**d)
"state":
Операционная система всегда будет знать, как ей выполнить участок логики. Она всегда сможет скачать необходимый компилятор, преобразовать при помощи него текст в байт-код, а затем откомпилировать его в машинный код.
Алексей Дубовцев
148
Tango Операционная система из будущего
2.8.10
Хочу иметь одни и те же инструменты на все случаи для работы с кодом
Я решительно не понимаю, почему для работы с серверным кодом существует более или менее нормальный отладчик и профайлер, для работы с кодом базы данных приходится использовать совершенно другие инструменты, когда же речь заходит о работе с клиентским кодом, у меня вообще начинает дергаться правый глаз. А ведь во всех случаях вопрос идет о программной логике, представленной в виде текста. Я хочу запускать одну и ту же логику на всех платформах. Я хочу отлаживать ее при помощи одних и тех же инструментов. Сложно? Отнюдь. Ведь сервер и браузер клиента отличаются по сути лишь названиями, и тот и другой выполняют программную логику. Изначально в проекте операционной системы должны быть заложены механизмы единой виртуальной машины исполнения логики. В этом случае разработчикам серверных и клиентских приложений не нужно будет ничего изобретать, они лишь подключать эти механизмы операционной системы в свои приложения. А довольные программисты будут использовать стандартные языки и инструменты везде, без ограничений. Сложно переоценить важность такой стандартизации. Сейчас сложилась довольно странная ситуация – каждый участок программы (клиентский, серверный, визуальный, базы данных) пишут разные программисты. Все бы ничего, если бы эти люди не использовали совершенно разные технологии и языки программирования. Из-за того что технологии разные, люди, которые их используют, чаще всего с трудом понимают друг друга. А это, в свою очередь, накладывает отпечаток на выпускаемый программный продукт. Архитектура продуктов становится запутанной, некачественной, сложной и крайне плохо поддерживаемой.
149
Алексей Дубовцев
Tango Операционная система из будущего
Конечно, со стороны очень увлекательно смотреть на людей, которые знают множество технологий, техник и различных крутых приемчиков. Но в жизни побеждают универсальные, «топорные» и простые методы.
«Чем кунг-фу и карате, лучше старенький ТТ»
Алексей Дубовцев
150
Tango Операционная система из будущего
2.8.11
Хочу моментально разворачивать приложения в сети
Я хочу разворачивать свои приложения в сети моментально. После того как я набросал прототип приложения, я хочу моментально положить его на хостинг в дата-центр и показать своим заказчикам и друзьям. Я хочу, чтобы процесс выбора дата-центра был максимально простым и удобным. Я хочу выбрать из общего каталога подходящий мне дата-центр, нажать кнопку «Опубликовать», и после этого приложение сразу же стало бы доступно в сети. Очень важно в основе публикаций приложений использовать механизм простого копирования файлов. Это существенно снизит порог входа в технологию. Не нужно сложных протоколов и механизмов для того, чтобы опубликовать файлы на сервер, нужно лишь просто скопировать их в папку.
151
Алексей Дубовцев
Tango Операционная система из будущего
2.8.12
Хочу иметь четкую и логичную систему версионности и ссылок во всем
Система версионности и ссылок − это, пожалуй, самый важный механизм в операционной системе. Значимость и важность этого механизма не вполне очевидна на первый взгляд, но от него зависит не просто многое, а все. Все компоненты операционной системы используют другие и ссылаются друг на друга именно при помощи этого механизма. Все приложения используют эти же механизмы. Важность системы версионности в операционной системе можно лишь сравнить со значимостью турбинной лопатки в современном истребителе. Истребитель − это крайне сложный, высокотехнологичный аппарат, напичканный электроникой и изощренными механизмами, тем не менее вся эта начинка не стоит и выеденного яйца без маленькой железки под названием «турбинная лопатка». Турбинная лопатка − это небольшой кусок металла, который находится в рабочей камере двигателя и приводит в движение турбину. Суть этой «железки» состоит в том, что она может существовать в среде, температура которой выше, чем ее собственная температура плавления. Этот фокус сродни тому, как если бы вам удалось положить сливочное масло в микроволновку, а оно бы там не растаяло. Без турбинной лопатки двигатель работать не будет, и самолет никуда не полетит, а на земле вся его начинка абсолютно бесполезна. Система ссылок и версионности фундаментальный принцип.
должна
обеспечивать
один
Фундаментальный принцип Код должен всегда использовать именно тот компонент, на который изначально ссылался.
Алексей Дубовцев
152
Tango Операционная система из будущего
Основная проблема в системах ссылок и версионности заключается в том, что вы пишете код, который ссылается на одни компоненты, а потом вдруг оказывается, что он исполняется на машине клиента, используя другой компонент, и все летит в тартарары.
Пример 1 Вы пишете код, используя некую библиотеку, например, somelibrary.dll. Потом распространяете приложение всем своим пользователям, а у них другое приложение обновляет версию библиотеки somelibrary.dll на более новую или старую. И все! Ваше приложение тут же перестает работать корректно, пользователь недоволен, у вас головная боль.
Microsoft официально называет эту проблему «DLL hell (DLL-ад)». Это происходит сплошь и рядом. Даже страшно подумать, сколько человеко-веков потрачено на решение подобных проблем.
Пример 2 Вы пишете код html, тестируете его в своем браузере. Выкладываете приложение в сеть, а пользователи открывают код уже при помощи другого браузера, и все отображается неверно.
Произошло следующее: компонент, на который вы рассчитывали, подменили и подсунули вам другой. Вы получили не то, что изначально использовали, а в итоге пострадали конечные пользователи. Я хочу, чтобы мой код всегда исполнялся с теми компонентами, которые я выбрал, когда подключал их к моему коду. Код должен всегда использовать именно тот компонент, на который изначально ссылался.
153
Алексей Дубовцев
Tango Операционная система из будущего
Если этот принцип нарушается, то код начинает работать нестабильно, с ошибками или вообще перестает работать. Система должна быть максимально стабильной и надежной, она никогда не должна подводить пользователя. Также система не должна подводить программы, они должны получать то, на что рассчитывали. Код должен исполняться всегда корректно, вне зависимости от изменений в зависимых библиотеках.
Алексей Дубовцев
154
Tango Операционная система из будущего
2.8.13
Хочу писать социальные комментарии прямо
в коде
Общение с создателем
Современные программные системы очень сложны. Разобраться в том, что написал другой программист, порой слишком сложно. Когда просматриваешь код, хочется посоветоваться с его создателем и высказать свои замечания. Но для этого нужно:
1. 2. 3. 4. 5.
Связаться с ним. Сообщить, какой проект имеется в виду. Сообщить, в каком файле содержится код. Сообщить номер строки. Перейти к сути вопроса.
Слишком сложно! Я хочу, чтобы была возможность кликнуть на любую строку кода и оставить свой комментарий создателю. Вставить прямо в код социальный комментарий, начать обсуждение прямо в коде. Как только я создам социальный комментарий в коде, всем связанным с ним людям придет уведомление. Они смогут подключиться к обсуждению и найти наилучшее решение для возникшего вопроса. Эта возможность кардинально повысит эффективность работы программистов. Во-первых, создание кода перестанет быть делом одиночек, оно превратится в социальную игру, в обсуждение, в жизнь. А все живое, как известно, быстро развивается и эволюционирует. Вовторых, очень важная информация будет храниться вместе с кодом, и всегда можно будет понять, почему принято то или иное решение. Эта функция должна предоставляться единой системой контроля версий и быть интегрирована с социальными сервисами операционной системы.
155
Алексей Дубовцев
Tango Операционная система из будущего
Социальные комментарии выведут качество программного кода на новый уровень. В особенности – кода самой системы, который, естественно, должен быть открыт. Дело в том, что программный код промышленных систем намного сложнее, чем это могло бы показаться на первый взгляд. Код одновременно находиться во множестве плоскостей требований:
1.
Плоскости требований
2. 3. 4. 5. 6.
7. 8.
Функциональная плоскость. Код должен выполнять возложенные на него функции. Нагрузочная плоскость. Код должен уметь работать с огромными массивами информации. Ресурсная плоскость. Код должен максимально эффективно использовать ресурсы системы. Оптимизационная плоскость. Код должен наиболее оптимально использовать механизмы системы. Алгоритмическая плоскость. Код должен использовать наиболее эффективные алгоритмы (O(n) нотации). Архитектурная. Код должен использовать оптимальные паттерны и правильно вписываться в общую архитектуру системы. Плоскость безопасности. Код должен быть устойчив к различного рода атакам. Лексическая плоскость. Код должен использовать правильные лексические возможности языка, на котором он написан.
Для того чтобы создать хорошую систему, необходимо, чтобы в каждой из плоскостей код был написан наиболее эффективно.
Алексей Дубовцев
156
Tango Операционная система из будущего
Сложность задачи состоит даже не в том, что ни один человек не в состоянии удержать в голове все плоскости, а в том, что при попытке удовлетворить всем требованиям неизбежно происходит столкновение с противоречиями. Например, после того как в код вставлены проверки на безопасность, он начинает выполняться на 40 % медленней, что неприемлемо с точки зрения производительности. Для поиска идеального решения обычно приходится консультироваться с множеством специалистов в различных областях. Искать вместе с ними компромиссы и творческие решения. Социальные комментарии станут мощным инструментом повышения качества кода. Каждый сможет высказать свое мнение о коде. Проблемы не останутся незамеченными, код будет более надежным, безопасным, производительным. Качество системы существенно повысится, от этого выиграют и конечные пользователи, и программисты.
157
Алексей Дубовцев
Tango Операционная система из будущего
2.8.14
Хочу иметь простую систему создания и лицензирования компонентов
Большинство программных продуктов имеют много общих и похожих частей. Полностью уникальных программ нет, все используют сторонние компоненты. Компоненты позволяют быстро создавать качественные продукты для конечных пользователей. Чем больше компонентов существует для программной среды, тем проще разрабатывать приложения для нее. Как здорово, когда ты можешь просто и быстро подключить компонент, который дает тебе необходимую функциональность, а не разрабатывать его самому. Например, можно быстро подключить красивое меню к приложению или какой-нибудь хитрый сетевой протокол. Сам по себе компонент является продуктом. И иногда создание компонента – гораздо более трудоемкий и сложный процесс, чем создание конечной программы, которая будет его использовать. Разработчики компонентов должны знать, что их труд окупится. Танго должна поддерживать встроенную систему лицензирования компонентов. Создатели компонента должны получать достоверную информацию о том, какие приложения его используют и сколько пользовательских инсталляций было сделано.
Алексей Дубовцев
158
Tango Операционная система из будущего
Политика лицензирования
Должна быть возможность гибко определять политику лицензирования: 1. 2. 3. 4. 5. 6. 7.
На приложение в целом. На количество пользовательских инсталляций. Географически. Персонально. Корпоративно. По времени суток. Без ограничений.
Если создатель приложения не заплатил за использование компонента, то у его владельца должна быть возможность отключить компонент для приложения. Такие меры стимулируют рынок для создания огромного количества качественных компонентов. А как следствие, выиграют конечные пользователи.
159
Алексей Дубовцев
Tango Операционная система из будущего
2.8.15
Хочу иметь единый каталог компонентов
Я хочу иметь единый каталог компонентов. Единое место, где я смогу выбирать все компоненты, которые существуют для платформы Танго. Любой разработчик должен иметь возможность опубликовать там свой компонент. Прямо внутри каталога должна быть возможность воспользоваться демоверсией компонента, если это, конечно, возможно технически. Я вижу это следующим образом:
Подключение компонентов
1. 2. 3. 4. 5. 6. 7.
В среде разработки приложений должна быть кнопка «Каталог компонентов». Пользователь нажимает на нее и видит каталог компонентов. Он выбирает параметры, например, визуальные компоненты – меню. Перед ним выпадает список из всевозможных меню. Он смотрит демонстрационную версию меню. Нажимает «Добавить в мое приложение». Меню появляется в приложении пользователя.
Этот процесс должен быть крайне простым и понятным. Программисты не должны ничего скачивать, устанавливать, настраивать, подключать – все должно быть быстро, понятно, в один клик. Такой подход позволит обучить множество новых программистов полностью использовать возможности системы и открыть для них весь потенциал платформы. Подключение сторонних компонентов не должно быть «темной магией». Любой должен уметь делать это в один клик.
Алексей Дубовцев
160
Tango Операционная система из будущего
2.8.16
Хочу иметь единую систему управления проектами и исходным кодом
Создание любой программы – это проект, и в конечном итоге он сводится к написанию текста программного кода. Для того чтобы проект был успешен, необходима хорошая система управления самим проектом и исходным кодом. Эти системы должны быть интегрированы и связаны друг с другом. Система управления исходным кодом должна поддерживать социальные функции, чтобы программисты могли общаться и обмениваться знаниями об исходном коде прямо внутри системы. Управление проектом должно позволять связывать все данные о проекте: задачи, требования, программистов и исходный код – в единое целое информационное полотно. Программные системы с каждым днем становятся все сложнее и сложнее, нужен новый подход для борьбы со сложностью. Развитие проекта должно полностью отражаться в системе управления проектом, быть интегрировано со средой разработки. Только тогда можно будет развивать и поддерживать сложные системы. Я хочу, чтобы можно было просто и быстро создавать проектную площадку, добавлять на нее людей, программный код, документы. Это должно происходить в один клик. Члены проектной команды должны иметь возможность общаться друг с другом. Создание каждого проекта – это социальный процесс. И этот процесс должен быть самоорганизующимся. Современные системы настолько сложны, что уже невозможно планировать их разработку и поддержку централизованно.
161
Алексей Дубовцев
Tango Операционная система из будущего
2.8.17
Хочу иметь единую систему удаленного вызова объектов
Я хочу, чтобы система Танго была максимально ясной и простой. Абсолютно для всех, для программистов – в первую очередь. А в особенности тогда, когда программист сталкивается с задачей сделать удаленный вызов с одного компьютера на другой.
Удаленный вызов
Все, что он должен сделать, это: 1. 2.
На сервере опубликовать метод для удаленного вызова. На клиенте указать, что метод будет вызываться удаленно и ссылку на сервер.
Когда я сталкиваюсь с вопросом удаленного вызова, я не хочу выбирать между технологиями, я не хочу пытаться понять, какая же технология используется на другом конце, чтобы подстроиться под нее. Моя голова занята конкретными прикладными вопросами. Например, каким образом отправить приказ на биржу о покупке акций или SMS-сообщение пользователю; я не хочу думать о формате. Методы должны вызываться по ссылке, достаточно задать ссылку его месторасположения, ничего больше. Эта технология всем понятна. Ей будет легко обучить всех. Безусловно, должна быть возможность настраивать сериализаторы и параметры транспортного уровня, но это нужно делать только при желании. В остальных случаях все должно происходить полностью автоматически.
Алексей Дубовцев
162
Tango Операционная система из будущего
2.8.18
Хочу иметь общую систему телеметрии и
логов Любое приложение выводит информацию о своей работе: ошибки, сбои, предупреждения, служебные замечания. Я хочу, чтобы была единая и простая система публикации и просмотра этих сообщений. Где бы ни находилось мое сообщение: на сервере, на локальном компьютере, на мобильном телефоне – я хочу указать точку публикации телеметрических сигналов приложения. А затем просматривать оттуда сообщения при помощи графического инструмента.
Телеметрия
Сообщения должны быть структурированы по: 1. 2. 3. 4. 5. 6. 7.
Серверу. Приложению. Типу. Дате. Сообщению. Компоненту. Дополнительным пользовательским полям.
Должна быть удобная система поиска сообщений, отчетов и статистики. Должна быть возможность дополнять логику поведения, например, если пришло сообщение об ошибке какого-то критически важного приложения, то необходимо послать SMS или вызвать программный код.
163
Алексей Дубовцев
Tango Операционная система из будущего
Подключение этой системы должно быть максимально простым:
Телеметрия. Подключение
1.
Строчка записи в лог телеметрии:
a. TelemetryLog.Write(new TelemetryObject() {Message = "hello world", Type=Information}); b.
2.
И строчка в конфигурационном файле со ссылкой на сервер, куда все это отправится. Затем необходимо лишь открыть консоль просмотра логов, подключиться и следить за тем, как приходят новые сообщения.
Система телеметрии должна поддерживать числовые датчики с дополнительной логикой. Приложение должно иметь возможность опубликовать датчики и записывать в них значения. Например, количество транзакций в секунду, общее количество транзакций и т.п. Должна быть возможность взаимодействовать с датчиками удаленно, чтобы для сложных распределенных систем наблюдать их из одной точки централизованно. Также необходима система открытого API, чтобы можно было публиковать датчики в отчетах с красивыми динамичными графиками. Всегда крайне важно знать, что творится внутри приложения. Без системы телеметрии любое приложение – это черный ящик, не поддающийся контролю. Простая, удобная и понятная система телеметрии даст программистам много полезной информации о работающих приложениях, а как следствие, приложения станут более качественными. В итоге выиграют конечные пользователи. Система телеметрии, с одной стороны, должна быть максимально проста для того, чтобы можно было использовать ее сразу, без дополнительных настроек и «магических» действий. Но также важно иметь возможность расширять систему, например, записывать в лог структурированные объекты, чтобы их могли использовать сложные системы анализа и отчетов.
Алексей Дубовцев
164
Tango Операционная система из будущего
2.8.19
Хочу иметь визуальные инструменты для всего
Я верю в то, что время, когда нужно было писать множество непонятных скриптов или использовать сложные параметры командной строки, прошло. На любой случай должны быть визуальные конструкторы, система должна быть полностью управляема мышкой. Чем больше в системе визуальных инструментов редактирования, тем проще обучить новых людей пользоваться системой. Гораздо проще обучить человека перетаскивать квадратики на экране, добиваясь результата, чем писать километры текста на странном, придуманном языке. Многие просто не могут уложить в своей голове, как работают эти тексты, именно поэтому программирование для них недоступно. Перетаскивание квадратиков понимают все. Визуальные инструменты необходимы для программирования логики, стилей, визуальной разметки, баз данных, настроек приложений, xml-кода.
165
Алексей Дубовцев
Tango Операционная система из будущего
2.8.20
Хочу иметь совместимость со старым кодом и старыми компонентами
Развитие информационной индустрии идет по экспоненте. Еще совсем недавно мы жить не могли без множества программ для MS-DOS, сегодня их количество выглядит смехотворным по сравнения с софтом, написанным под Windows, Linux и MacOS. Завтра количество программного обеспечения и информации увеличится на порядки. Новые программы постоянно вытесняют старые – это естественный процесс. Тем не менее хотелось бы иметь возможность совместимости со старым кодом. Должна быть возможность запускать старый код и старые библиотеки. Сейчас создано множество технологий, позволяющих делать это, – эмуляторы, интерпретаторы, виртуальные машины. Просто так отказываться от всех старых наработок неразумно.
Алексей Дубовцев
166
Tango Операционная система из будущего
2.8.21
Хочу, чтобы была возможность защищать свою интеллектуальную собственность
С одной стороны, я за полную открытость, за текстовые протоколы и открытые форматы, но, с другой стороны, необходима возможность защиты интеллектуальной собственности. Ведь без нее невозможна коммерциализация продукта, а если нет денег, то нет развития и обновления. Люди, создающие программы, должны знать, что не зря тратят свои деньги, силы и время. Они должны знать, что им воздастся за их труд. Я считаю, что необходимо двигаться по пути обфускации, отставляя полностью открытые форматы и протоколы. Обфускация – это автоматизированное запутывание кода таким образом, чтобы машина могла его исполнять, а человек уже не мог прочитать. Этот подход хорошо себя зарекомендовал, исследования в этой области ведутся непрерывно. Уже сейчас есть очень продвинутые обфускаторы, которые делают невозможным понимание исходного текста программы, хотя он вроде бы и открыт. Обфускаторы изменяют название переменных, методов, разбивают код на новые участки, делают дополнительные непонятные вызовы. Главное – не перепутать и не использовать бинарные и другие сложные протоколы и форматы для защиты данных, как это иногда делают. Протоколы и форматы должны быть открытыми и понятными, а защита должна быть специализированной и надежной. Нужно использовать инструменты по их назначению. Также обфускацию необходимо совмещать с технологией динамической защиты, которая должна предоставляться платформой. Участки кода, относящиеся к защите, должны постоянно обновляться и видоизменяться, чтобы их невозможно было автоматизировано отловить и отключить.
167
Алексей Дубовцев
Tango Операционная система из будущего
2.8.22
Хочу, чтобы в операционную систему была встроена поддержка транзакций
Транзакции крайне важны для управления состояниями вызова и сохранностью данных. Многие системы обязательно должны поддерживать транзакции. Я хочу, чтобы система автоматически и прозрачно для пользователя поддерживала транзакции. Мне, как программисту, достаточно будет лишь открыть контекст транзакции и закрыть его (подтверждением или отменой). Операционная система должна автоматически обработать все вызовы, поддерживающие транзакции, и подключить распределенный координатор транзакций, если это необходимо. Сам механизм должен быть скрыт и абсолютно незаметен.
Алексей Дубовцев
168
Tango Операционная система из будущего
2.8.23
Хочу, чтобы профайлер и отладчик работали удаленно
Очень часто бывает так, что разрабатываешь приложение на своем компьютере, и все отлично. Но стоит только разместить его на другом, и все идет наперекосяк. Постоянно возникают сбои, логика работает не так, как нужно. В этом случае приходится идти на хитрость, вводить дополнительную систему логов, замерять скорости вызовов между методами и выводить на консоль, а если это клиентская страница, и приложение написано на JavaScript под браузер, то можно смело начинать держаться за глаз, чтобы не дергался. Я хочу иметь возможность подключиться к любому компьютеру, на котором запускается мой код, и удаленно в режиме реального времени отлаживать и профилировать код. Я хочу в действительности видеть, что происходит внутри кода, а не по «кривым зеркалам» логов. Для меня важно ставить точки остановки и пошагово исполнять программу, смотреть на значения переменных и памяти, иметь возможность вмешиваться в управление программной логики, изменять значение переменных. Наличие этих инструментов обязательно! Программист должен обладать полной информацией, а не базировать свои рассуждения на догадках.
169
Алексей Дубовцев
Tango Операционная система из будущего
2.8.24
Хочу иметь встроенный сервер конфигураций
Хочу иметь возможность централизованно управлять конфигурацией распределенных приложений. Если у приложения множество узлов и серверов, то должна быть возможность подключить их всех к одной точке, из которой они будут получать свои настройки и конфигурацию. Я не хочу каждый раз при изменении настроек обновлять их в каждой установленной версии, на каждом серверном узле. Я хочу сделать это один раз, и обновление конфигурации должно произойти автоматически. Сам механизм конфигураций должен быть стандартизирован, это позволит применять механизмы автоматизированного управления конфигурациями для всех приложений через единую консоль администратора. Будет возможно применять сложные корпоративные политики администрирования к любым приложениям, контролируя настройки софта централизованно.
Алексей Дубовцев
170
Tango Операционная система из будущего
2.8.25
Хочу иметь открытый механизм локализации приложений
Я хочу, чтобы мои приложения использовались по всему миру людьми разных национальностей, вероисповеданий и культур. Естественно, что все эти люди будут говорить на разных языках, и они хотят видеть мое приложение на своем родном языке. Должна быть возможность опубликовать в открытом виде в единой системе все ресурсы приложения, которые нужно локализовать (строки, картинки и т.п.). Любой пользователь сможет зайти туда и самостоятельно сделать перевод приложения на нужный для него язык. Обычно вокруг популярных приложений складывается сообщество пользователей, которые готовы помогать любимому продукту, развивать его и вносить свой вклад. Естественно, что эти пользователи будут готовы перевести программу на свой родной язык, необходимо только дать им для этого стандартизированный и открытый инструмент. Любой пользователь сможет подключить локализацию, сделанную другими пользователями, для его любимой программы.
171
Алексей Дубовцев
Tango Операционная система из будущего
2.9 Верстальщик Как-то давно я разговаривал с одним промышленником, который занимается тяжелым машиностроением. Тогда я пытался убедить его в перспективности компьютерных технологий, развитии сетей, баз данных, распределенных приложений. Использовал кучу заумных и, как тогда мне казалось, важных слов. Этот человек внимательно меня слушал, не перебивая. Затем сказал примерно следующее. «Леша, мое поколение мыслит совершенно другими категориями. Для меня «серьезно» – это построить крупный завод с огромными станками, от которых пахнет металлом, а телом чувствуется их мощь, когда проходишь рядом. Вы же, молодые, носитесь с какими-то картинками на светящихся панелях и считаете, что это круто. А для меня это всего лишь картинки – и не более». Именно тогда я осознал, что для большинства людей на планете компьютерные системы – это, прежде всего, картинки на экране – и не более. Инженеры и программисты представляют программы структурировано и четко, держа в своей голове технические понятия и категории.
Алексей Дубовцев
172
Tango Операционная система из будущего
Представление обычных людей о программах кардинально отличается. Люди видят в программах, прежде всего, картинки.
Все, что не представлено визуально, воспринимается пользователями крайне абстрактно и не имеет для них значения. Для пользователя программа – это то, что он видит на экране. Верстальщики – это люди, которые формируют облик программы для пользователей. От их работы зависит, как люди в конечном итоге будут воспринимать программу. Насколько бы ни был гениален код приложения, если интерфейс программы убог, пользователи будут о ней не лучшего мнения. В наш век, в первую очередь, важна упаковка, а не содержимое.
173
Алексей Дубовцев
Tango Операционная система из будущего
2.9.1
Хочу делать приложения только один раз для всех платформ
Знаете ли вы, что такое ад верстальщика? Ад верстальщика – это когда необходимо сделать действительно совместимую верстку, которая бы корректно отображалась на всех возможных платформах.
Сейчас существует пять самых популярных браузеров: InternetExplorer, Firefox, Chrome, Opera, Safari. Эти браузеры могут запускаться на различных операционных системах (Windows, MacOs, Linux), внутри разных устройств (персональные компьютеры, нетбуки, мобильные устройства, планшеты). Всего существует более 100 комбинаций платформ, под которыми должен корректно показываться визуальный код. Существуют даже специализированные сайты, вроде этого http://crossbrowsertesting.com/, которые помогают верстальщикам и программистам клиентской части тестировать приложения под различными платформами.
Алексей Дубовцев
174
Tango Операционная система из будущего
Сделать так, чтобы один и тот же код показывался корректно на всех платформах, практически невозможно. Те же люди, которые умеют заставить код корректно отображаться хотя бы на популярных платформах, приравниваются к «джедаям» HTML и CSS. Им приходится использовать недокументированные особенности браузеров и всевозможные трюки, чтобы один и тот же код браузеры воспринимали так, как нужно. Например, некоторые браузеры воспринимают код, который написан в комментариях, другие этот код игнорируют. Такие особенности позволяют вносить корректировки под каждый браузер в отдельности. Это ненормально. Я хочу, чтобы код, который я написал, работал корректно на всех платформах и всех устройствах. Я хочу один раз написать код, протестировать его у себя на компьютере и быть уверенным, что он будет корректно отображаться везде, на любом устройстве и программной платформе. Даже на мобильной. Ведь мобильная платформа отличается лишь размером экрана и способом ввода, это не должно влиять на корректность отображения графики кардинальным образом. Возможно ли это технически? Ответ – проще простого. Необходимо явным образом указывать в коде ссылку на движок, который будет отрисовывать визуальный код.
Пример
Заголовок
175
Алексей Дубовцев
Tango Операционная система из будущего
2.9.2
Хочу расширять модель верстки новыми компонентами
Я хочу, чтобы системы верстки использовали настоящие компоненты. Компоненты – в полном смысле этого слова. Такие, которые можно подключить двумя-тремя строками кода и сразу же начать их использовать. Я не хочу, когда мне необходимо меню, полностью копировать его код внутрь своего приложения, а затем часами разбираться, как интегрировать с остальными элементами. Я хочу иметь возможность быстро и удобно подключать необходимые компоненты.
Пример
<Menu reference="www.goodguy.com/components/menu/v1”> - News
- Products
- About
- Contacts
10,2,3,53,34,23
Алексей Дубовцев
176
Tango Операционная система из будущего
Эта, казалась бы, простая функциональность крайне важна для всей компьютерной индустрии. Компьютерные системы сложны, они включают в себя множество серверов, узлов связи, коммутаторов, маршрутизаторов, а также мириады других малопонятных устройств и еще менее понятных программ. Тем не менее конечный пользователь всегда смотрит на экран. Для него визуализируются данные, которые до этого проделали не самый простой путь до его монитора. Развитие визуальных систем существенно упростит создание приложений, а как следствие, появится множество качественных программ, от чего, конечно, выиграют конечные пользователи.
177
Алексей Дубовцев
Tango Операционная система из будущего
2.9.3
Хочу писать логику для клиентских приложений на своем любимом языке
Я решительно не понимаю, почему я ограничен единственным языком JavaScript для написания клиентской логики. Этот язык, по откровению его создателей, был написан за 10 дней, чуть ли не на пьяную голову. Это нечто лишь похоже на язык программирования, примерно так же, как печная труба похожа на ракету издали. Пользовательские страницы становятся с каждым днем все сложнее и сложнее, и язык для управления элементами на странице должен быть полноценным и удобным. Помню, как-то мне пришлось написать на JavaScript векторный редактор, который работал в браузере. Сам код редактора был не так уж сложен, но вот «особенности» языка чуть было не довели меня «до ручки». Я хочу иметь на клиентской стороне полноценные инструменты, хороший отладчик и профилировщик, все то, что я привык использовать для серверного кода. Код есть код, и я считаю, что не стоит отдельно разделять его на клиентский и серверный.
Алексей Дубовцев
178
Tango Операционная система из будущего
Я вижу использование кода на клиентских страницах подобным образом.
Пример
using Tango.Core; class NodeBox : Node { public Show() { MessageBox($(“NodeSelector”).Text().Trim()); } }
179
Алексей Дубовцев
Tango Операционная система из будущего
2.9.4
Хочу использовать сложные каскадные таблицы стилей
Каскадные таблицы стилей – это незаменимый инструмент в арсенале верстальщика. Меня всегда восхищали проекты, вроде http://www.csszengarden.com/, они наглядно раскрывают возможности технологии CSS. А использование CSS-фреймворков, вроде http://www.blueprintcss.org/ или http://960.gs/, открывает поистине неограниченные возможности верстки. Но сам стандарт языка CSS достаточно малофункционален. Он не поддерживает огромное количество возможностей, которые не просто бы облегчили жизнь верстальщикам, но и вывели визуальный дизайн страниц на совершенно новый уровень. Наследование стилей, динамический расчет значений, параметры стилей – вот только малая часть возможностей, которая должна присутствовать в механизме стилей. Тем не менее важно не увлекаться усложнением, стандарт должен быть максимально прост, чтобы порог входа в технологию был максимально низким. Верстальщик должен самостоятельно выбирать, какую технологию стилей он хочет использовать. Я привожу вариант технического решения этой проблемы в пункте 5.7.5 «Архитектура. Микроуровень. Механизм стилей».
Алексей Дубовцев
180
Tango Операционная система из будущего
2.10
Администратор приложения
Администратор – это тот парень, который ничего не делает, но все его системы при этом отлично работают. Администраторы настраивают системы и отвечают за их эксплуатацию, от них зависит, насколько использование системы будет казаться естественным и простым. Если у них не будет достаточно инструментов и механизмов, то придется делать множество операций вручную, а это затруднит эксплуатацию систем и в конечном итоге плохо скажется на самих пользователях.
181
Алексей Дубовцев
Tango Операционная система из будущего
2.10.1
Хочу иметь возможность удаленно подключаться к компьютеру и управлять им
Очень часто возникает потребность удаленно настроить какую-нибудь программу или удаленно помочь кому-нибудь. Я хочу, чтобы подключение к удаленному рабочему столу было максимально простым – как звонок. Если с другой стороны находится пользователь, то он просто должен принять входящий звонок, и я моментально увижу его текущий рабочий стол и смогу работать мышкой и клавиатурой, как будто я нахожусь вместе с ним за его компьютером. Это должно быть просто и осуществляться в один клик, это должно быть свойством операционной системы.
Удаленный доступ
Зачастую бывает так, что хотел бы помочь человеку, но словами объяснить совершенно невозможно, а у него не стоит ни одна программа, которая бы позволяла залезть напрямую к нему на компьютер. Или же у него есть возможность удаленного подключения, но нет публичного IP-адреса, по которому можно было бы подключиться, или же адрес есть, но он не знает, как его посмотреть. Я бы хотел максимально упросить этот процесс:
1. 2. 3.
Найти человека в друзьях. Нажать «Подключиться к экрану». Действовать.
Администратор должен иметь возможность управлять любым количеством компьютеров через один экран, не вставая со своего удобного и насиженного места.
Алексей Дубовцев
182
Tango Операционная система из будущего
2.10.2
Хочу иметь встроенные механизмы масштабирования приложений
Современная операционная система – это платформа для приложений, масштабируемых в размерах всей планеты в количествах сотен миллионов пользователей. Система должна поддерживать встроенные автоматизированные механизмы масштабирования, которые были бы эффективны, а главное – дешевы для пользователей. Во-первых, необходимо усовершенствовать систему ссылок. При вводе в строку браузера ссылки, например, www.os-tango.com, браузер получает IP-адрес сайта, например, такой: 89.253.243.116. И если миллион пользователей одновременно наберет эту ссылку, то все получат одинаковый адрес, все пользователи попытаются одновременно подсоединиться по этому адресу, и в этот момент сайту настанет конец. Прежде всего, возникнет затор на уровне самого сервера, который не сможет обработать такое количество подсоединений, а затем трафик переполнит и сетевые узлы.
Таблица адресов
Механизм разрешения имен должен быть более интеллектуален, он должен получать не один адрес, а таблицу адресов с информацией об их доступности (загрузке).
183
os-tango.com IP-Address 1 – 100 %. IP-Address 2 – 80 %. IP-Address 3 – 10 %.
Алексей Дубовцев
Tango Операционная система из будущего
Затем выбрать один из этих адресов и подсоединиться к нему. Если адрес не отвечает, то всегда можно переключиться на другой. Разработчику останется лишь предоставить информацию сервису имен о своих серверах. Сервис имен, по-видимому, должен являться частью глобальных сервисов Танго и предоставлять открытый и стандартизированный API. Также сервер имен должен определять географическое местоположение пользователя и выдавать ему наиболее близко расположенный сервер. Важнее всего сделать поддержку этого протокола на уровне клиентских машин, сделать этот протокол расширяемым и обновляемым для того, чтобы впоследствии не пришлось городить обходные пути на сетевом уровне, чтобы «разрулить» изначально неоптимальные сетевые потоки. Стандартизация сервиса разрешения имен и тесная интеграция его с операционной системой позволит развивать облачные сервисы как никогда прежде. Теперь можно будет строить автоматически масштабирующиеся приложения без использования дорогостоящего и сложного оборудования. Можно будет одним кликом мышки разворачивать виртуальный кластер из серверов и добавлять в него сколько угодно узлов, которые станут автоматически доступны пользователям по всему миру. В вопросах масштабирования очень важны экономические показатели. Приложения будут все больше проникать в жизнь людей, будет требоваться обработать все большие нагрузки. В итоге выиграет тот, кто предоставит наиболее дешевую технологию масштабирования. Компоненты этой технологии должны быть максимально дешевыми и стандартизированными, они должны легко заменяться и поддерживаться. В будущем мы придем к тому, что все узлы сети будут использоваться для запуска приложений, самые крутые приложения будут использовать ваш домашний пылесос, чтобы увеличить свою производительность.
Алексей Дубовцев
184
Tango Операционная система из будущего
2.10.3
Хочу иметь поддержку глобального кэша для моих приложений
Масштабирование без кэширования невозможно. Хотя на текущий момент и существует множество технологий кэширования, тем не менее они не отвечают требованиям для развертывания планетарных приложений. Сервер приложений должен автоматически поддерживать интеграцию с глобальным кэшем. Под глобальным кэшем я понимаю распределенный по планете дата-центр.
Глобальный дата-центр Разумно создавать подобный дата-центр, используя пиринговые технологии, которые сделают узлами дата-центра все компьютеры пользователей. Емкость его будет постоянно расти и увеличиваться без прямых вложений капитала. Превосходная экономическая модель.
Протокол взаимодействия клиента и сервера приложений должен поддерживать прозрачную интеграцию с глобальным кэшем. Клиент должен всегда получать данные с ближайшего узла кэша. Для разработчиков приложений данный механизм должен быть абсолютно прозрачен, им необходимо будет лишь поставить галочку «Поддерживать глобальный кэш». Сам механизм кэширования должен базироваться на контрольной сумме контента, выдаваемого сервером. Первый запрос клиента к серверу будет возвращать хеш (уникальную контрольную сумму контента). Далее клиент передаст хеш на ближайший к нему узел глобального кэша и моментально получит интересующий его контент. Любой разработчик, публикуя свое приложение, моментально получит поддержку планетарной масштабируемости, использовав всего лишь одну галочку.
185
Алексей Дубовцев
Tango Операционная система из будущего
2.10.4
Хочу иметь встроенный механизм резервирования приложений
Хочу иметь встроенный механизм резервирования приложений. Хочу, чтобы в случае отказа любого узла в моих распределенных приложениях другой автоматически вступал в работу. Хочу, чтобы этот механизм был крайне прост и дешев в использовании, настройке и поддержке. Необходимо сделать так, чтобы он работал в один клик. Я вижу это следующим образом. 1.
Резервирование
2.
3.
4.
Администратор разворачивает несколько серверов приложений. Выбирает из них один ведущим, а остальные – резервными. Нажимает на ведущем кнопку «Подключить резервный сервер» и вводит имя резервного сервера. После этого все изменения, которые вносятся на ведущем сервере, автоматически синхронизируются с резервными серверами: a. Развертывание новых приложений. b. Изменение настроек. c. Все данные. Сервис имен должен поддерживать резервирование. И если ведущий сервер не отвечает, то обращение автоматически происходит к одному из резервных серверов.
Эта схема должна работать для всех сервисов. Например, для баз данных. Их движки должны автоматически понимать, что необходимо включить репликацию транзакций для реализации этого механизма. Развитие открытых стандартов резервирования приложений откроет огромные возможности в области построения глобального интегрированного планетарного облака.
Алексей Дубовцев
186
Tango Операционная система из будущего
2.10.5
Хочу, чтобы механизмы масштабирования и резервирования работали не привязанно к дата-центру
Механизмы масштабирования и резервирования приложений должны работать на открытых и общедоступных протоколах. Это позволит строить действительно глобальные приложения, не ограниченные одним датацентром и специальными техническими требованиями.
Я хочу размещать сервера приложений, распределяя по всему миру, в разных дата-центрах, а сервера баз данных – в других дата-центрах. Я хочу, чтобы они работали слаженно, хочу управлять всей этой инфраструктурой через единую консоль одним кликом мышки. Я убежден в том, что можно строить супер масштабируемые архитектуры без использования сложного железа. Серверов сейчас огромное количество, они дешевеют и становятся общедоступными. Каналы связи становятся все шире и быстрее. Важно выбрать грамотную архитектуру протоколов и коммуникаций, чтобы распределять пользовательские потоки и нагрузки равномерно. Это уровень программного обеспечения. Если же на уровне программного обеспечения всех «пытаться запихнуть в один провод», то никакое железо не поможет.
187
Алексей Дубовцев
Tango Операционная система из будущего
Создание планетарного облака должно быть открытой задачей для человечества, все должны участвовать. Это позволит создать действительно масштабируемую систему для обслуживания потребностей всего человечества.
Алексей Дубовцев
188
Tango Операционная система из будущего
2.10.6
Хочу выстраивать приложения в рабочие цепочки
Крайне важно создать механизм стандартизированного ввода и вывода для приложений. Приложения должны уметь принимать на вход объекты операционной системы и отдавать в результате своей работы те же объекты операционной системы. Необходимо очень строго определить формат метаданных, который предоставляет приложение. Это позволит собирать из приложений цепочки более сложной функциональности. Например, приложение по уничтожению процессов может принимать на вход объекты от приложения, возвращающего список процессов. Метаданные позволят создать удобный конструктор, в котором можно будет любую цепочку собрать мышкой. А затем запустить. Поскольку объекты будут стандартными, то будет стираться грань между приложениями и библиотеками логики. Интеграция будет настолько бесшовной, что можно будет творить поистине удивительные вещи.
189
Алексей Дубовцев
Tango Операционная система из будущего
2.11
Итог
Я постарался изложить свое видение возможностей и архитектуры операционной системы. Я намеренно упрощал описание системы потому, что для меня было крайне важно донести общую стержневую идею, множественные детали только запутали бы процесс понимания. Полная реализация этой системы создаст кумулятивный синергетический эффект (никогда не думал, что когда-нибудь осмысленно напишу эту фразу). Эффект от реализации всех компонентов, бесшовно интегрированных друг в друга, будет на порядки превосходить эффект каждого из компонентов в отдельности или их суммы. Эта система упростит работу и жизнь огромного количества людей. Она позволит распрощаться со многими «кошмарами» индустрии.
Алексей Дубовцев
190
Tango Операционная система из будущего
191
Алексей Дубовцев
Tango Операционная система из будущего
3 Раздел 3 –Организация съестьслона
3 Алексей Дубовцев
или
как
Организация, или Как съесть слона
192
Tango Операционная система из будущего
3.1 Основные принципы Главное – придерживаться правила по поеданию слона!
Правила поедания слона Вопрос: Как съесть слона? Ответ: Слона нужно есть по кусочкам!
Создание операционной системы – это явно не простой процесс, может даже показаться, что это слишком сложная задача. Однако я убежден в том, что задача решаема в разумные сроки, если правильно все организовать. Необходимо понять основные принципы и факты. Основной принцип: необходимая информация должна поступать к необходимым людям в нужное время, и эти люди должны иметь возможность реализовать свои способности. Основной факт: люди, которые сделают эту систему, уже родились, они ходят сейчас среди нас по этой планете. Они среди нас. Объясню на простом примере. В системе есть компонент – менеджер памяти. Кстати, довольно нетривиальный компонент. Обычный средний программист такой компонент разработать не в состоянии. Команда средних программистов, вероятно, сможет, но, скорее всего, сроки будут ужасными, и качество неприемлемым. Но важно понять, что на планете существуют люди, которые очень хорошо разбираются в создании менеджеров памяти и могут сделать его за неделю, и он будет работать превосходно. Назовем одного из таких людей Васей. Важно, чтобы Вася получил информацию о том, что нужно делать. Дальше он просто создаст менеджер памяти и подсоединит его к системе.
193
Алексей Дубовцев
Tango Операционная система из будущего
Как всегда, все упирается в людей.
Алексей Дубовцев
194
Tango Операционная система из будущего
3.2Принципы в жизни
Ключевые компоненты
Важно правильно воплотить принципы в жизни, иначе они останутся только на словах. Сделать это можно при помощи двух ключевых компонентов:
1. 2.
Открытый исходный код: http://ostango.com/community/sourcecode. Открытая система управления проектом для сообщества: http://os-tango.com/community.
Любой должен иметь возможность присоединиться к проекту. Только так можно быстро сделать по-настоящему серьезную систему в современных условиях. Во-первых, в мире миллионы талантливых программистов, они должны иметь возможность поучаствовать в проекте. Во-вторых, открытая модель практически убирает политический процесс, что крайне важно. Любой может реализовать что-нибудь классное для системы, не спрашивая на это разрешения. Это здорово. Создание операционной системы – это проект, и проектом нужно управлять, координировать действия участников. Участникам нужно иметь информацию о проекте – задачах, требованиях, ошибках и т.п. На сайте http://os-tango.com есть система управления проектом. Любой может зарегистрироваться и принять участие.
195
Алексей Дубовцев
Tango Операционная система из будущего
3.3 Исходный код Исходный код находится tango.com/community/sourcecode.
по
ссылке:
http://os-
Любой может взять исходный код. Сделать для него дополнение и попросить включить это дополнение в основную ветку проекта.
Исходный код http://os-tango.com/sourcecode
Алексей Дубовцев
196
Tango Операционная система из будущего
3.4 Сообщество Сообщество – это и есть проект… Сообщество людей, увлеченных единой целью, – это мощнейший механизм достижения цели, особенно в современно мире, где основную ценность имеет человеческий талант.
Сила сообществ в современном мире порой превосходит силу самых могущественных корпораций. Здесь можно смело привести в пример сообщество открытого программного обеспечения и пиринговых технологий. Современные интернет-сообщества людей, сплоченных общим духом и общей идеей, по своей эффективности выигрывают у жесткой корпоративной культуры. Они гораздо более динамичны, быстры и проявляют на порядки большую гибкость, чем самые организованные из корпораций. Происходит это, прежде всего, потому, что в основе любой корпорации лежит жесткий иерархический армейский порядок, который убивает творческое начало. Задача военных – исполнять приказы, а не обсуждать их.
197
Алексей Дубовцев
Tango Операционная система из будущего
У истоков организации современных корпораций лежит организация военного типа «Голландская Ост-Индская компания».
Обратите внимание на название должностей в любой корпорации: CEO (Chief Executive Officer), CFO (Chief Financial Officer), CTO (Chief Technical Officer) – сплошные офицеры. Эта жесткая иерархическая структура с поступлением управляющих сигналов сверху вниз. Нарушение приказов в корпорации карается увольнением, а в армии – трибуналом. Механизм один и тот же. Реальное искреннее взаимодействие возникает редко, лишь по причине страха перед увольнением либо с целью уволить коллег по работе, занимающих примерно тот же уровень в структуре компании (интриги). В отличие от корпораций, интернет-сообщества имеют сетевую природу коммуникаций – это сложные плоские сети, а не иерархические пирамиды. Природа существования сообществ строится, прежде всего, на искреннем взаимодействии, иерархии нет как таковой. Это придает сообществам особый динамизм и огромную скорость. Сообщества адаптируются к условиям среды с гораздо большей скоростью, чем любая другая структура. А как известно, кто приспосабливается лучше, тот и выживает.
Алексей Дубовцев
198
Tango Операционная система из будущего
3.4.1
Принципы организаций сообществ
На текущий момент принципы формирования сообществ хорошо изучены. В основе их лежит принцип автосинхронизации.
Светлячки Ярким примером явления автосинхронизации является поле со светлячками. Если хотя бы 5–10 % светлячков начинают синхронно светиться, то и остальные довольно быстро подстраивают фазу своих световых колебаний под них. И все светлячки начинают светиться, как единое целое.
Этот принцип отлично работает в человеческих социальных системах. Если 5–10 % индивидуумов социума принимают идею и устойчиво следуют ей, то и остальные довольно быстро подстраиваются под них. Классическим экспериментом является «бесцельное блуждание». Группу людей заводят в комнату и просят бесцельно ходить по ней, но у нескольких из них есть «особое задание» – ходить в определенном направлении. Через некоторое время вся группа будет ходить по «особому заданию». Принцип действия этого механизма сводится к синхронизации с устойчивым источником колебаний. Главное здесь – устойчивость, если регулярные сигналы перестают приходить от ядра сообщества, то оно затухает. В современном мире эти принципы очень часто используются для организации «цветных революций».
199
Алексей Дубовцев
Tango Операционная система из будущего
3.5 Система управления проектом Система управления должна организовывать сообщество. Должна предоставлять инструменты совместной разработки, чтобы вместе сделать проект быстро и качественно.
Разделы
В системе есть следующие разделы:
1. 2. 3. 4. 5. 6. 7.
Люди. Требования. Задачи. Ошибки. Тесты. Статьи. Дискуссии.
Алексей Дубовцев
200
Tango Операционная система из будущего
3.5.1
Люди
Систему создают люди, важно иметь открытый доступ к этим людям, чтобы координировать работу с ними.
Через этот раздел просто связаться с людьми, которые разрабатывают продукт. Здесь также указано, чем они занимаются и в чем могут помочь. Превосходная команда – это залог успеха любого проекта. Ничто так не важно, как команда: ни деньги, ни технологии, ни связи. Команда мечты – вот то, что важно; те, кому хотя бы раз довелось поработать в такой команде, прекрасно меня поймут: объяснить словами ощущения, которые испытываешь от работы в такой команде, невозможно.
201
Алексей Дубовцев
Tango Операционная система из будущего
3.5.2
Требования
Требования – это детальное описание поведения системы. Для программистов требования важны, чтобы четко понимать устройство системы и писать правильный код. Для тестировщиков требования важны, чтобы понимать, как система должна работать и как можно ее «помучить», чтобы проверить правильность работы. Для технических писателей требования важны, чтобы описать их общедоступным человеческим языком для обычных людей. Впоследствии это называется документацией.
Алексей Дубовцев
202
Tango Операционная система из будущего
3.5.3
Задачи
Задачи должны быть краткие и простые. Задача – это действие, которое можно выполнить в течение получаса–часа. Полный список задач в открытом доступе – это очень важно. Люди смогут смотреть, кто выполняет задачи, какая помощь требуется, какие задачи можно выполнить, чтобы помочь проекту. В конце концов реализация системы упирается именно в задачи.
203
Алексей Дубовцев
Tango Операционная система из будущего
3.5.4
Ошибки
Ошибки – это проблемные места в системе. Чем больше ошибок исправлено, тем более качественно и стабильно работает система. Крайне важно вести систематизированный список всех когда-либо обнаруженных ошибок. Ни одна система не может быть создана сразу же начисто. В любой программе всегда есть ошибки, если они доступны единым списком, их всегда легко контролировать и стремиться к тому, чтобы красных строчек (неисправленных) становилось все меньше, а зеленых (исправленных) становилось все больше.
Алексей Дубовцев
204
Tango Операционная система из будущего
3.5.5
Тесты
Тест – это действия для людей, проверяющих функциональность системы. Пример: «Нажать на кнопку А, убедиться в том, что пользователь увидел сообщение Б». Тесты в отрытом доступе позволят всем принять участие в улучшении качества системы. Чем больше людей прогонят тесты, описанные в этом разделе, тем более качественной и стабильной будет система. Тесты, представленные списком, играют огромную роль при выпуске системы в «продакшн». Пока система не пройдет успешно все такие тесты, она не будет выпущена и не доставит неприятных сюрпризов людям.
205
Алексей Дубовцев
Tango Операционная система из будущего
3.5.6
Статьи
Раздел статьи – это документация, своего рода база знаний о системе. Всегда можно будет зайти в этот раздел и найти информацию о системе. Любой сможет опубликовать статью о системе, рассказать людям о своем видении, донести свои идеи. Чем больше открытой документации о системе доступно в сети, тем надежнее система. Всегда знаешь, что на любой вопрос можно найти ответ. Нет закрытых и непонятных проблем, с которыми придется иметь дело один на один. Люди очень любят писать статьи о системах, и нужно дать им возможность открыто публиковать свои статьи. Любой может внести вклад в общее дело.
Алексей Дубовцев
206
Tango Операционная система из будущего
3.5.7
Дискуссии
Форум, в котором все смогут обсуждать интересующие их вопросы. Мнения людей крайне важны. Люди должны иметь возможность высказываться открыто. Постепенно, по мере своего существования, форум превращается из площадки для общения в базу знаний. В этой базе накапливается огромное количество ответов на вопросы, которые действительно интересуют людей. Чем больше накапливается «живых» ответов, тем проще программистам и обычным людям использовать системы в реальной жизни.
207
Алексей Дубовцев
Tango Операционная система из будущего
3.5.8
Комментарии
Любой зарегистрированный пользователь должен иметь возможность оставлять свои комментарии, это крайне важно. Важно, чтобы пользователи оставляли комментарии к задачам. Всегда найдется человек, который знает лучшее решение задачи. Всегда есть люди, которые могут высказать действительно блестящие идеи, они всегда должны иметь возможность сделать это. Важно, чтобы пользователи имели возможность оставлять комментарии к ошибкам. Они смогут подсказать способы их исправления и дополнительную информацию. Важно, чтобы пользователи имели возможность оставлять комментарии к требованиям. Они смогут подсказать способы лучшей реализации системы, внесут свой вклад в развитие системы. Всегда будет ясно, благодаря кому система была реализована. Важно, чтобы пользователи имели возможность оставлять комментарии к тестам. Всегда найдутся пользователи с крайне нестандартным мышлением, которые могут вывести из строя даже стальной шарик, не говоря уже о сложнейшей системе.
Алексей Дубовцев
208
Tango Операционная система из будущего
3.5.9
Глобальность проекта
Важно, чтобы система управления была интернациональной, чтобы люди из всех стран могли внести свой вклад. По умолчанию система рассчитана на два языка: русский и английский. Также у пользователей есть возможность любой текст автоматически перевести на русский или английский при помощи «Google Translate». Любой текст в системе должен храниться в нескольких вариантах на самых распространенных языках. Если текст переведен профессиональным переводчиком, то нужно показывать его, если такого перевода нет, то можно ограничиться автоматическим переводом.
209
Алексей Дубовцев
Tango Операционная система из будущего
3.5.10
Развитие самой системы управления
Система управления также должна быть полностью открыта, чтобы люди моги совершенствовать ее и делать управление проекта более удобным и совершенным. Невозможно сразу же создать идеальную систему управления, она должна эволюционировать и подстраиваться под нужды самых активных разработчиков системы. Если система будет монолитна и неизменяема, то довольно скоро она начнет ограничивать разработчиков и тормозить развитие проекта. Система должна, в первую очередь, адаптироваться под нужды проекта, а не проект под систему. Важно помнить, что проект первичен, а система управления вторична.
Алексей Дубовцев
210
Tango Операционная система из будущего
3.6 Этапы развития проекта
Этапы проекта
Я вижу следующие этапы реализации проекта:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Распространение идеи. Формирование первоначальных требований. Формирование списка задач. Создание первого прототипа. Организация тестирования. Организация сообщества. Альфа-запуск. Бета-запуск. «Продакшн»-запуск. Наращивание функционала и развитие системы.
Сложнее всего запустить проект, раскрутить его маховик. Когда же проект обрастает кодом и требованиями, когда к нему подключаются люди, то он начинает стремительно развиваться. На начальном этапе много неопределенности, нужно многое принимать на веру, когда проект уже материализован, все гораздо проще.
211
Алексей Дубовцев
Tango Операционная система из будущего
3.6.1
Распространение идеи
Подобный проект невозможно сделать в одиночку, его даже сложно сделать огромной командой с отличным финансированием. Крайне важна поддержка сообщества, важно, чтобы профессионалы в своей области помогли решить сложные задачи. Без них этот проект невозможен. Важно, чтобы идея достигла этих людей, и они смогли внести свой вклад. Именно поэтому я и написал книгу – чтобы распространить идею. Книга доступна для всех он-лайн (на сайте: http://tango-os.com), любой может скачать ее и прочитать. Для того чтобы поделиться идеей, нужно всего лишь отправить ссылку. Чем больше людей прочитает книгу, тем больше вероятность, что нужные люди присоединятся к проекту.
На этом этапе важно, чтобы к сообществу присоединились первые профессионалы, они смогут дать проекту первоначальный толчок. Но не стоит искать профессионалов специально, нужно рассказывать о системе всем подряд, информация сама достигнет нужных людей.
Алексей Дубовцев
212
Tango Операционная система из будущего
3.6.2
Формирование первоначальных требований
Требования должны быть сформулированы и занесены в систему управления, они должны быть очень четкими и конкретными. Требования нужно обсудить и согласовать с участниками проекта. Создать первые требования довольно сложно, поскольку проект очень масштабен. Нужно начать с простого, охватить все и не забыть важное. На первом этапе многие люди боятся допустить ошибки, это неважно. Важно заложить грамотную систему версионности, которая позволит безболезненно менять стандарты и протоколы.
213
Алексей Дубовцев
Tango Операционная система из будущего
3.6.3
Формирование списка задач
Как только хотя бы часть требований будет сформулирована, необходимо сформировать список задач. Реализация задач в большинстве случаев сводится к написанию текста программы. Простой список позволит делать это эффективно и подключать к задачам все больше и больше людей. Безусловно, на первых этапах будет несогласованность и затруднения, но чем дальше, тем будет проще. В конечном итоге просто будет объемный список требований: несколько десятков тысяч и сотни тысяч задач. Нужно будет лишь выполнить задачи, и система будет готова.
Алексей Дубовцев
214
Tango Операционная система из будущего
3.6.4
Создание первого прототипа
Первый прототип крайне важен: как только появляется прототип, проект материализован, существует, и его нужно просто развивать и делать. Все предельно ясно и конкретно. Первый прототип должен быть простым, чтобы любой мог скачать его и запустить. Написать первую строку кода в проекте всегда сложнее, чем сотую или тысячную. Самая важная задача прототипа – донести общую идею проекта в виде кода, в виде реальной программной логики. Программистам гораздо проще воспринимать идеи именно в этом виде.
215
Алексей Дубовцев
Tango Операционная система из будущего
3.6.5
Организация тестирования
Важно организовать тестирование продукта с первого дня проекта. Продукт должен быть качественным, иначе пользователи отторгнут его. На первых этапах у системы не будет функционала, будут лишь внутренние компоненты. Необходимо реализовать их автоматизированное тестирование. Весь код должен быть протестирован, чтобы можно было быть уверенным в том, что система всегда работает стабильно. Далее у системы появится функционал, которым смогут пользоваться люди. Начиная с этого момента, необходимо начать тестировать систему вручную. Детально описать всевозможные тесты с шагами и постоянно их прогонять, чтобы быть уверенными в том, что система работает корректно. Необходимо спланировать и проводить нагрузочные тесты, чтобы смотреть, как система справляется с экстремальными условиями. Нагрузочные тесты должны загружать в систему огромные объемы данных, делать миллионы запросов и вызовов.
Алексей Дубовцев
216
Tango Операционная система из будущего
3.6.6
Организация сообщества
Важно распространять информацию о Танго, важно вовлекать в проект все новых и новых людей. А как только участников станет значительное количество, необходимо будет скоординировать их действия, чтобы повысить эффективность. Эту функцию должно выполнять само сообщество, его самые активные члены. Система управления играет огромную роль в организации сообщества, важно развивать эту систему, добавлять туда дополнительные возможности.
217
Алексей Дубовцев
Tango Операционная система из будущего
3.6.7
Альфа-запуск
Первый тестовый запуск системы, который можно отмечать. Теперь можно радоваться тому, что система увидела свет. Систему смогут скачать первые пользователи и «потыкать в одну кнопку». Функционала в ней, конечно, не будет, но она уже станет работать.
Алексей Дубовцев
218
Tango Операционная система из будущего
3.6.8
Бета-запуск
Основные контуры системы уже будут работать в ограниченном режиме. API будет стабилизирован, и уже можно будет начинать разработку приложений под систему. Очень важный момент в жизни системы. С этого момента можно начинать продвигать систему в среде программистов. Крайне важно, чтобы они начали готовиться к «продакшн»-запуску системы.
219
Алексей Дубовцев
Tango Операционная система из будущего
3.6.9
«Продакшн»-запуск
Системой смогут начать пользоваться конечные пользователи. В системе появятся первые приложения.
Алексей Дубовцев
220
Tango Операционная система из будущего
3.6.10
Наращивание функционала и развитие системы
Важно не стремиться сделать все сразу и навсегда. Главное – организовать гармоничный и отлаженный механизм развития системы. Чем больше функционала, тем дороже стоит введение в программу новых функций. Новые функции не должны нарушать работу старых, не должны изменять поведение системы. Для пользователей важнее всего, чтобы новые функции не нарушали привычный стиль использования системы. Механизм добавления функционала позволит вывести систему на рынок с минимальными функциями и постепенно развивать ее и дополнять, основываясь на мнениях живых пользователей.
221
Алексей Дубовцев
Tango Операционная система из будущего
3.7 Как вы можете внести свой вклад Любой человек может внести вклад в развитие операционной системы Танго. В целом все сводится к простым вариантам:
Этапы проекта
1. 2.
Рассказать наибольшему количеству людей о Танго. Разместить ссылку на Танго на информационных ресурсах. 3. Написать статью, книгу, помочь переводом. 4. Разработать часть системы. 5. Зайти на www.os-tango.com/community. 6. Поддержать проект финансово: a. Деньги чудесным способом ускоряют все процессы. b. Сделать это можно, зайдя на сайт www.ostango.com/donate или послав письмо на
[email protected]. 7. Помочь с техникой и инфраструктурой. 8. Помочь в формировании требований. 9. Обучить пользоваться системой, когда будет готов первый релиз. 10. Предложить что-либо еще.
Алексей Дубовцев
222
Tango Операционная система из будущего
3.7.1
Рассказать наибольшему количеству людей о Танго
Для успеха проекта крайне важно распространять идею. Важно, чтобы наибольшее количество людей узнало о проекте. Вы можете: 1. 2. 3. 4.
Рассказать своим друзьям и попросить их рассказать своим. Разослать ссылку на книгу наибольшему количеству людей. Запостить ссылку в своем блоге. Поделиться информацией на форумах.
Каждый раз, когда вы делитесь информацией о проекте с другими людьми, вы участвуете в проекте, вы его развиваете, ваш вклад важен гораздо больше, чем вы можете себе представить. Рассказать людям о проекте – значит развить проект, поучаствовать в нем. Проект очень зависит от вашей поддержки, зависит от того, скольким людям вы расскажете о нем и убедите поучаствовать в общем деле.
223
Алексей Дубовцев
Tango Операционная система из будущего
3.7.2
Разместить ссылку на Танго на информационных ресурсах
Если у вас есть сайт, блог или страничка в социальной сети, вы можете разместить ссылку на Танго: http://os-tango.com. Чем больше людей узнают о проекте, тем больше вероятность его успеха. Неважно, сколько людей вы сможете привлечь таким образом, важно, что вы примете участие в общем деле, важно, что вы станете причастным к развитию проекта и сможете смело говорить об этом всем и каждому. Вы станете частью команды.
Алексей Дубовцев
224
Tango Операционная система из будущего
3.7.3
Написать статью, книгу, помочь переводом
Вы можете написать статью или книгу о проекте. Печатное слово во все времена играло большую роль. Важна каждая статья, каждая заметка, которая написана о системе.
Присылайте все ссылки на статьи, я с радостью опубликую их на сайте со ссылкой на вас и благодарностями за вклад в развитие проекта. Проект должен быть интернациональным, все тексты должны быть доступны на разных языках. Если вы можете помочь проекту переводом текстов, это сильно поможет нам и ускорит его успех.
225
Алексей Дубовцев
Tango Операционная система из будущего
3.7.4
Разработать часть системы
Успех системы всецело зависит от талантливых программистов, инженеров, верстальщиков, дизайнеров, системных администраторов. Я верю в то, что в мире огромное количество талантливых людей, которые сделают эту систему.
Система управления проектом На момент публикации книги система управления проектом, скорее всего, еще не будет работать. По всем вопросам можете обратиться прямо ко мне:
[email protected], я обязательно отвечу.
Для начала ознакомьтесь с системой, прочитав требования: http://os-tango.com/community/requirements. Затем ознакомьтесь с задачами: http://os-tango.com/community/requirements. После этого вы можете скачать исходный код: http://os-tango.com/community/sourcecode. И разработать одно из требований или выполнить задачу, затем отписаться в ветку требований или задач и выложить ссылку на свою реализацию. Затем связаться с ответственным человеком из списка: http://os-tango.com/community/people. И поделиться результатом, дав ссылку на требование или задачу.
Алексей Дубовцев
226
Tango Операционная система из будущего
3.7.5
Помочь проекту финансово
Разработка операционной системы – это, безусловно, ресурсоемкий проект. Для разработки нужна инфраструктура, которая стоит немалых денег, нужны человеко-часы, которые еще дороже, нужны сотрудники и поддержка. Деньги очень полезны для организации и ускорения процессов. Если у вас есть возможность поддержать проект, вы можете сделать это через страничку: http://os-tango.com/donate. Или связавшись с нами лично.
227
Алексей Дубовцев
Tango Операционная система из будущего
3.7.6
Помочь в формировании требований
Для того чтобы начать разрабатывать код системы, необходимо очень грамотно сформулировать технические требования. Требования лежат в открытом доступе на странице: http://os-tango.com/community/requirements. Вы можете зайти на нее и внести свой вклад в формирование требований и поучаствовать в их обсуждении. Участие профессионалов особо приветствуется, без вашего вклада создание системы невозможно.
Алексей Дубовцев
228
Tango Операционная система из будущего
3.7.7
Помочь техникой и инфраструктурой
Если у вас есть возможность помочь проекту техникой: серверами, компьютерами; дать доступ в хороший дата-центр – это может помочь проекту. Техника не играет решающей роли в создании подобного проекта, но ее наличие здорово помогает и облегчает процесс разработки. Например, хорошие сервера очень облегчают проведение нагрузочных тестов. Без них создание промышленной системы в принципе невозможно. При наличии большой «фермы» можно запускать тест параллельно на нескольких конфигурациях, не дожидаясь окончания других.
229
Алексей Дубовцев
Tango Операционная система из будущего
3.7.8
Обучить пользователей
Когда система будет готова, необходимо будет обучать пользователей работе с системой, объяснять им, как она работает, внедрять систему в жизнь. Каждый сможет делать это. Обучение пользователей рождает обратную связь в системе. Обратная связь позволяет делать приложения более качественными и удобными. Обучение – самый правильный вариант распространения системы. Не нужно заставлять никого пользоваться системой, нужно обучить людей, рассказать им, как пользоваться системой.
Алексей Дубовцев
230
Tango Операционная система из будущего
3.7.9
Предложить что-либо еще
Если вы можете предложить проекту что-либо еще, это просто прекрасно. Не откладывайте это! Сделайте прямо сейчас.
231
Алексей Дубовцев
Tango Операционная система из будущего
4 Раздел 4 – Экономика и финансы
4 Алексей Дубовцев
Экономика и Финансы
232
Tango Операционная система из будущего
4.1 Модель монетизации Система должна быть общедоступна и по возможности бесплатна для пользователей. Но развитие и существование серьезной масштабной системы невозможно без механизмов монетизации. Проект должен приносить доход, поскольку чем больше будет распространяться система, тем больше ресурсов будет требоваться на ее поддержку. И лучше, чтобы проект самостоятельно зарабатывал средства, чтобы не быть вечно зависимым. Окончательно я не определился с моделью монетизации, но на текущий момент, мне кажется, что она должна быть следующей:
Этапы проекта
1.
2.
Система должна быть бесплатна для всех: a. Для пользователей. b. Для создателей устройств. c. Для создателей приложений. Регулярный доход должен идти из следующих источников: a. Комиссия с транзакций в интегрированной платежной системе. b. Комиссия с транзакций на бирже приложений.
Такой тип монетизации гораздо стабильнее, чем в классическом бизнесе операционных систем; он будет регулярным, а не единовременным – за продажу продукта.
233
Алексей Дубовцев
Tango Операционная система из будущего
Алексей Дубовцев
234
Tango Операционная система из будущего
235
Алексей Дубовцев
Tango Операционная система из будущего
5 Раздел 5 – Архитектура
5 Алексей Дубовцев
Архитектура
236
Tango Операционная система из будущего
5.1 Принципы Сложность инженерных систем определяется квадратом количества ее компонентов. Операционная система содержит сотни компонентов, сложность зашкаливает. Осознать в одной голове систему полностью практически невозможно, уследить за всем – тем более. Тем не менее важно создать правильную архитектуру. Именно поэтому необходимо отталкиваться не от спецификаций, а от принципов.
Важные принципы
Перечислим кратко важные принципы:
237
1. 2. 3. 4.
Принцип отсутствующих деталей. Принцип песочницы. Принцип слабой связанности. Принцип заменимости.
Алексей Дубовцев
Tango Операционная система из будущего
5.1.1
Принцип отсутствующих деталей
Знаете, какая самая хорошая деталь в автомобиле? Та, которой нет. Если детали нет, то ее невозможно сломать, она не поддается износу, ее не нужно менять. Уже много лет подряд автомобильные компании бьются над тем, чтобы сократить количество деталей в автомобиле, а в особенности – в двигателе. Тем совершеннее является система, чем меньшим количеством деталей она выполняет заданные функции.
В архитектуре важно избегать дублирования и повторения: чем меньше компонент, тем проще и надежнее система. Запутанные и сложные системы не только ставят пользователей в тупик, они еще крайне сложны в разработке и поддержке.
Алексей Дубовцев
238
Tango Операционная система из будущего
Интересный пример Обратите внимание на стартовый стол запуска космических ракет американцев и русских. Американская система, поддерживающая ракету при запуске, отъезжает вбок. Русская система – это металлические балки, поддерживающие ракету, откидывающиеся в разные стороны.
Американская система крайне сложна, она управляется сложной электроникой, которая определяет скорость движения поддерживающей штанги и момент отрыва. Система неудобна в управлении и дорога в обслуживании. У русских система представляет собой металлические балки, закрепленные на шарнирах, никакой электроники, никаких сложностей. Они откидываются в разные стороны от толчка ракеты при взлете. Задача одна и та же, а подход разный. Выигрывают те системы, которые решают задачу наиболее просто и экономически эффективно.
239
Алексей Дубовцев
Tango Операционная система из будущего
5.1.2
Принцип песочницы
При проектировании операционной системы всегда нужно помнить, что операционная система является «песочницей» для приложений, а следовательно, и для программистов, которые пишут эти программы.
Основная задача системы – сделать «игру в песочнице» наиболее комфортной, приятной и удобной. Нужно всегда смотреть на задачу глазами программистов, нужно всегда думать об их комфорте. Технология может быть внутри изящной, современной, производительной, но если она будет сложна для программистов, она будет, прежде всего, мертвой технологией.
Алексей Дубовцев
240
Tango Операционная система из будущего
5.1.3
Принцип слабой связанности
Необходимо, чтобы отдельные компоненты были слабо связанными между собой. Всегда должна быть возможность кардинально обновить один из компонентов, чтобы другие не пострадали. К примеру, замена алгоритмов в менеджере памяти не должна влиять на функционирование файловой системы. Компоненты должны общаться друг с другом через строго определенные контракты.
Этот подход позволит оптимизировать процесс разработки, создания и развития системы. Всегда можно будет обновлять систему и развивать, концентрируясь на отдельных компонентах. Если приводить пример из жизни, то сильно связанные системы – это когда вы откручиваете колесо у машины, а из-за этого у нее перестает работать двигатель. Такого не должно происходить. Компоненты должны быть независимы друг от друга, каждый должен выполнять свою отдельную функцию.
241
Алексей Дубовцев
Tango Операционная система из будущего
5.1.4
Принцип заменимости
Любой компонент системы можно оперативно заменить на другой подобный. Это очень удобно для оптимизации и развития системы. Если систему делать монолитной и сильно связанной, то будет затруднительно работать над улучшениями отдельных компонентов. Заменимость компонентов даст возможность развития системы силами сообщества. Никто не будет ограничен в своем желании развивать систему.
Алексей Дубовцев
242
Tango Операционная система из будущего
5.2 Суть, а не форма Главное – всегда смотреть в суть явлений, а не отвлекаться, размышляя над формой, которую они принимают.
«Дао де цзин» Лаоцзы, V век до нашей эры Не объяснить словами истинное Дао, Лишь слово сказано – не истинно оно. То, что без имени, – Земли и Неба тайна, Что с именем – определенным рождено. То и другое вместе – сущность и именованье – Есть глубочайшей истины зерно. Лишь страсти затрудняют пониманье. Свободный от страстей постигнет суть, Сокрытую в явленьи форм случайных. От слова к сути – к чуду Путь.
Ни один человек не может выбирать всегда оптимальные и эффективные решения. Естественно, что при создании системы будет приниматься множество не самых хороших решений. Главное – не гнаться за идеалом, а думать, каким образом можно улучшить ситуацию здесь и сейчас.
243
Алексей Дубовцев
Tango Операционная система из будущего
Приведу пример. Вы исследуете исходный код и понимаете, что менеджер памяти написан крайне неоптимально и что он может работать гораздо быстрее. Что вы можете сделать с этим? Существует два варианта: конструктивный и неконструктивный.
Варианты
1.
2.
Конструктивный вариант: a. Подумать, как существующий менеджер можно улучшить. b. Почитать документацию и требования на сайте, возможно, уже кто-то подумал об этом, и там есть полезная информация. c. Реализовать улучшения и проверить свою идею, вдруг она действительно гениальна и кардинально улучшит ситуацию. d. Связаться с разработчиками компонента и обсудить улучшения: i. Через сайт. ii. Почтой. iii. Другими средствами коммуникаций. Неконструктивный вариант. Говорить о том, что система не такая, как хотелось бы.
Главное – это суть, а не форма. В этом разделе я привожу множество примеров кода и спецификаций. Для меня важно, чтобы вы смотрели в суть предложенных решений, форму же всегда легко поменять. Всегда можно изменить название переменных, полей, компоновку предметов и т.п. Главное – это задачи, которые решает система.
Алексей Дубовцев
244
Tango Операционная система из будущего
5.3 Реализуемость Мне часто задают вопрос, реализуема ли такая система в принципе. Ответ – ДА. Система реализуема в разумные сроки.
Реализуемость Как любит говорить мой учитель по кунг-фу Дмитрий Анатольевич: «Я говорил, что будет просто, но я не говорил, что будет легко».
К данному моменту человечество уже накопило достаточно знаний и технологий для создания такой системы. Многие могут заметить, что я не предлагаю создавать принципиально новую технологию; все части уже существуют, реализованы и апробированы. Задача состоит в том, чтобы аккуратно собрать эти части воедино и заставить работать вместе. Люди, которые умеют это делать, уже среди нас, нужно лишь привлечь их к проекту и дать возможность внести свой вклад. Проект тяжелый, однако я не вижу непреодолимых сложностей, которые помешали бы его реализовать силами сообщества.
245
Алексей Дубовцев
Tango Операционная система из будущего
5.3.1
Оценки реализуемости
Типы программистов
Всего существует три типа программистов:
1. 2. 3.
Новички. Профессионалы. Гуру-«джедаи».
Новички – люди, которые знают один, может, несколько языков программирования, умеют решать прикладные задачи, умеют закодировать работающую программу. Таких людей очень много. Профессионалы – это люди с инженерным складом ума, которые умеют думать системно и решать задачи комплексно. Эти люди не просто знают языки программирования, они имеют четкое представление о том, как работает система, и могут увидеть ее в целом. Это люди, которые знают большинство из существующих технологий на текущее время. Такие люди есть, и их не так мало. Гуру-«джедаи» – это люди, чье сознание ушло за пределы привычной реальности. Это сверходаренные люди, которые не просто знают, как устроена система, но еще и имеют особое видение системы в целом. Емкость создания этих людей на порядки (в сотни, а может, в тысячи раз) превышает емкость сознания обычных людей и даже профессионалов. Обычно такие люди держат в своем сознании систему целиком и пользуются этой информацией не просто как справочником, а видят в общей объемной картине весьма неочевидные на первый взгляд взаимосвязи. Таких людей не много.
Алексей Дубовцев
246
Tango Операционная система из будущего
Пять-шесть гуру могут реализовать ядро системы Танго за несколько месяцев, не сильно напрягаясь. Крайне важно, чтобы такие люди присоединились к проекту. Крайне важно найти этих людей и рассказать им о проекте. Профессионалы тоже смогут реализовать подобную систему, но у них на это уйдет гораздо больше усилий и нервов. Новички не способны создать эту систему. Парадоксально, но для создания системы нужны все три группы программистов, только каждая группа должна заниматься четко своими задачами.
247
Алексей Дубовцев
Tango Операционная система из будущего
5.3.2
Как понять уровень программиста
Очень много написано о том, как тестировать программистов и определять их навыки, как исследовать их резюме, как определять по морганию их глаз профессиональный уровень, как по головоломкам узнать уровень их IQ. Обычно на собеседованиях я задавал вопрос: «Сколько бензоколонок в Санкт-Петербурге?» Сам ответ, конечно, меня не волновал, гораздо интереснее было послушать, как размышляют кандидаты. Помню, меня сильно удивил один парень, который начал с того, что посчитал примерную площадь города, потом, ссылаясь на генеральный план, вспомнил минимальное расстояние от жилых домов до дороги и на основе этих данных начал вычисляться среднюю плотность покрытия бензоколонками города. Крайне нестандартное мышление. Сейчас я четко знаю: все эти трюки по тестированию программистов НЕ РАБОТАЮТ. Работает совершенно другое.
Важно
Важны только две вещи:
1. 2.
Желание человека сотрудничать. Результат, который он может показать.
Результат – это код, который может показать программист. Если нет кода, то этот человек не программист, чтобы он ни говорил и каким бы резюме он ни размахивал. Есть особенные люди. Когда смотришь на их код, то сразу проникаешься уважением, и все становиться ясно и без громких слов, страшных аббревиатур в резюме или прилагательных в названии должности. Алексей Дубовцев
248
Tango Операционная система из будущего
Важно Сила разума и емкость сознания – вот что важно.
249
Алексей Дубовцев
Tango Операционная система из будущего
5.4 Архитектура Архитектура
Для целостного представления и описания архитектуры я ввел три уровня.
1. 2. 3.
Глобальная архитектура. Макроархитектура. Микроархитектура.
Каждый уровень предназначен для решения свойственных ему задач, но все уровни должны быть интегрированы между собой. Работа всех уровней должна быть слаженной, нельзя развивать одни уровни в убыток другим.
Алексей Дубовцев
250
Tango Операционная система из будущего
251
Алексей Дубовцев
Tango Операционная система из будущего
Глобальный уровень
5.4.1
Глобальный уровень
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Сервис идентификации пользователей. Сервис платежной платформы. Сервис каталога приложений. Сервис биржи приложений. Сервис каталога компонентов. Сервис каталога дата-центров. Протокол публикации приложений. Корпоративные сервисы. Социальные сервисы. Пиринговая платформа. Поиск. Сервис лицензирования приложений. Сервис лицензирования компонентов. Глобальное хранилище файлов. Локализация.
Алексей Дубовцев
252
Tango Операционная система из будущего
Макроуровень
5.4.2
253
Макроуровень
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Среда разработки. Сервис хранения исходных кодов. Сервис управления проектами. Сервис телеметрии и логов. Сервис конфигурирования приложений. Сервер приложений. База данных. Удаленное управление и визуализация. Система инсталляции приложений. Файловая система.
Алексей Дубовцев
Tango Операционная система из будущего
Микроуровень
5.4.3
Микроуровень
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Виртуальная машина. Исполняемый язык. Общая система типов. Компилятор времени исполнения. Уровень абстракции от платформы и железа. Динамический компилятор логики. Понятие приложения. Логика. Визуализация. Механизм стилей. Динамический компилятор. Контекст вызова. Модель-представление-контроллер. Отладчик и профилировщик. Транзакционность. Версионность и система ссылок. Менеджер памяти. Автоматизированные тесты.
Алексей Дубовцев
254
Tango Операционная система из будущего
5.5 Глобальный уровень: цель Цель глобального уровня архитектуры – кардинально упросить жизнь разработчикам планетарных приложений. Те, кто хотят создать приложение, которыми будут пользоваться миллионы пользователей, должны знать, что при помощи Танго это можно сделать в пару кликов. Глобальный уровень архитектуры должен предоставлять все необходимые сервисы для идентификации, масштабирования, монетизации, статистики, развертывания. На текущем этапе вдаваться в детали этого уровня преждевременно. Достаточно того, что сформировано общее видение этого уровня. Детально проектировать его функциональность можно будет после завершения разработки основных контуров микроуровня. В разделе 2 – «Видение системы» – довольно подробно описано, какими я вижу глобальные сервисы системы Танго с точки зрения пользователя. Имея эту информацию, довольно просто спроектировать требования и спецификации.
255
Алексей Дубовцев
Tango Операционная система из будущего
5.6 Макроуровень Макроуровень системы отвечает за удобство пользователей и разработчиков программных систем. До того как будут готовы основные контуры виртуальной машины, приступать к детальному проектированию этого уровня довольно сложно и преждевременно. Во время разработки макроуровня необходимо уделять особое внимание удобству пользователей и программистов. Необходимо сделать упор на быстроту достижения задачи – «Результат в один клик». Чем проще и удобнее можно будет достигать конечного результата в системе, тем больше пользователей придут и начнут пользоваться системой. Необходимо прорисовать все пользовательские экраны и функции, которые пользователи могут осуществлять при помощи них. Для каждого экрана необходимо составить список функций, затем построить график перехода по экранам, после чего оптимизировать его по принципу «малой Вселенной». До любого экрана из любой точки системы можно переместиться в 2-3 клика, не более. Навигация не должна быть запутанной, сложной и иерархичной. Крайне важно уделить внимание эргономичности и удобству использования системы (юзабилити). В этом деле необходим научный подход и метрические системы анализа.
Алексей Дубовцев
256
Tango Операционная система из будущего
5.7 Микроуровень На микроуровне самым важным является архитектура виртуальной машины.
Виртуальная машина представляет собой удобный контейнер для исполнения управляемого кода. Архитектура виртуальной машины в целом классическая, поэтому я не буду описывать ее здесь детально. Я изложу важные идеи и принципы, которые должны лечь в основу виртуальной машины.
257
Алексей Дубовцев
Tango Операционная система из будущего
5.7.1
Версионность и система ссылок
Версионность и система ссылок – это один из самых важных механизмов в операционной системе. Развитие любого программного продукта – это процесс, протекающий во времени, невозможно просто взять и создать классно работающий продукт. Все программные продукты выходят версиями. Всегда хочется иметь обратную совместимость, чтобы продукты более ранних версий не переставали работать. Это имеет особый смысл по отношению к операционным системам. Если выходит новая версия операционной системы, и под ее управлением не будет работать старая программа, то это большая неудача для операционной системы, а не для программы. Пользователя, прежде всего, волнует его программа. Если у моей мамы перестанет работать игра «Шарики» после переустановки Windows, она точно откажется от новой Windows, но не от «Шариков». Для того чтобы обеспечить совместимость со старыми программами, необходимо, чтобы соблюдался фундаментальный принцип. Код должен всегда использовать именно тот компонент, на который изначально ссылался. Допустим, наша программа ссылается на компонент, и впоследствии выходит его вторая версия. Правильно, чтобы в будущем наша программа ссылалась именно на первую версию компонента, а не на вторую, пусть даже совместимую с первым. Делать свой код совместимым со всеми старыми версиями – это принципиально тупиковый путь. Это возможно лишь на коротком промежутке времени и малых функциональных возможностях. С каждой новой версией стоимость поддержки совместимости будет все возрастать и возрастать. Неудивительно, что выпуск последней версии Windows стоил дороже, чем запуск человека на Луну.
Алексей Дубовцев
258
Tango Операционная система из будущего
Операционная система должна поддерживать жесткую систему ссылок, при которой подгружается тот самый код, на который ссылались, а не какой-либо другой. При этом система ссылок должна быть достаточно простой для того, чтобы ее можно было использовать в текстовых файлах, не прибегая к сложным инструментам. Программистам будет очень тяжело использовать криптографические ключи, сложную систему подписей или что-нибудь в этом духе. Они не будут пользоваться подобным подходом, поскольку он слишком сложен. Нужно простое решение и, желательно, гениальное. Создавая первую версию приложения, программист должен вообще не думать о версионности, а с появлением последующих версий у него всегда должна включаться поддержка версионности. Должен соблюдаться принцип «Решай проблемы по мере их поступления».
259
Алексей Дубовцев
Tango Операционная система из будущего
5.7.2
Общая система типов
Операционная система должна предоставлять единую систему типов для всех приложений. Приложения не должны использовать собственные системы типов. Разнообразие систем типов приводит к колоссальным издержкам при интеграции систем. Например, для того чтобы сделать вызов в SQL-базу данных из приложения на «Си», придется написать множество строчек кода для преобразования одних типов в другие и обратно, причем этот код будет куда сложнее, чем среднестатистическая программа, и не будет иметь прямого отношения к ее функциональности. Типы должны быть едины. Я хочу использовать одни и те же типы и в базе данных, и в программной логике – это логично и удобно. Создатели приложений должны быть сосредоточены на функциональности, которую предоставляют пользователям, они не должны писать вспомогательный код. Вспомогательный код – это задача операционной системы, а не прикладного программиста. Единая интегрированная система типов – вторая по важности подсистема после системы ссылок и версионности.
Алексей Дубовцев
260
Tango Операционная система из будущего
5.7.3
Логика
Система должна быть четкой, ясной и понятной. Всего существует два похода к программированию: декларативный и императивный. Декларативный подход предполагает объявление результата, которого вы ходите добиться при выполнения программы. Можно назвать этот подход ЧТО.
Пример декларативного подхода Пример 1 Select top(1) Id, UserNamefrom Users Пример 2
Здравствуй, мир
В первом примере мы требуем вернуть нам одного пользователя из таблицы пользователей. Во втором – хотим, чтобы визуальный движок нарисовал там жирную строку текста.
261
Алексей Дубовцев
Tango Операционная система из будущего
Императивный подход предполагает выдачу четких инструкций компьютеру, что он должен сделать. Можно называть этот подход КАК.
Пример императивного подхода Пример 1 Table.rows[0].cell["UserName"] = "Мистер Твистер"; Пример 2 graphicContext.WriteText("Здравствуй, мир", 100, 100, boldFont);
В первом примере мы записывает в начальный элемент таблицы значение «Мистер Твистер». Во втором примере выводим на экран приветствие «Здравствуй, мир» в точке (100; 100) жирным шрифтом. Я называю второй подход логикой. Логика императивна, она указывает компьютеру, что и как делать. Логика может быть выражена при помощи разных языков программирования, но она всегда является логикой. Она всегда компилируется при помощи компилятора в исполняемый код.
Алексей Дубовцев
262
Tango Операционная система из будущего
Я хочу, чтобы вся логика в системе всегда выражалась и записывалась единообразно, одинаково.
Пример императивного подхода
Логика должна содержать информацию о том, каким компилятором ее нужно превращать в исполняемый код. Этот подход позволит всегда, при любых обстоятельствах, выполнить логику. Программы всегда будут выбирать верный компилятор. Пользователи не будут ограничены в выборе языков и инструментов.
263
Алексей Дубовцев
Tango Операционная система из будущего
5.7.4
Визуальная часть
Визуализация должна производиться путем рендеринга декларативно описанных конструкций. Визуальный блок должен всегда содержать ссылку на движок, который его рисует на экране. Операционной системе лишь останется скачать, запустить этот движок и передать ему декларативное описание интерфейса, выделить контекст для рисования.
Пример императивного подхода Hello world 10,2,3,53,34,23
При загрузке визуального элемента браузер автоматически подключит движок рендеринга графики. Всегда будет подключаться верный код рендеринга, стандарты будут едины – наступит рай для верстальщиков. Такая модель позволит беспрецедентно ускорить развитие сети. Появится огромное количество отличных компонентов, которые позволят быстро и просто воплощать любые визуальные фантазии. Например, вместо того чтобы ломать голову, какие хаки нужно использовать, чтобы реализовать кросс-браузерные закругленные края, можно будет просто подключить движок, который их поддерживает.
Алексей Дубовцев
264
Tango Операционная система из будущего
Пример императивного подхода Hello world
Качественная верстка должна перестать быть уделом избранных.
265
Алексей Дубовцев
Tango Операционная система из будущего
5.7.5
Механизм стилей
Огромное распространение получила технология каскадных таблиц стилей CSS. Эта технология позволяет декларативным образом оперировать атрибутами xml-графа при помощи селекторов вне самого графа. Сама технология CSS очень удобна потому, что позволяет при помощи простого текстового файла трансформировать атрибуты html-модели, что крайне удобно. Однако CSS имеет множество недостатков, например, отсутствие наследования, что не позволяет строить сложные системы классов и селекторов. Существуют более сложные системы стилей, как, например, в WPF, они гораздо более развитые, но ими гораздо сложнее научится пользоваться. У пользователей должна быть возможность выбирать между системами стилей. В самом файле стилей должна быть возможность указать движок стилей.
Простая каскадная таблица стилей <Style engine="os-tango.com/core/styleengine/v1”> .class1 { border : 5; }
Алексей Дубовцев
266
Tango Операционная система из будущего
Или же можно будет подключить более сложные системы стилей.
Расширенный движок для стилей <Style engine="os-tango.com/core/superstyleengine/v1”> .class1 : inherit from .class2 – when a =>a.border< 5 { border : parent.border – child[0].border * 2; }
Этот механизм откроет возможности для развития визуальных систем. Появится огромное количество фреймворков, движков и дополнительных библиотек. Сообщество самостоятельно найдет нужные стандарты и оптимальные решения.
267
Алексей Дубовцев
Tango Операционная система из будущего
5.7.6
Динамический компилятор
Система должна предоставлять открытые механизмы для построения динамического компилятора. Такой компилятор должен уметь строить лексический граф, не разрывая связи с исходным кодом. Когда через API вносятся изменения в граф, компилятор должен автоматически изменять исходный код. Когда вносятся изменения в исходный код, компилятор должен перестраивать граф. Этот механизм позволит построить визуальные средства программирования, при помощи которых конечные пользователи смогут писать программу визуально. Важно, чтобы этот механизм был максимально открытым и предоставлял, в первую очередь, мощный фреймворк для реализации компиляторов конкретных языков. Необходимо дать инструменты разработчикам языков программирования, чтобы компиляторы любых языков было создавать легко и просто.
Алексей Дубовцев
268
Tango Операционная система из будущего
5.7.7
Контекст вызова
В операционной системе должен быть развит механизм контекста вызовов. Теоретически контекст – это окружение и условия, в котором работает текущая логика. Практически же – это объект, который всегда должен быть доступен, просто при написании в коде слова «Context».
Контекст вызова
Этот объект должен содержать:
1. 2. 3. 4.
Информацию о пользователе (от чьего лица исполняется текущий код). Информацию о транзакции. Информацию о приложении. Предоставлять доступ к локальным данным вызова. Данные, сохраняющиеся в контексте одного вызова.
Контекст должен передаваться при удаленных вызовах. Вызовы должны происходить бесшовно – как локально, так и удаленно. Данный механизм крайне удобен, он вносит ясность для конечных программистов. Всегда понятно, где искать нужную информацию, не нужно копаться в сложном API. Можно получить нужные данные мгновенно, просто обратившись к объекту «Context».
269
Алексей Дубовцев
Tango Операционная система из будущего
5.7.8
Модель – представление – контроллер
Система должна предоставлять встроенные механизмы для реализации паттерна «модель – представление – контроллер». Данный подход отлично себя зарекомендовал как для настольных, так и для веб-приложений. Этот паттерн будет особенно удобен для реализации интерфейсов под различные масштабы экрана. Программисты будут создавать несколько представлений: одно – для персональных компьютеров, другое – для мобильных устройств, третье – для планшетников. Система будет выбирать для приложения подходящее на текущий момент представление. Стандартизация этого механизма позволит упростить тестирование приложений под различные платформы, в том числе мобильные. Пользователю будет достаточно запустить эмулятор мобильной платформы, который покажет красиво нарисованное окошко мобильного телефона и подключит туда нужное представление. Пользователю нужно будет лишь нажимать на виртуальные клавиши сотового телефона.
Алексей Дубовцев
270
Tango Операционная система из будущего
5.7.9
Инверсия контроля с контейнерами
Система должна проповедовать идеологию жестких контрактов и взаимозаменяемости. На уровне ядра системы должна быть поддержка паттернов инверсии контроля с поддержкой внешнего конфигурирования. Основные блоки должны подключаться через общий контейнер, а не по прямой жесткой ссылке. Это позволит путем изменения конфигов очень быстро и легко заменять любые части системы. Этот механизм позволит всем желающим собирать такую систему, как им захочется; любой компонент системы можно будет видоизменить и усовершенствовать.
271
Алексей Дубовцев
Tango Операционная система из будущего
5.7.10
Понятие приложения
Само по себе понятие приложения не такое простое, как могло бы показаться на первый взгляд. Можно, конечно, упростить и сказать, что приложение – это логика, которая исполняется на центральном процессоре, но те времена, когда это было правдой, давно прошли. Приложение может вообще не иметь логики в явном виде, оно может лишь содержать визуальную часть – страничку, например. Я вижу себе приложение как сущность, которая объединяет логику, визуальную часть, хранилище и другие ресурсы. Приложение, с одной стороны, сообщает операционной системе о составе своего содержимого, а с другой стороны, запрашивает для себя ресурсы. Само приложение – это манифест, содержащий метаинформацию о приложении и ссылки на составные части приложения (например, на точку входа в приложение). Для того чтобы логике получить доступ к файлам, нужно входить в состав приложения, запросить через это приложение доступ к файлам и получить его с разрешения операционной системы. Также приложение предоставляет всем входящим в него модулям общее пространство экземпляров объектов. Объекты могут общаться друг с другом напрямую, без использования механизмов удаленного вызова.
Алексей Дубовцев
272
Tango Операционная система из будущего
5.7.11
Отладчик и профилировщик
Отладчик и профилировщик должны являться частью ядра и предоставлять API для приложений верхнего уровня. Необходимо заложить механизмы отладки и профилирования прямо во время разработки, они не должны быть дополнением к системе, они должны быть частью системы. Отладчик и профилировщик с самого начала разработки должны использоваться, чтобы получать достоверную информацию о работе ядра и прикладных приложений.
273
Алексей Дубовцев
Tango Операционная система из будущего
5.7.12
Транзакционность
Механизм транзакций крайне важен для поддержания стабильности и надежности работы системы. Он должен быть крайне простым и понятным в использовании.
Транзакции
Программиста должно волновать только три вещи:
1. 2. 3.
Как сделать, чтобы вызов поддерживал транзакции. Как начать и закончить транзакцию. Каким образом доступ к данным в памяти сделать тразакционным.
Алексей Дубовцев
274
Tango Операционная система из будущего
Поддержку транзакций можно реализовать следующим образом.
Поддержка транзакций [CommitMethod= TransactionMethod_Commit] [RoolbackMethod= TransactionMethod_Roolback] public TransactionMethod() { vartransactionContext = Context.Transaction; } public TransactionMethod_Commit() { vartransactionContext = Context.Transaction; } public TransactionMethod_Rollback() { vartransactionContext = Context.Transaction; }
Использование транзакций должно быть гораздо проще.
Использование транзакций Transaction { ReadFromDatabase(); WriteToDatabase(); Rollback; // Commit; }
275
Алексей Дубовцев
Tango Операционная система из будущего
5.7.13
Транзакционная память
Технологи STM (Software Transaction Memory) достаточно хорошо исследованы и проработаны, тем не менее они пока не получили распространения в промышленных платформах. Они предоставляют собой очень простой и понятный механизм для автоматизации доступа данных в параллельных вычислениях, которые становятся все актуальнее в связи с широким распространением многоядерных процессоров. Прежде всего, транзакционная память дает идеологическое преимущество. Программистам гораздо легче понять, что «кусок памяти» помечен как транзакционный, чем представить, как работают механизмы синхронизации потоков.
Использование транзакций atomic { newNode->prev = node; newNode->next = node->next; node->next->prev = newNode; node->next = newNode; }
Такому подходу гораздо проще обучить программистов прикладных решений, чем объяснять им устройство событий, мьютексов и мониторов.
Алексей Дубовцев
276
Tango Операционная система из будущего
5.7.14
Менеджер памяти
Я считаю, что необходимо стремиться к использованию только лишь управляемого кода. Приложения не должны напрямую использовать инструкции процессора. Более того, я сторонник идеи, что в полноценной операционной системе не должен использоваться механизм колец защиты памяти. Виртуализация памяти для приложений и прямой уровень доступа для драйверов – это устаревшая технология. Современная операционная система должна запускать и драйвера, и пользовательские приложения на нулевом кольце защиты, те и другие должны использовать управляемый код и управляемую память. При помощи управляемого кода операционная система сможет полностью контролировать приложения и драйвера, не используя механизмы колец защиты. Это дает огромное количество преимуществ:
Преимущества
1. 1. 2.
3.
Экономия на скорости переключения контекста ядра и пользователя, система будет более быстрой. Единые механизмы управления памятью делают ее более стабильной и надежной. Общие механизмы как для драйверов, так и для пользователей, позволят тем и другим применять единые инструменты разработки. Драйвера будут писаться на управляемом коде, это существенно снизит стоимость их разработки.
Конечно, такая архитектура считается инновационной, но практические тесты доказали, что она вполне работоспособна.
277
Алексей Дубовцев
Tango Операционная система из будущего
5.7.15
Исполняемый язык (Execution Language)
Исполняемый язык является связующим звеном между высокоуровневым языком и машинным кодом. Программисты пользовательского уровня должны писать свои программы на языке любой лексики, а эти языки должны компилироваться в исполняемый язык, который затем компилируется в машинный код. Такая схема хорошо себя зарекомендовала и дает огромные преимущества при подключении новых платформ и создании новых языков программирования. Именно такая схема позволит реализовать запуск платформы на любом из устройств. Можно будет подключать новые платформы и устройства очень быстро, не застрагивая основную архитектуру системы.
Алексей Дубовцев
278
Tango Операционная система из будущего
5.7.16
Компилятор времени исполнения
Задача компилятора времени исполнения – транслировать исполняемый язык в машинный код текущей платформы. Если программа исполняется на персональном компьютере, то код будет транслирован в х86инструкции, если на мобильном телефоне, то в ARM-инструкции или в какие-нибудь другие. Платформа должна иметь возможность эволюционировать, в ходе ее развития возможности исполняемого языка будут постоянно расширяться. Необходимо, чтобы старые версии языка корректно исполнялись одновременно с новыми. Платформа должна поддерживать технологию одновременного запуска: когда два компилятора разных версий спокойно сосуществуют в рамках одной платформы. Такой подход соответствует идеологии жестких ссылок и версионности. А главное – фундаментальному принципу версионности.
Фундаментальный принцип версионности Код должен всегда использовать именно тот компонент, на который изначально ссылался.
Если программист написал код на исполняемом языке версии 1, то он будет знать, что эта программа всегда будет исполняться при помощи кода компилятора версии 1. Именно этого кода, а не, скажем, кода компилятора версии 2, но совместимого также с версией 1. Всегда важно, чтобы код использовал именно тот компонент, на который он ссылался.
279
Алексей Дубовцев
Tango Операционная система из будущего
5.7.17
Уровень абстракции от платформы
Танго должна работать поверх самых распространенных операционных систем (а в будущем – прямо поверх железа) и являться самостоятельной операционной системой. Приложениям все базовые сервисы будут предоставляться через API стандартной библиотеки. Сама стандартная библиотека должна использовать API, предоставляющий уровень абстракции от платформы. Этот API должен быть стандартизирован, а его реализации – зависеть от конкретной платформы. Любой сможет разработать свой уровень абстракции от платформы, чтобы ввести поддержку новых программных и аппаратных систем.
Алексей Дубовцев
280
Tango Операционная система из будущего
5.7.18
Автоматизированные тесты
Каждая строка кода обязательно должна быть протестирована при помощи автоматизированных тестов. Необходимо стремиться к 100процентному покрытию автоматическими тестами исходного кода системы. Тесты должны запускаться в простом и удобном фреймворке, чтобы можно было протестировать функциональность системы на любом устройстве и любой платформе. Система не может считаться работоспособной, если она не покрыта тестами. Эти тесты должны стабильно выполняться у всех разработчиков, а не только у создателей тестов или кода. Тестирование должно проводиться как для основного функционала, так и для того, чтобы «завалить» систему и найти в ней недокументированные особенности. Нужно пытаться из тестов привести систему к падению, используя API совершенно не так, как это предполагалось его создателями.
281
Алексей Дубовцев
Tango Операционная система из будущего
5.7.19
Безопасность
В ядро системы должны быть встроены механизмы защиты от различных угроз, которые подстерегают систему и ее пользователей. Очень важно защитить систему от атак на переполнение и использование недокументированных возможностей. Также необходимо вставить механизмы контроля ядра и приложений, чтобы они не совершали несанкционированных действий. Необходимо делать упор в сторону динамических защит. Новое поколение защит, которые постоянно мутируют свой код, чтобы невозможно было его отловить и автоматически обойти или уничтожить. Полиморфные технологии атак существуют годами и доказали свою состоятельность, теперь пришло время для полиморфных технологий защит.
Алексей Дубовцев
282
Tango Операционная система из будущего
283
Алексей Дубовцев
Tango Операционная система из будущего
6 Раздел 6 – Реализация
6 Алексей Дубовцев
Реализация
284
Tango Операционная система из будущего
6.1 Введение Для меня крайне важна прикладная сторона вопроса. Я хочу, чтобы система Танго была воплощена в виде реально работающей системы. Я прекрасно осознаю, что это крайне сложный процесс с многих точек зрения. Во-первых, это сложнейшая информационная система, и чтобы ее создать, необходима слаженная работа очень многих людей. Во-вторых, сама разработка очень и очень объемна, нужно написать огромное количество кода и еще больше кода для тестов. Но, с другой стороны, я имею опыт разработки сложнейших систем и знаю, что то, что в начале проекта кажется безумием, в конце стабильно работает, хотя в это даже не верится. Сложнее всего делать первые шаги и начинать проект.
Итерации
Процесс производства системы я вижу итерационным. Каждая итерация содержит следующие стадии.
1. 2. 3. 4. 5. 6. 7.
Определение требований Подключение людей. Планирование. Реализация. Тестирование. Документирование. Ввод в эксплуатацию.
Определение требований – крайне важно перед началом итерации четко понимать, что будет разработано; просто так разрабатывать ничего не стоит. Подключение людей – определение того, кто и какие требования будет разрабатывать, какие задачи будет решать.
285
Алексей Дубовцев
Tango Операционная система из будущего
Планирование – распределение последовательности исполнения задач между участниками процесса, чтобы избежать сумбурности и хаотичности. Реализация – создание программного кода. Тестирование – тестирование созданного программного решения на удовлетворение требованиям, производительность, надежность, отсутствие дыр в безопасности. Документирование – написание статей о созданных решениях, чтобы информация о системе постоянно накапливалась, это важно как для ее использования, так и для развития. Ввод в эксплуатацию – на первых этапах всего лишь включение разработанных требований в состав основной ветки исходных кодов. На этапе работающей системы – развертывание обновлений на серверах и компьютерах пользователей.
Алексей Дубовцев
286
Tango Операционная система из будущего
С каждым разом итерации будут включать себя все больше требований и вовлекать все больше людей. Это не означает, что в итоге появятся мегаитерации, содержащие миллионы требований и тысячи людей. Итерация сама по себе должна быть небольшой, это важно, чтобы контролировать качество программного продукта на всех этапах его производства. По мере развития проекта можно будет запускать некоторые из итераций параллельно, если команды будут не зависеть друг от друга. Классическая итерация длится неделю, билд выпускается в пятницу, команда состоит из 5–10 человек.
287
Алексей Дубовцев
Tango Операционная система из будущего
6.1.1
Первая итерация
Первая итерация – это как закладка первого камня в фундамент здания. Процесс символичный и очень важный. Он говорит миру о том, что разработка начата, процесс идет.
Итерации
Итак, пойдем по пунктам.
1. 2. 3. 4. 5. 6. 7.
Определение требований. Подключение людей. Планирование. Реализация. Тестирование. Документирование. Ввод в эксплуатацию.
Алексей Дубовцев
288
Tango Операционная система из будущего
6.1.2
Определение требований
Для начала необходимо положить начало виртуальной машины, лежащей в основе операционной системы. Исторически сложилось, что большинство программистов начинало изучать новые технологии с примера «Hello, world», не будем же нарушать традицию. В первой итерации наша виртуальная машина должна запустить приложение, которое выведет на экран фразу «Hello, world». Для этого нам понадобятся:
1.
Итерации
2.
3. 4.
289
Язык исполнения (Execution Language): a. Инструкция вызова метода – call. b. Инструкция загрузки ссылки на строку «Hello, world». Виртуальная машина: a. Базовые структуры представления приложений. b. Базовые структуры представления метаинформации о типах. c. Базовые структуры представления для языка исполнения. d. Компилятор времени исполнения. Компиляции для инструкций call и загрузки ссылки на строку. e. Механизм запуска языка исполнения. Механизм построения билда. Скрипты для сборки приложения под Windows.
Алексей Дубовцев
Tango Операционная система из будущего
В первой итерации наша виртуальная микромашинка должна уметь выполнять приблизительно такой код.
Код для микро виртуальной машины ldstr“Hello, world” call Tango.Console.WriteLine(Tango.String) На языке более высокоуровневой логики:
Код для микро виртуальной машины Tango.Console.WriteLine(“Hello, world”)
Конечно, сама по себе такая виртуальная машина не может представлять интереса для промышленного использования. Тем не менее она очерчивает первые наброски скелета системы. Если говорить конкретно, то она реализует две первые инструкции: ldstr (загрузка в стек ссылки на строку) и call (вызов метода), а значит, она реализует механизм инструкций. Всего для функционирования системы необходимо реализовать примерно пару сотен инструкций. Когда механизм определен, то по аналогии можно быстро реализовать все эти инструкции. Одной из важных задач первых итераций является определение стандартов и подходов к кодированию системы так, чтобы множество людей смогло быстро подключиться к разработке, и это было бы просто. В качестве стандарта я буду использовать версию венгерской нотации и полное четкое именование объектов. Названия объектов должны быть понятны при беглом чтении, если объект управляет инструкциями языка, то он будет называться ExecutionLanguageManager (имена, вроде elm, – это плохо, и по возможности их нужно избегать).
Алексей Дубовцев
290
Tango Операционная система из будущего
Второй важный момент – это расширяемость системы. В системе применяется слабо связанная модель взаимодействия (decoupling). Каждый модуль предоставляет во внешний мир контракт, состоящий из модели и интерфейсов. Модуль реализует этот контракт. Извне модуль доступен только через контракт. Это механизм позволит заменять реализацию модулей системы по желанию любого участника. Таким образом, множество людей может улучшать и расширять систему. Приведем наглядный пример. Пусть у нас будет некий класс ExecutionManager, который исполняет инструкции. Опишу файлы с кодом.
Файл: ExecutionManager.Contract.Model.h struct Instruction { int code; };
Файл: ExecutionManager.Contract.Interface.h classIExecutionManager { public: virtualvoid Execute(Instruction* instruction) = 0; };
291
Алексей Дубовцев
Tango Операционная система из будущего
Файл: ExecutionManager.Impl.h class ExecutionManager : public IExecutionManager { public: virtual void Execute(Instruction* instruction); };
Файл: ExecutionManager.Impl.cpp #include #include #include #include
"stdafx.h" "ExecutionManager.Contract.Model.h" "ExecutionManager.Contract.Interface.h" "ExecutionManager.Impl.h"
void ExecutionManager::Execute(Instruction* instructi on) { printf((char*)&instruction->code); }
Алексей Дубовцев
292
Tango Операционная система из будущего
Файл: Sample.cpp #include #include #include #include
"stdafx.h" "ExecutionManager.Contract.Model.h" "ExecutionManager.Contract.Interface.h" "ExecutionManager.Impl.h"
int _tmain(int argc, _TCHAR* argv[]) { Instruction* instr = new Instruction(); IExecutionManager* executionManager = new Ex ecutionManager(); instr->code = 100; executionManager->Execute(instr); return 0; }
Теперь – пояснения. ExecutionManager.Contract.Model.h Модель хранит типы и структуры данных, которые используются модулями. ExecutionManager.Contract.Interface.h Интерфейсы декларируют стандарты обращения к модулям, то есть API.
293
Алексей Дубовцев
Tango Операционная система из будущего
ExecutionManager.Impl.h Реализация – содержит код модуля. Такая архитектура очень гибка и оптимально подходит для расширяемой системы, она позволяет быстро и просто заменить любой из модулей. Возвращаясь к примеру, можно просто заменить файл ExecutionManager.Impl.cpp на более новую реализацию и построить проект, и новый более совершенный модуль сразу же станет частью системы. Естественно, для того чтобы этот подход работал, все модули должны взаимодействовать друг с другом только через контракты. Такой подход также удобен тем, что тесты пишутся не для конкретной реализации, а для контрактов, и если реализация обновляется или заменятся, то тесты остаются по-прежнему актуальными.
Алексей Дубовцев
294
Tango Операционная система из будущего
6.1.3
Подключение людей
С требованиями определились, теперь выберем людей. На первой итерации это буду я сам. Проще некуда. Результат первой итерации, описан в разделе 7 этой книги. Там вы найдете микро виртуальную машину, которая дает предоставление о том, как делаются подобные штуки.
295
Алексей Дубовцев
Tango Операционная система из будущего
6.1.4
Планирование
Для начала необходимо выбрать компилятор и библиотеки, которые будут использоваться для разработки. Идти будем по пути наименьшего сопротивления, выберем VisualC++ с набором стандартных библиотек. В дальнейшем, скорее всего, конфигурация будет меняться, но на первых этапах это абсолютно не играет никакой роли. Далее нужно определить контракты. После определения контрактов необходимо внимательно проверить неправильность выбранных паттернов и убедиться в том, что нет излишней сложности и дублирования. Все, что не относится к сути, нужно без какого-либо сожаления удалить. Затем следует реализовать контракты – закодировать логику их поведения.
Алексей Дубовцев
296
Tango Операционная система из будущего
6.1.5
Реализация
Реализация – в принципе довольно простой процесс. Необходимо сесть и, отталкиваясь от контрактов, написать код. При этом не стоит сильно заботиться о производительности, оптимальности, безопасности. На этом этапе важнее всего соблюсти функциональные требования контракта. Оптимизировать написанный код нужно уже после того, как станет ясно, что система заработала. Каждый кусок кода должен быть понятен и минимален по своему размеру, очень важно не усложнять реализацию. Важно выкидывать все лишнее и всегда упрощать систему.
297
Алексей Дубовцев
Tango Операционная система из будущего
6.1.6
Тестирование
Можно написать заглушки для автоматизированных тестов. На первой итерации сильно тестировать смысла не имеет, поскольку контракты будут быстро видоизменяться, особенно в первое время, а следовательно, тесты будут моментально устаревать.
Алексей Дубовцев
298
Tango Операционная система из будущего
6.1.7
Документирование
Необходимо написать короткую статью о первом примере, чтобы было проще в нем разбираться, а также дать вводную для дальнейших итераций.
299
Алексей Дубовцев
Tango Операционная система из будущего
6.1.8
Ввод в эксплуатацию
Просто выложить в репозитарий исходного кода.
Алексей Дубовцев
300
Tango Операционная система из будущего
6.2 Принцип основных контуров В процессе разработки сложных систем важнее всего придерживаться принципа основного контура. Контур – это условное понятие. Приблизительно его можно определить как одну из основных функций системы. Например, если мы имеем дело с приложением по сбору заявок от пользователей, то основным контуром будет ввод заявок в систему, размещение их в базе данных и отображение пользователю. Когда реализован основной контур, вокруг него можно создавать промышленную систему, добавлять пользователей, авторизацию, защиту информации о заявках, покупку заявок, выставление цен – и так до бесконечности.
Все системы условно можно разбить на вертикальные и невертикальные. Вертикальные системы – это те, которые принимают ввод пользователя, обрабатывают его и записывают в базу данных, или другие системы. То есть пропускают информацию сквозь себя, являясь посредником, трансформатором информации.
301
Алексей Дубовцев
Tango Операционная система из будущего
Наиболее яркими примерами вертикальных систем являются сайты. Вертикальные системы разрабатывать довольно просто. Необходимо выявить главный контур, реализовать его, затем наращивать дополнительные контуры. Невертикальные системы не содержат ярко выраженных главных контуров. Операционная система – яркий пример невертикальной системы. Как такового основного контура в ней нет. Тем не менее необходимо попытаться его выделить. Главный контур явно относится к способности системы исполнять простейшие приложения.
Простейшее приложение vari = 10; for (varcounter = 10; counter < 10; counter++) { Tango.Console.WriteLine(“Hello world”); }
Если система сможет выполнить простейшее приложение, то можно, пожалуй, будет считать, что набросок основного контура системы сделан.
Алексей Дубовцев
302
Tango Операционная система из будущего
Цепочка исполнения
Для того чтобы исполнить подобный код, необходима следующая цепочка:
1. 2. 3. 4.
Загрузчик файлов. Парсер XML. Компилятор высокоуровневого языка Tango Logic. Ядро виртуальной машины: a. Структуры для хранения метаинформации. b. Компилятор времени исполнения.
Обратите внимание, только компиляторов здесь две штуки. А по-хорошему нужен еще один компилятор языка исполнения (Execution Language). Причем компилятор высокоуровневого языка должен быть написан на самом языке – это одно из важных требований в системе. А как написать компилятор языка на языке, для которого еще нет компилятора. Много задач, но все они решаемы. Необходимо упросить и идти снизу вверх – с уровня виртуальной машины. Необходимо реализовать:
1. 2.
Структуры для хранения метаинформации, включая исполняемый код (Execution Language). Компилятор времени исполнения.
Далее ко всем этому добавить множество синтетических тестов, после чего можно будет строить уровни выше – компилятор исполняемого языка, компилятор логики.
303
Алексей Дубовцев
Tango Операционная система из будущего
6.3 Первый прототип Истина Путь в тысячу миль начинается с первого шага, а дорогу осилит идущий...
Руководствуясь логикой построения основного контура, построим первый и крайне простой прототип системы. Мы уже поняли, что на языке высокого уровня мы должны научиться выполнять хотя бы такой код:
Высокоуровневый код для исполнения Tango.Console.WriteLine(“Hello, world”);
На языке исполнения то же самое будет выглядеть вот так:
Код для исполнения .ldstrHelloworld .call Tango.Console.WriteLine
Очевидно, нам необходимо уметь исполнения (Execution Language).
Алексей Дубовцев
исполнять
инструкции
языка
304
Tango Операционная система из будущего
Мы должны уметь транслировать инструкцию call исполняемого языка в инструкцию базового процессора, например, x86.
Необходимо научится транслировать хотя бы одну инструкцию. Дабы долго не рассуждать, попусту приведем код, который это умеет делать.
Код для исполнения #include "stdafx.h" #include <Windows.h> // Эта функция может вывести текст на консоль void __stdcall Tango_Console_WriteLine() { puts("Hello, world"); } // Это наш микро компилятор времени исполнения PBYTE MicroJit_x86() { PBYTE callMethod = (PBYTE)VirtualAlloc(0, 4096 , MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // emit x86 call instruction callMethod[0] = 0xe8; // emit adddress of ConsoleWriteLine Function 305
Алексей Дубовцев
Tango Операционная система из будущего
DWORD addr = (DWORD)&Tango_Console_WriteLine; addr -= (DWORD)callMethod + 5; memcpy(&callMethod[1], &addr, sizeof(addr)); // emit x86 ret instruction callMethod[5] = 0xc3; return callMethod; }
int _tmain(int argc, _TCHAR* argv[]) { PBYTE callInstruction = MicroJit_x86(); __asm { call callInstruction } return 0; }
Кратко поясним принцип работы программы. Есть функция Tango_Console_WriteLine – она выводит на консоль приветствие – «Hello, world». Есть функция MicroJit_x86, она выделяет память под код и записывает туда вызов этой функции, а затем возврат на прежнюю точку исполнения. При помощи этих нехитрых операций мы получили в памяти участок процессорного кода, который является проекцией виртуального кода. В целом, именно этого мы и хотели.
Алексей Дубовцев
306
Tango Операционная система из будущего
Развитие
Отталкиваясь от этого маленького примера, можно последовательно развивать виртуальную машину.
1. 2. 3. 4.
Добавить трансляцию дополнительных инструкций. Добавить трансляцию списка инструкций. Добавить контейнер для списка инструкций в виде метода. Добавить контейнер для метода в виде класса.
Шаги довольно простые, но как только они будут выполнены, виртуальная машина станет гораздо серьезнее. Она уже будет поддерживать объекты, методы и практически полноценную компиляцию времени исполнения. Именно так, за шаг за шагом, реализуется проект. Причем, что интересно, каждый шаг прост и понятен, ничего сложного, никакой магии.
307
Алексей Дубовцев
Tango Операционная система из будущего
7 Раздел 7 – Права и интеллектуальная собственность
7 Алексей Дубовцев
Права и интеллектуальная собственность
308
Tango Операционная система из будущего
7.1 Права Главное Система должна быть общедоступна и открыта.
Я не юрист, поэтому не буду рассуждать о правах в юридических терминах. До тех пор пока система не получит широкого распространения и не нужно будет подходить к вопросу серьезно, с привлечением хорошо разбирающихся в вопросе юристов, я упрощу юридическую модель следующим образом. Права на систему (бренд, идею, реализацию) принадлежат мне, Дубовцеву Алексею. Исходный код открыт, но все права на него принадлежат мне. Я могу в будущем вносить любые изменения в права. Когда система получит распространение, необходимо будет очень четко и аккуратно прописать все юридические аспекты ее использования. Делать это обязательно нужно с привлечением сообщества. Легитимность конечной лицензии крайне важна. Для меня крайне важно, чтобы технология была общедоступна и открыта, чтобы ею пользовались люди и чтобы им не приходилось много и постоянно платить.
309
Алексей Дубовцев
Tango Операционная система из будущего
8 Раздел 8 – Заключение
8 Алексей Дубовцев
Заключение
310
Tango Операционная система из будущего
Спасибо больше за то, что прочитали книгу, за то, что дали мне возможность поделиться с вами своими идеями.
http://os-tango.com
311
Алексей Дубовцев