Проект Copland. История крупнейшего провала Apple

1m36lkoc9sumegwrrt811t76p-y.jpeg

В первой половине 90-х годов наметился очевидный рывок в эволюции операционных систем для персональных компьютеров. Microsoft уже ведет разработку новейшей Windows 95 на замену устаревшей Windows 3.11, IBM продвигает OS/2 Warp 3, отличавшуюся высокой надежностью и достаточно большим ассортиментом прикладных программ. На этом фоне Mac OS 7, ведущая отсчет версий с 1991 года, выглядела уже несколько архаичной. В Apple решили переписать операционную систему с нуля, создав на замену System 7 современную, гибкую и мощную платформу, способную конкурировать с новейшими разработками Microsoft на равных. Проект получил наименование Copland.

В начале нулевых в недрах Apple развивался проект операционной системы с условным названием Taligent, которая разрабатывалась совместно с IBM. В основе этого альянса лежало желание руководства корпорации вывести Apple в разряд крупных, а не нишевых игроков индустрии. Taligent планировалось лицензировать другим разработчикам компьютерного «железа» и выбраться, таким образом, за рамки модельного ряда «макинтошей», встав на путь, которым уверенно шла Microsoft. Еще в марте 1988 года технические менеджеры среднего звена Apple провели выездное совещание, на котором устроили своеобразный «мозговой штурм». Идеи, которые можно было реализовать быстро и ценой относительно небольших затрат, они записали на бумажных карточках голубого цвета, сложные и долгосрочные идеи, вроде полномасштабной превентивной многозадачности — на розовых. Большинство «голубых» (в хорошем смысле) идей нашло свою реализацию в System 7, Taligent же был «розовым» проектом. К 1994 году в недрах Apple создали первый прототип Taligent на основе модифицированной System 7, но он был бесконечно далек от первоначальной задумки. «Линия партии» непрерывно колебалась: то ядро системы собирались писать с нуля, то неожиданно принималось решение портировать устаревшую System 7 на платформу x86 — эта идея даже дошла до стадии внутрикорпоративного прототипа, прежде чем была признана несостоятельной. В итоге Apple утратила интерес к этой разработке и 19 декабря 1995 года официально вышла из проекта. Корпорация IBM еще какое-то время пыталась развивать ОС своими силами, но вскоре отказалась от этой задумки, окончательно похоронив идею. Работавшие над Taligent программисты частью покинули Apple, частью присоединились к другим командам.

Проект новой ОС для «макинтошей» был необходим Apple, как воздух: System 7 заметно уступала конкурентам по функциональным возможностям и фактически исчерпала ресурсы дальнейшего развития, а с выходом Windows 95 Apple и вовсе рисковала утратить позиции на рынке персональных компьютеров. Во времена «молодости» System 7 персональные компьютеры были однопользовательскими, однозадачными, не имели доступа к сети, а данные хранились и передавались преимущественно на дискетах. Псевдомногозадачность реализовывалась путем приостановки работы одного приложения и временной передачи управления другому с последующим возобновлением работы основной программы. Отвечал за диспетчеризацию активности приложений MultiFinder: пользователь мог передать управление активной программе щелчком мыши на ее окне, все остальные работающие в фоновом режиме приложения получали ресурсы лишь на непродолжительное время в периоды простоя активного процесса. Щелчок мышью на другом окне передавал управление соответствующему приложению.

tpo77cffrvaolle-9b5eetrebzg.jpeg


Все это наследие кочевало из версии в версию, и затрудняло эволюцию Mac OS. Например, в System 7 отсутствовала поддержка блока MMU, обеспечивающего управление доступом к памяти по запросу процессора. MMU реализует защиту памяти, не позволяя приложениям случайно перезаписать память другой программы, кроме того, этот механизм используется для передачи данных между библиотеками. В Mac OS 7 операционная система и прикладные программы совместно использовали всю память, а управление доступом было реализовано через API.

Изначально созданная для дискет файловая система System 7 неэффективно и медленно работала на жестких дисках, объем которых быстро рос, а интегрированная в Mac OS подсистема двумерной графики QuickDraw не позволяла реализовать полномасштабную многозадачность для оконных приложений. Разработанная для однозадачных ПК, библиотека QuickDraw использовала общую память с процессом приложения: в этой области памяти хранились данные о текущем состоянии элементов интерфейса запущенной программы, например, о местоположении окна. В результате любая попытка приложения записать некорректные данные в эту общую область приводила к сбою в QuickDraw, что вызывало креш всех остальных запущенных GUI-программ. Сбой в QuickDraw, в свою очередь, инициировал перезапись данных в приложении и приводил к его вылету с ошибкой. Эта особенность System 7 считалась неизлечимой, поскольку ее причина была заложена в архитектуре устаревшего графического интерфейса.

Сложностей в реализации многозадачности добавляло и то, что для полноценной работы System 7 требовала 1 Мбайт оперативной памяти, в то время как большинство персональных компьютеров в то время имело максимум 2. Добавление все новых «наворотов» в Mac OS 7 грозило дальнейшим ростом требований к аппаратным ресурсам, и в первую очередь, к объему ОЗУ. В следующих поколениях ОС многозадачность планировали реализовать благодаря внедрению подсистемы QuickDraw GX, которая позволяла запускать существующие приложения QuickDraw в многозадачной среде, а разработчикам новых программ предлагала расширенные функциональные возможности. В целом, после того, как корабль под названием «Taligent» разбился о рифы, в 1994 году Apple осталась с устаревшей, медленной, неэффективной и ненадежной ОС для «макинтошей», включавшей неимоверное количество дополнительных модулей, костылей и заплаток, изрядно мешавших друг другу. Пресса нередко высказывала сомнения в том, что в Купертино вообще способны создать эффективную и быструю платформу для своих компьютеров.

Иными словами, Apple требовалась современная многозадачная операционная система с удобным графическим интерфейсом, достойным быстродействием, поддерживающая множество полезных пользовательских программ — графических и текстовых редакторов, софта для верстки, работы с мультимедиа, приложений для обмена электронной почтой и серфинга по интернету. И все это — в максимально сжатые сроки. Планы Apple, касающиеся перспективной операционной системы, были поистине амбициозными.

image-loader.svg


Работу было решено вести в два этапа. На первом планировалось реализовать взаимодействие с защищенной памятью и внести ряд других косметических исправлений в архитектуру ОС, поскольку полная замена проблемной библиотеки QuickDraw была слишком ресурсоемкой и требовала пересмотра всей системной архитектуры. Эта модифицированная версия получила порядковый номер Mac OS 7.5 и «музыкальное» название «Моцарт». На следующем этапе предполагалась замена семейства System 7 принципиально новой ОС, названной в честь американского композитора Аарона Копленда — «Copland». С ее появлением жизненный цикл «седьмого» семейства Mac OS должен был завершиться.

Руководителем проекта назначили ведущего инженера Apple Дэвида Нейгела. В новый дивный мир он решил взять все лучшее, что уже было реализовано в Mac OS 7 на тот момент, например, усовершенствованные версии стандартных приложений. Новинкой был и многопоточный файловый менеджер Finder — в Copland у пользователя появлялась возможность запустить сразу несколько процессов копирования и переноса файлов, а также одновременно открыть более одного окна приложения. Было решено окончательно отказаться от поддержки процессоров Motorola 68k в пользу PowerPC. Из-за дефицита софта под новую архитектуру, начиная с версии 7.1.2 Mac OS могла запускать приложения для процессоров Motorola в режиме эмуляции 68k — без поддержки FPU и PMMU. Тогда же в обиход вошли fat binary — исполняемые файлы, содержащие в себе код сразу для обоих архитектур (похожий трюк Apple использовала при переходе с PowerPC на Intel, а позже — с Intel на ARM). Чтобы обеспечить поддержку приложений для Motorola 68k на машинах с процессорами PowerPC, в Mac OS 7 необходимо было эмулировать обработчики прерываний, для чего использовались системные вызовы. Все это требовало значительных ресурсов ОС. В Copland от эмулятора планировали отказаться, что давало значительный прирост производительности и быстродействия. Старые приложения для PowerPC, написанные под Mac OS 7, предполагалось запускать в специальной изолированной среде под названием BlueBox. Эта «песочница» должна была инкапсулировать окружение System 7 внутри одного процесса и адресного пространства запущенного приложения. В случае креша происходило аварийное завершение экземпляра приложения BlueBox вместе с запущенной в нем программой, но это не приводило к сбою всей операционной системы, и повышало, таким образом, стабильность ОС.

Для новых приложений, написанных уже под PowerPC, в Mac OS 7.1.2 внедрили наноядро, работавшее с более высоким приоритетом, чем микроядро операционной системы. Оно играло роль своеобразного HAL (уровня аппаратных абстракций), и предоставляло низкоуровневые интерфейсы обработки прерываний, исключений и управления памятью для системных служб. В Copland предполагалось использовать новое микроядро NuKernel, реализующее более широкий диапазон аппаратных абстракций. При этом из ядра планировалось исключить поддержку файловых систем, сетевых интерфейсов и реализацию ввода-вывода, переместив этот функционал в отдельные модули окружения. В NuKernel предполагалась реализация вытесняющей многозадачности, улучшенной работы с виртуальной памятью и усовершенствованные механизмы защиты памяти. Помимо этого инженеры Apple видели в своих мечтах рабочие станции с несколькими процессорами PowerPC, поэтому новое ядро должно было поддерживать и мультипроцессорную архитектуру. Для увеличения быстродействия в Copland решили использовать большое количество разделяемых библиотек, а также очень сложную систему управления памятью, для чего был написан с нуля специальный диспетчер. Вот как выглядела архитектура Copland согласно задумке ее разработчиков.

image-loader.svg

Изначально шли разговоры о возможной совместимости Copland и Microsoft Windows, однако разработчики быстро пришли к выводу, что реализовать полноценный запуск Windows-совместимых приложений на PowerPC не получится. Для этой задачи возможностей HAL недостаточно: нужна полноценная виртуализация, а реализовать эмулятор x86 на процессорах PowerPC того времени было ой как непросто. В итоге задачу упростили: уровень аппаратных абстракций был призван как минимум облегчить портирование на Copland драйверов и обеспечить совместимость сетевых протоколов. Уже это считалось серьезной заявкой на успех.

Важной особенностью новой операционной системы стала полноценная поддержка интернета «из коробки». Уже в 1994 году для инженеров Apple было очевидно, что интернет в ближайшее десятилетие станет важнейшей технологией — электронной почтой активно пользовались во всем мире, конференции Usenet не теряли своей популярности, а число веб-сайтов непрерывно росло. В Windows 3.11 поддержка интернета была опцией, а вот в Windows 95 версии OSR1 уже встроили браузер Microsoft Internet Explorer 2.0, в OSR2 появился почтовый и новостной клиент Microsoft Internet Mail and News. Чтобы не отставать от главного конкурента, приложения для работы во Всемирной сети было решено включить в комплект поставки Copland изначально. Кроме того, разработчики планировали максимально упростить настройку сети и драйверов, что с учетом ограниченных аппаратных конфигураций, на которых возможен запуск Copland, реализовать было относительно несложно. В Windows, устанавливавшейся на огромном зоопарке компьютеров с различной периферией, с успешным подключением модема и настройкой интернета иногда приходилось изрядно повозиться.

Среди других архитектурных новинок в Copland предполагалось реализовать полноценный многопользовательский режим — то, что у Microsoft не получилось сделать в Windows 95, но удалось в Windows NT. Здесь разработчики продумали жесткое разграничение прав юзеров и ограничение доступа к пользовательским файлам других учетных записей, при этом в системе существовали общие папки, к которым могли обращаться все зарегистрированные пользователи. В перспективе маячила и возможность организации расширенного сетевого доступа с различными учетными записями. Наконец, в Copland планировали добавить систему обновления ОС по сети, с помощью которой пользователь мог бы накатывать патчи и апдейты в автоматическом режиме. В Microsoft реализовали сервис Windows Update в виде отдельного веб-сайта только в Windows 98, а полноценный автоматический апдейтер появился лишь в Vista.

С точки зрения пользовательского интерфейса Copland также готовил несколько новинок. Поддержка drag-and-drop и цветных визуальных элементов появилась еще в System 7, при этом, если компьютер был оборудован монохромным дисплеем (либо в настройках пользователь выставил соответствующий флажок), интерфейс становился черно-белым. Copland изначально проектировался с полностью цветным графическим интерфейсом без всяких компромиссов. В его основу легла визуальная тема Platinum, отличавшаяся стильным оформлением, и поддерживающая стандартное для Copland экранное разрешение 640×480. Псевдотрехмерное оформление окон, тени, объемные текстуры — все эти дизайнерские элементы GUI впоследствии перекочевали в другие версии Mac OS, но впервые в таком виде они нашли воплощение именно в Copland.

klxkcep5xsgptqmfmsmtjnzoj3k.jpeg


Итак, в 1994 году цели были сформулированы, задачи поставлены, и работа закипела. Уже в мае некоторые элементы Copland, включая обновленную файловую систему, были продемонстрированы на конференции WWDC (Worldwide Developers Conference). Публичную бету Apple обещала представить к концу года, а релиз запланировали на 1995-й.

Однако на деле все шло не так гладко, как планировалось. Генеральный директор Apple Джон Скалли фактически не занимался операционным управлением компанией, уделяя внимание лишь маркетингу и рекламе, в результате чего разработчики были фактически предоставлены сами себе. При этом в Apple одновременно шла разработка другой перспективной операционной системы с кодовым именем Gershwin, которая должна была прийти на смену Copland. Релиз этой ОС предварительно планировался на 1996 год, и ее основной фишкой должна была стать превентивная многозадачность. При этом Gershwin опиралась на многие функции Copland, которые пока еще не были реализованы и существовали лишь в проекте. Закономерным результатом фактической бесконтрольности процесса разработки стала грызня между инженерными отделами: трудившиеся над Gershwin программисты давили на создателей Copland, требуя внедрения тех или иных фич и пересмотра очередности написания модулей, а маркетологи давили на сразу на тех и других. Некоторые инженеры из команды Gershwin, ощущая бесперспективность своей работы, переходили в команду Copland, что еще больше накаляло обстановку внутри компании и обостряло конфликты, на которые высший менеджмент не обращал никакого внимания.

Как следствие всех этих процессов, к концу 1994 года никакой беты Copland не существовало и в помине: Apple сумела родить лишь несколько сырых сборок для тестирования драйверов, а Gershwin вообще существовал исключительно на бумаге и на страницах рекламных проспектов. Эти «полуфабрикаты» в виде альфа-релизов раздали редакциям компьютерных журналов и показали в телепрограммах. Вот запись одной из них: на 1:36 показан работающий прототип Copland.

Новинка привлекла к себе интерес и собрала множество положительных отзывов, ведь пользователи «маков» давно ждали появления принципиально новой, современной операционной системы. Давление со стороны маркетологов усиливалось: сроки уже оказались упущены, а до финала разработки было еще очень и очень далеко. Видя, что проект буксует, менеджмент Apple начал приостанавливать другие разработки и перенаправлять программистов в команду Copland, что, во-первых, вызывало недовольство руководителей замороженных проектов, а во-вторых, привело к тому, что в процесс включились специалисты, не понимающие, зачем они здесь и что им нужно делать. Список функций и требований к операционной системе рос быстрее, чем девелоперы могли его реализовать, а отсутствие четкого плана, технического задания и даже внутренней документации делали тестирование практически невозможным.

image-loader.svg


В силу того, что требования к ОС непрерывно менялись, а процесс разработки толком никто не контролировал, стоимость проекта также бесконтрольно росла: к 1995 году она превысила первоначальный бюджет почти втрое. К WWDC-95 обещанный релиз так и не был готов, однако новый генеральный директор Apple Джил Амелио посвятил новой системе целый доклад, показал несколько слайдов, а также заявил, что отныне Copland получила новое название — System 8.

Увы, переименование не помогло. Устав от бесконечной чехарды с постоянно меняющимися требованиями, от текучки кадров, усиливающегося давления со стороны отдела маркетинга и необходимости постоянно оправдываться перед руководством, руководитель проекта Copland Дэвид Нейгел написал заявление «по собственному» и уволился из Apple. На его место назначили менеджера по технологиям Эллен Хэнкок, которую специально для этого переманили из компании National Semiconductor. Но проанализировав состояние проекта, Эллен пришла к неутешительному выводу, что оно более чем плачевно: Copland представлял собой набор разрозненных и плохо связанных модулей, собрать которые воедино было практически невозможно. Система оказалась не просто сырой — она не работала.

Один из бывших сотрудников Apple, участвовавший в создании Copland, вспоминал:

Общее впечатление было ужасным. Ни одна форма для ввода текста не действовала: мы могли открыть диалоговое окно, но любое поле, в которое можно было что-то ввести, оставалось пустым и мертвым. Кроме того, ОС непрерывно падала, повреждая системные файлы на диске. Регулярное форматирование и полная переустановка стала обычным делом.

Усилиями Хэнкок в августе 1996 года разработчики все-таки собрали «Developer Release 0», который разослали ограниченному числу тестировщиков из числа сотрудников Apple и нескольким партнерам, но этот релиз все еще оставался неработоспособным и был непригоден для использования. Система постоянно вылетала без видимой причины, половина настроек не действовала, вместо большей части компонентов красовались заглушки. Одновременно с сайта корпорации исчезли какие-либо упоминания о возможной дате финального релиза. Сотрудники группы контроля качества программного обеспечения Apple шутили, что, учитывая текущее количество ошибок и багов, Copland будет выпущена примерно к 2030 году.

Получив негативные отзывы от тестировщиков, Эллен Хэнкок подготовила доклад руководству о том, что ситуация безнадежна. В августе 1996 года проект Copland был окончательно закрыт, все созданные в процессе разработки и годные к дальнейшей эксплуатации модули было решено поэтапно внедрить в виде обновлений в уже существующую платформу.

Тем не менее, операционная система нового поколения была необходима, а сроки поджимали, поэтому ее было решено создать на основе какой-то существующей ОС. В качестве таковой рассматривались Sun Solaris и даже Windows NT — ради покупки лицензии на использование ядра NT Амелио начал переговоры с Биллом Гейтсом. Но в итоге выбор пал на проект OpenStep, для чего в 1997 году Apple приобрела компанию NeXT, обладавшую правами на эту платформу. В качестве консультанта для реализации этого масштабного проекта руководство Apple решило пригласить ранее изгнанного из Apple Стива Джобса. Данный шаг открыл новую, крайне успешную страницу в истории корпорации.

image-loader.svg


В 2008 году журнал PC World включил Copland в список крупнейших провалов в мировой истории компьютерной индустрии. История этой операционной системы — наглядный пример того, как необдуманный подход к руководству проектом может привести в конечном итоге к его закрытию. Кто знает: если бы в середине 90-х в Apple использовали современные стандарты софтверной разработки, сегодня мы увидели бы совершенно другую macOS. Но как бы то ни было, проект Copland навсегда вошел в историю. Пусть и историю неудач.

image-loader.svg

© Habrahabr.ru