год-2011
304 страницы
Книга Танго. Операционная система из будущего. Дубовцев содержит взгляд автора на построение операционных систем нового поколения. Рассмотрены разные аспекты использования операционных систем в масштабах планеты. Подробно описаны потребности и рекомендации по реализации принципиально новой системы. Показана детальная архитектура системы, разбитая на 3 крупных блока: глобальная архитектура, макроархитектура, микроархитектура. Приведен пример исходного кода микровиртуальной машины.
Оглавление книги
Танго. Операционная система из будущего. Дубовцев
О чем эта книга 11
Об авторе 13
1 Раздел 1 — Послание к человечеству 15
1.1 Послание к человечеству 17
1.2 Почему я решил написать эту книгу 18
1.3 Формат книги — «Хотелки» 21
1.3.1 Наиболее важные группы пользователей 23
1.4 Формат книги — Реализация 26
1.5 Формат книги — Архитектура 27
1.5.1 Глобальный уровень архитектуры 31
1.5.2 Макроуровень архитектуры 32
1.5.3 Микроархитектура 33
1.5.4 Архитектура в жизни 35
1.6 Священные войны 37
1.7 Формат книги — версия текста 38
2 Раздел 2 — Видение системы. «Хотелки» 39
2.1 Введение 41
2.2 «Хотелки» 42
2.2.1 Обычный пользователь 42
2.2.2 Безопасность и надежность 44
2.2.3 Владелец дата-центра 45
2.2.4 Разработчик приложений 46
2.2.5 Верстальщик 48
2.2.6 Владелец предприятия 49
2.2.7 Администратор 50
2.2.8 Разработчик компонентов для приложений 51
2.2.9 Инвестор в приложения 52
2.2.10 Создатель приложения 53
2.3 Обычный пользователь 54
2.3.1 Хочу, чтобы мои данные были доступны мне всегда и везде с любого устройства 55
2.3.2 Хочу, чтобы социальный сервис был частью операционной системы 57
2.3.3 Хочу иметь простой механизм обучения, поддержки и помощи 60
2.3.4 Хочу иметь множество дешевых лицензионных приложений 62
2.3.5 Хочу, чтобы файлы всегда открывались 63
2.3.6 Хочу быстро находить нужные мне приложения и моментально начинать их использовать 64
2.3.7 Хочу иметь единую платежную систему 66
2.3.8 Хочу иметь единую систему обучающих видео 68
2.3.9 Хочу, чтобы все приложения были доступны по ссылке 69
2.3.10 Хочу, чтобы любые документы и файлы были доступны по ссылке 70
2.3.11 Хочу иметь голосовое и видеообщение, быстро и просто 71
2.3.12 Хочу иметь единую систему сообщений и почты 72
2.3.13 Хочу открывать все свои старые файлы 73
2.3.14 Хочу создавать документы совместно с моими друзьями 74
2.3.15 Хочу иметь возможность отзывать обратно и редактировать посланные сообщения 75
2.3.16 Хочу иметь общую единую систему уведомлений 76
2.3.17 Хочу, чтобы установка Танго была всегда простой и максимально быстрой 77
2.3.18 Хочу, чтобы операционная система работала всегда стабильно и ее не нужно было переустанавливать 79
2.3.19 Хочу иметь возможность работать с системой автономно, без использования сети 80
2.3.20 Хочу всегда знать, какие файлы к чему относятся и чем занято у меня место 81
2.3.21 Хочу иметь простой механизм публикации и доставки видеоконтента 82
2.3.22 Хочу искать информацию на основе рекомендаций живых людей 83
2.3.23 Хочу иметь понятную систему сообщений об ошибках 84
2.3.24 Хочу, чтобы Танго умела работать на компьютерах без жесткого диска 86
2.4 Владелец предприятия 87
2.4.1 Хочу концентрироваться на корпоративных сервисах, а не на инфраструктуре 88
2.4.2 Хочу разворачивать приложение по всему предприятию централизованно 91
2.4.3 Хочу подключать пользователей к моей инфраструктуре в один клик 92
2.4.4 Хочу, чтобы все документы, которые делают сотрудники в рамках компании, были всегда доступны и никогда не терялись 93
2.4.5 Хочу иметь единый поиск по данным предприятия 94
2.4.6 Хочу иметь возможность быстро организовывать отделы, группы, проектные команды 95
2.5 Безопасность и надежность 96
2.5.1 Хочу, чтобы мои данные всегда были надежно защищены 97
2.5.2 Хочу защищать свои данные при помощи SMS 99
2.5.3 Хочу защищать свои данные при помощи живого звонка 100
2.5.4 Хочу защищать свои данные при помощи электронного брелока 101
2.5.5 Я параноик, хочу защищать свои данные очень сильно 102
2.5.6 Хочу, чтобы мои данные были защищены на физическом уровне 103
2.5.7 Хочу, чтобы приложения без моего ведома не получали доступ к моим данным 104
2.5.8 Не хочу, чтобы моим аккаунтом завладели «злодеи» 105
2.5.9 Не хочу иметь тысячу паролей, хочу иметь только один 106
2.5.10 Хочу, чтобы мои данные хранились там, где я этого хочу 107
2.5.11 Хочу, чтобы мои данные хранились на чужих компьютерах минимальное время 108
2.5.12 Хочу иметь возможность загружать приложения из-под другого логина и пароля 109
2.5.13 Хочу иметь возможность загружать приложения в режиме инкогнито 110
2.5.14 Хочу иметь встроенные механизмы контроля трафика и анти-DDoS 111
2.5.15 Хочу, чтобы операционная система защищала меня от спама 112
2.5.16 Хочу иметь возможность установить систему в закрытом варианте и без связи с внешним миром 113
2.6 Владелец дата-центра 114
2.6.1 Хочу купить компьютеры, поставить на них софт и моментально получать с них прибыль 115
2.7 Владелец приложения 117
2.7.1 Хочу просто и быстро находить инвестора для моих приложений 118
2.7.2 Хочу иметь полную информацию о пользователях моих приложений 122
2.7.3 Хочу иметь простую и удобную систему лицензирования приложений 123
2.7.4 Хочу иметь единую и простую рекламную платформу 124
2.8 Разработчик приложений 125
2.8.1 Хочу, чтобы один и тот же код запускался на всех платформах 126
2.8.2 Хочу знать информацию о качестве сервиса дата-центров 128
2.8.3 Хочу иметь единую систему идентификации пользователей, логина 130
2.8.4 Хочу, чтобы порог входа для программистов был максимально низкий 131
2.8.5 Хочу проектировать приложение визуально 133
2.8.6 Хочу, чтобы все форматы и протоколы были открытыми — текстовыми 135
2.8.7 Хочу сохранять свои данные в базе просто и сразу, без сложных движков 137
2.8.8 Хочу, чтобы любой компонент системы можно было заменить на другой 139
2.8.9 Хочу писать логику на том языке, который мне нравится 141
2.8.10 Хочу иметь одни и те же инструменты на все случаи для работы с кодом 143
2.8.11 Хочу моментально разворачивать приложения в сети 145
2.8.12 Хочу иметь четкую и логичную систему версионности и ссылок во всем 146
2.8.13 Хочу писать социальные комментарии прямо в коде 149
2.8.14 Хочу иметь простую систему создания и лицензирования компонентов 152
2.8.15 Хочу иметь единый каталог компонентов 154
2.8.16 Хочу иметь единую систему управления проектами и исходным кодом 155
2.8.17 Хочу иметь единую систему удаленного вызова объектов 156
2.8.18 Хочу иметь общую систему телеметрии и логов 157
2.8.19 Хочу иметь визуальные инструменты для всего 159
2.8.20 Хочу иметь совместимость со старым кодом и старыми компонентами 160
2.8.21 Хочу, чтобы была возможность защищать свою интеллектуальную собственность 161
2.8.22 Хочу, чтобы в операционную систему была встроена поддержка транзакций 162
2.8.23 Хочу, чтобы профайлер и отладчик работали удаленно 163
2.8.24 Хочу иметь встроенный сервер конфигураций 164
2.8.25 Хочу иметь открытый механизм локализации приложений 165
2.9 Верстальщик 166
2.9.1 Хочу делать приложения только один раз для всех платформ 168
2.9.2 Хочу расширять модель верстки новыми компонентами 170
2.9.3 Хочу писать логику для клиентских приложений на своем любимом языке 172
2.9.4 Хочу использовать сложные каскадные таблицы стилей 174
2.10 Администратор приложения 175
2.10.1 Хочу иметь возможность удаленно подключаться к компьютеру и управлять им 176
2.10.2 Хочу иметь встроенные механизмы масштабирования приложений 177
2.10.3 Хочу иметь поддержку глобального кэша для моих приложений 179
2.10.4 Хочу иметь встроенный механизм резервирования приложений 181
2.10.5. Хочу, чтобы механизмы масштабирования и резервирования работали не привязанно к дата-центру 182
2.10.6 Хочу выстраивать приложения в рабочие цепочки 183
2.11 Итог 184
3 Раздел 3 — Организация, или Как съесть слона 185
3.1 Основные принципы 187
3.2 Принципы в жизни 189
3.3 Исходный код 190
3.4 Сообщество 191
3.4.1 Принципы организаций сообществ 193
3.5 Система управления проектом 194
3.5.1 Люди 195
3.5.2 Требования 196
3.5.3 Задачи 197
3.5.4 Ошибки 198
3.5.5 Тесты 199
3.5.6 Статьи 200
3.5.7 Дискуссии 201
3.5.8 Комментарии 202
3.5.9 Глобальность проекта 203
3.5.10 Развитие самой системы управления 204
3.6 Этапы развития проекта 205
3.6.1 Распространение идеи 206
3.6.2 Формирование первоначальных требований 207
3.6.3 Формирование списка задач 208
3.6.4 Создание первого прототипа 209
3.6.5 Организация тестирования 210
3.6.6 Организация сообщества 211
3.6.7 Альфа-запуск 211
3.6.8 Бета-запуск 212
3.6.9 «Продакшин»-запуск 212
3.6.10 Наращивание функционала и развитие системы 213
3.7 Как вы можете внести свой вклад 214
3.7.1 Рассказать наибольшему количеству людей о Танго 215
3.7.2 Разместить ссылку на Танго на информационных ресурсах 216
3.7.3 Написать статью, книгу, помочь переводом 217
3.7.4 Разработать часть системы 218
3.7.5 Помочь проекту финансово 219
3.7.6 Помочь в формировании требований 220
3.7.7 Помочь техникой и инфраструктурой 221
3.7.8 Обучить пользователей 222
3.7.9 Предложить что-либо еще 222
4 Раздел 4 — Экономика и финансы 223
4.1 Модель монетизации 225
5 Раздел 5 — Архитектура 227
5.1 Принципы 229
5.1.1 Принцип отсутствующих деталей 230
5.1.2 Принцип песочницы 232
5.1.3 Принцип слабой связанности 233
5.1.4 Принцип заменимости 234
5.2 Суть, а не форма 235
5.3 Реализуемость 237
5.3.1 Оценки реализуемости 238
5.3.2 Как понять уровень программиста 240
5.4 Архитектура 242
5.4.1 Глобальный уровень 244
5.4.2 Макроуровень 245
5.4.3 Микроуровень 246
5.5 Глобальный уровень — цель 247
5.6 Макроуровень 248
5.7 Микроуровень 249
5.7.1 Версионность и система ссылок 250
5.7.2 Общая система типов 252
5.7.3 Логика 253
5.7.4 Визуальная часть 256
5.7.5 Механизм стилей 258
5.7.6 Динамический компилятор 260
5.7.7 Контекст вызова 261
5.7.8 Модель — представление — контроллер 262
5.7.9 Инверсия контроля с контейнерами 263
5.7.10 Понятие приложения 264
5.7.11 Отладчик и профилировщик 265
5.7.12 Транзакционность 266
5.7.13 Транзакционная память 268
5.7.14 Менеджер памяти 269
5.7.15 Исполняемый язык (Execution Language) 270
5.7.16 Компилятор времени исполнения 271
5.7.17 Уровень абстракции от платформы 272
5.7.18 Автоматизированные тесты 273
5.7.19 Безопасность 274
6 Раздел 6 — Реализация 275
6.1 Введение 277
6.1.1 Первая итерация 280
6.1.2 Определение требований 281
6.1.3 Подключение людей 287
6.1.4 Планирование 288
6.1.5 Реализация 289
6.1.6 Тестирование 290
6.1.7 Документирование 290
6.1.8 Ввод в эксплуатацию 290
6.2 Принцип основных контуров 291
6.3 Первый прототип 294
7 Раздел 7 — Права и интеллектуальная собственность 299
7.1 Права 301
8 Раздел 8 — Заключение