Copland — операционная система , разработанная Apple для компьютеров Macintosh в период с 1994 по 1996 год, но никогда не выпускавшаяся в продажу. Она должна была быть выпущена под названием System 8 , а позднее, после изменения стиля именования, Mac OS 8. [ 1] Планируемая как современная преемница устаревшей System 7 , Copland представила защищенную память , вытесняющую многозадачность и несколько новых базовых функций операционной системы, сохранив при этом совместимость с существующими приложениями Mac. Предварительно запланированная преемница Copland под кодовым названием Gershwin должна была добавить более продвинутые функции, такие как многопоточность на уровне приложений .
Разработка официально началась в марте 1994 года. В течение следующих нескольких лет предварительные версии Copland привлекли много внимания прессы, познакомив аудиторию Mac с такими концепциями операционной системы, как объектная ориентация, защита от сбоев и многозадачность. В августе 1995 года Дэвид Нагель , старший вице-президент, объявил на Macworld Expo , что Copland будет выпущен в середине 1996 года. В мае следующего года Джил Амелио заявил, что Copland является основным направлением компании, нацеленной на выпуск в конце года. Однако внутри компании усилия по разработке были сопряжены с проблемами из-за неблагополучного корпоративного персонала и управления проектами. Вехи разработки и даты выпуска разработчиками неоднократно пропускались.
Эллен Хэнкок была нанята, чтобы вернуть проект в нужное русло, но быстро пришла к выводу, что он никогда не будет запущен. В августе 1996 года было объявлено, что Copland отменена, и Apple будет искать новую операционную систему за пределами компании. Среди многих вариантов они выбрали NeXTSTEP и купили NeXT в 1997 году, чтобы получить ее. В промежуточный период, пока NeXTSTEP портировался на Mac, Apple выпустила гораздо более ориентированную на устаревшие версии Mac OS 8 в 1997 году на основе добавления компонентов из Copland, и Mac OS 9 в 1999 году для перехода вперед. Mac OS X стала операционной системой Apple следующего поколения в 2001 году.
Усилия по разработке Copland были описаны как пример « ползучести функций» . В 2008 году журнал PC World включил Copland в список крупнейших провалов проектов в истории информационных технологий (ИТ).
Предыстория Copland начинается с понимания наследия Mac OS и ее архитектурных проблем, которые необходимо решить.
Выпущенный в 1984 году компьютер Macintosh и его операционная система с самого начала проектировались как однопользовательская, однозадачная система, что позволило значительно упростить разработку оборудования. [2]
Macintosh не хватает многозадачности, но пытается ее подделать, и он настаивает на сложном пользовательском интерфейсе, но оставляет большую часть работы приложению. Это серьезные недостатки, и трудно представить себе элегантные исправления для них.
— Адам Брукс Уэббер, Byte (сентябрь 1986 г.) [3]
Эти ограничения означали, что поддержка многозадачности более чем одной программы одновременно будет затруднена без переписывания всего этого кода операционной системы и приложений. Однако это означало бы, что система будет работать неприемлемо медленно на существующем оборудовании. Вместо этого Apple приняла систему, известную как MultiFinder, в 1987 году, которая сохраняет запущенное приложение под контролем компьютера, как и раньше, но позволяет быстро переключаться с одного приложения на другое, обычно просто нажимая на его окно. Программам, которые не находятся на переднем плане, периодически даются короткие промежутки времени для выполнения, но, как и раньше, весь процесс контролируется приложениями, а не операционной системой.
Поскольку операционная система и приложения используют одно и то же пространство памяти, ошибка в любом из них может повредить всю операционную систему и привести к сбою машины. В MultiFinder любой сбой в любом месте приведет к сбою всех запущенных программ. Запуск нескольких приложений потенциально увеличивает вероятность сбоя, делая систему потенциально более хрупкой.
Значительно усугубляет проблему механизм исправления , используемый для добавления функций в операционную систему, известный как CDEV и INIT или панели управления и расширения. Сторонние разработчики также используют этот механизм для добавления функций, включая заставки и иерархическое меню Apple . Некоторые из этих сторонних панелей управления стали почти универсальными, как популярный пакет заставок After Dark . [4] Поскольку не было стандарта для использования этих исправлений, нередко несколько из этих дополнений — включая собственные дополнения Apple к ОС — используют одни и те же исправления и мешают друг другу, что приводит к большему количеству сбоев.
Copland был разработан как Mac OS поверх микроядра под названием Nukernel , которое будет обрабатывать основные задачи, такие как запуск приложений и управление памятью, оставляя все остальные задачи ряду полуспециальных программ, известных как серверы . Например, сетевые и файловые службы не будут предоставляться самим ядром, а серверами, которые будут отправлять запросы через межприкладные коммуникации . [5] Система Copland в целом состоит из комбинации Nukernel, различных серверов и набора библиотек поддержки приложений для обеспечения реализаций хорошо известного классического интерфейса программирования Macintosh. [6]
Службы приложений предлагаются через единую программу, официально известную как Cooperative Program Address Space. [7] [ нужна страница ] Программы Mac работают во многом так же, как и в System 7, как кооперативные задачи, которые используют нереентерабельные вызовы Toolbox. Наихудший сценарий — это сбой приложения в среде CPAS, который приводит к сбою всей среды. Однако это не приводит к сбою системы в целом, а среда Cooperative Program Address Space автоматически перезапускается. [7] [ нужна страница ]
Новые приложения, написанные с учетом Copland, способны напрямую взаимодействовать с системными серверами и, таким образом, получать множество преимуществ с точки зрения производительности и масштабируемости. Они также могут взаимодействовать с ядром для запуска отдельных приложений или потоков, которые работают как отдельные процессы в защищенной памяти , как в большинстве современных операционных систем. [8] Однако эти отдельные приложения не могут использовать нереентерабельные вызовы, такие как QuickDraw, и, таким образом, могут не иметь пользовательского интерфейса. Apple предположила, что более крупные программы могут размещать свой пользовательский интерфейс в обычном приложении Macintosh, которое затем запускает рабочие потоки извне. [6]
Copland полностью родной для PowerPC (PPC). System 7 была портирована на PowerPC с большим успехом; большие части системы работают как код PPC, включая как высокоуровневые функции, такие как большинство менеджеров панели инструментов пользовательского интерфейса, так и низкоуровневые функции, такие как управление прерываниями. В системе осталось достаточно кода 68k для запуска в эмуляции, и особенно пользовательских приложений, однако операционная система должна сопоставлять некоторые данные между двумя средами. В частности, каждый вызов в Mac OS требует сопоставления между системами прерываний 68k и PPC. Удаление этих сопоставлений значительно улучшит общую производительность системы. На WWDC 1996 инженеры заявили, что системные вызовы будут выполняться на 50% быстрее. [9]
Copland также основан на недавно определенной Common Hardware Reference Platform (CHRP), которая стандартизировала аппаратное обеспечение Mac до такой степени, что оно могло быть создано разными компаниями и могло работать с другими операционными системами ( Solaris и AIX были двумя из многих упомянутых). Это была общая тема в то время; многие компании формировали группы для определения стандартизированных платформ, чтобы предложить альтернативу платформе « Wintel », которая быстро становилась доминирующей — примерами служат 88open , Advanced Computing Environment и альянс AIM . [10]
Основной проблемой разработки и внедрения Copland было заставить все эти функции поместиться в обычный Mac. System 7.5 уже использует около 2,5 мегабайт (МБ) оперативной памяти, что составляет значительную часть общего объема оперативной памяти в большинстве современных машин. Copland представляет собой гибрид двух систем, поскольку его собственная основа также размещает Blue Box с полной копией System 7.5. Таким образом, Copland использует систему управления памятью, вдохновленную Mach , и широко полагается на общие библиотеки [11] , с целью быть примерно на 50% больше, чем 7.5.
В марте 1988 года [a] технические менеджеры среднего звена в Apple провели выездное совещание, чтобы спланировать будущий курс разработки Mac OS. [12] Идеи записывались на карточках ; функции, которые казались достаточно простыми для реализации в краткосрочной перспективе (например, добавление цвета в пользовательский интерфейс ), записывались на синих карточках; долгосрочные цели, такие как вытесняющая многозадачность, записывались на розовых карточках; а долгосрочные идеи, такие как объектно-ориентированная файловая система, записывались на красных карточках. [13] [14] [b] Разработка идей, содержащихся на синих и розовых карточках, должна была идти параллельно, и поначалу эти два проекта были известны просто как «синий» и « розовый ». [15] Apple намеревалась, чтобы синяя команда [16] выпустила обновленную версию существующей операционной системы Macintosh в период с 1990 по 1991 год, а розовая команда — выпустить совершенно новую ОС около 1993 года.
Команда Blue, которая стала называть себя « Blue Meanies » в честь персонажей фильма «Желтая подводная лодка» , выпустила то, что стало известно как System 7 , 13 мая 1991 года, но усилия команды Pink пострадали от эффекта второй системы , и дата ее выпуска продолжала сползать в неопределенное будущее. Некоторые причины этого можно проследить до проблем, которые со временем стали широко распространенными в Apple; поскольку выпуск Pink задерживался, ее инженеры перешли в Blue. [17] Это привело к тому, что команда Pink постоянно боролась за кадры и страдала от проблем, связанных с высокой текучестью кадров. Руководство игнорировало подобные технические проблемы разработки, что приводило к постоянным проблемам с поставкой рабочих продуктов.
В это же время недавно выпущенный NeXTSTEP вызвал большой интерес в мире разработчиков. Функции, которые изначально были частью Red, были свернуты в Pink, и проект Red (также известный как «Raptor») [18] в конечном итоге был отменен. Эта проблема также была распространена в Apple в этот период; чтобы погнаться за «следующей большой вещью», менеджеры среднего звена добавляли новые функции в свои проекты с небольшим контролем, что приводило к огромным проблемам с расползанием функций . В случае с Pink разработка в конечном итоге замедлилась до такой степени, что проект казался умирающим.
12 апреля 1991 года генеральный директор Apple Джон Скалли провел секретную демонстрацию Pink, работающей на PS/2 Model 70, перед делегацией IBM . Хотя система не была полностью функциональной, она напоминала System 7 , работающую на ПК. IBM была чрезвычайно заинтересована, и в течение следующих нескольких месяцев две компании сформировали альянс для дальнейшей разработки системы. Эти усилия стали публичными в начале 1992 года под новым названием « Taligent ». [19] В то время Скалли подытожил свои опасения относительно способности Apple поставлять Pink, заявив: «Мы хотим быть крупным игроком в компьютерной индустрии, а не нишевым игроком. Единственный способ сделать это — работать с другим крупным игроком». [20]
Внутренние распри в новой совместной компании были легендарными, и проблемы с Pink в Apple вскоре показались незначительными по сравнению с ними. [21] Сотрудники Apple сделали футболки, графически отображающие их предсказание, что результатом станет проект только IBM. [22] 19 декабря 1995 года Apple официально вышла из проекта. [23] IBM продолжила работать в одиночку с Taligent и в конечном итоге выпустила свои части разработки приложений под новым названием «CommonPoint». Это не вызвало особого интереса, и проект исчез из каталогов IBM в течение нескольких месяцев.
В то время как усилия Taligent продолжались, было выполнено очень мало работы по структуре оригинальной ОС. В это время началось несколько новых проектов, таких как проект Star Trek , порт System 7 и ее базовых приложений на совместимые с Intel машины x86, который достиг внутреннего демонстрационного статуса. Но поскольку Taligent все еще вызывал беспокойство, новым проектам ОС было трудно набрать обороты.
Вместо этого команда Blue от Apple продолжила добавлять новые функции в ту же самую базовую ОС. В начале 1990-х годов Apple выпустила ряд крупных новых пакетов для системы; среди них QuickDraw GX , Open Transport , OpenDoc , PowerTalk и многие другие. Большинство из них были больше, чем исходная операционная система. Проблемы со стабильностью, которые существовали даже с небольшими патчами, росли вместе с размером и требованиями этих пакетов, и к середине 1990-х годов Mac имел репутацию нестабильного и постоянно падающего компьютера. [6]
Поскольку стабильность операционной системы рухнула, готовым ответом было то, что Taligent исправит это со всей своей современной основой полного повторного входа, упреждающей многозадачности и защищенной памяти. Когда усилия Taligent также потерпели крах, Apple осталась с устаревшей ОС и без определенных решений. К 1994 году шумиха в прессе вокруг предстоящего выпуска Windows 95 начала набирать обороты, часто подвергая сомнению способность Apple ответить на брошенный ею вызов. [14] Пресса ополчилась на компанию, часто представляя новые проекты Apple как неудачи в процессе становления. [24]
Учитывая это давление, крах Taligent, растущие проблемы с существующей операционной системой, после выпуска System 7.5 в конце 1994 года руководство Apple решило, что десятилетняя операционная система исчерпала себя. Нужна была новая система, не имеющая этих проблем, и как можно скорее. Поскольку переписать большую часть существующей системы было бы сложно, Apple разработала двухэтапный подход к решению проблемы.
На первом этапе существующая система будет перемещена поверх новой ОС на основе ядра со встроенной поддержкой многозадачности [25] и защищенной памятью. Существующие библиотеки, такие как QuickDraw, будут слишком долго переписываться для новой системы и не будут преобразованы для повторного входа. Вместо этого одна паравиртуализированная машина, Blue Box, хранит приложения и устаревший код, такой как QuickDraw, в одном блоке памяти, чтобы они продолжали работать так же, как и раньше. Blue Box работает в отдельном пространстве памяти Copland, поэтому сбой устаревших приложений или расширений в Blue Box не может привести к сбою всей машины.
На следующем этапе плана, как только новое ядро будет готово и это базовое обновление будет выпущено, разработка перейдет к переписыванию старых библиотек в новые формы, которые смогут работать непосредственно на новом ядре. [26] [27] [28] На этом этапе приложения получат некоторые дополнительные современные функции.
В музыкальном кодовом обозначении, где System 7.5 имеет кодовое название «Mozart», этот предполагаемый преемник назван «Copland» в честь композитора Аарона Копленда . В свою очередь, его предлагаемая система-преемник, Gershwin, завершит процесс перемещения всей системы на современную платформу, но работа над Gershwin официально так и не начнется. [29]
Проект Copland был впервые анонсирован Дэвидом Нагелем в мае 1994 года. [30] [31] Части Copland, такие как ранняя версия новой файловой системы, были продемонстрированы на Всемирной конференции разработчиков Apple в мае 1995 года. Apple пообещала, что бета-версия Copland будет готова к концу года, а финальный коммерческий релиз — в начале 1996 года. [31] [32] Gershwin последовал за ней в следующем году. [33] В течение года Apple выпустила несколько макетов для различных журналов, показывающих, как будет выглядеть новая система, и постоянно комментировала, что компания полностью привержена этому проекту. Однако к концу года ни одна версия для разработчиков не была выпущена. [32]
Как и во время разработки Pink, разработчики в Apple вскоре начали отказываться от собственных проектов, чтобы работать над новой системой. Менеджеры среднего звена и руководители проектов давали отпор, утверждая, что их проект жизненно важен для успеха системы, и перемещая его в поток разработки Copland. Таким образом, его нельзя было отменить вместе с тем, как их сотрудники в любом случае были бы переведены на работу над какой-то другой частью Copland. [34] Этот процесс набрал обороты в течение следующего года.
«Всякий раз, когда они видели что-то сексуальное, это должно было попасть в ОС», — сказал Джеффри Тартер, издатель информационного бюллетеня индустрии программного обеспечения Softletter . «В Apple были небольшие группы, которые делали забавные вещи, которые не имели никакого земного применения в линейке продуктов Apple». В результате образовался порочный круг: поскольку добавление функций отодвигало сроки, Apple была вынуждена обещать еще больше функций, чтобы оправдать дорогостоящие задержки. Более того, этот сизифов шаблон сохранялся в то время, когда компания едва ли могла позволить себе пропустить шаг. [31]
Вскоре проект стал меньше похож на новую операционную систему и больше на огромную коллекцию новых технологий; QuickDraw GX , System Object Model (SOM) и OpenDoc стали основными компонентами системы, [35] в то время как совершенно не связанные между собой технологии, такие как новое диалоговое окно управления файлами ( открытый диалог ) и поддержка тем , также появились. Список функций рос гораздо быстрее, чем функции могли быть завершены, классический случай ползучего фичуритиса . [31] Руководитель отрасли отметил, что «игра заключается в том, чтобы сократить его до трех или четырех самых убедительных функций, а не иметь сотни приятных мелочей, я не уверен, что это происходит». [36]
По мере того, как «пакет» разрастался, его тестирование становилось все более сложным, и инженеры еще в 1995 году отмечали, что объявленная Apple дата выпуска в 1996 году была безнадежно оптимистичной: «Нет ни единого шанса, что Copland выйдет в следующем году. Я просто надеюсь, что он выйдет в 1997 году». [36]
В середине 1996 года просочилась информация о том, что Copland сможет запускать приложения, написанные для других операционных систем, включая Windows NT . Одновременно якобы подтвержденная инженерами Copland и авторитетно опровергнутая руководством проекта Copland, эта функция якобы находилась в разработке более трех лет. Один пользователь утверждал, что ему рассказали об этих планах члены команды разработчиков Copland. Некоторые аналитики прогнозировали, что эта возможность увеличит проникновение Apple на корпоративный рынок, другие говорили, что это «конец игры» и является лишь признаком неактуальности платформы Mac. [37]
На WWDC 1996 новый генеральный директор Apple , Джил Амелио , использовал основной доклад, чтобы говорить почти исключительно о Copland, теперь известном как System 8. [38] Он неоднократно заявлял, что это было единственным направлением инженерии Apple и что оно будет отправлено разработчикам через несколько месяцев, а полный релиз запланирован на конец 1996 года. На конференции было показано очень мало, если вообще было, демонстраций работающей системы. Вместо этого были продемонстрированы различные части технологии и пользовательского интерфейса, которые должны были войти в пакет (например, новый диалог управления файлами). Было продемонстрировано немного из основных технологий системы, а новая файловая система, показанная годом ранее, отсутствовала.
Был один способ реально использовать новую операционную систему — зарегистрироваться на время в лабораториях разработчиков. Это не прошло гладко:
Была практическая демонстрация текущего состояния OS 8. Были заманчивые проблески будущих вкусностей, но общее впечатление было ужасным. Он пока не поддерживает редактирование текста, поэтому вы не могли ничего делать, кроме как открывать и просматривать документы (любое диалоговое поле, в которое нужно было что-то вводить, было пустым и мертвым). Кроме того, он был невероятно хрупким и постоянно падал, часто повреждая системные файлы на диске в процессе. Персонал демонстрации регулярно форматировал и перестраивал жесткие диски. Было невероятно, что они вообще позволили нам увидеть этого зверя. [39]
Несколько человек на шоу жаловались на несовершенство микроядра, в частности на отсутствие симметричной многопроцессорности , функции, которую было бы чрезвычайно сложно добавить в систему, которая должна была выйти через несколько месяцев. После этого Амелио вернулся на сцену и объявил, что они добавят это в список функций.
В августе 1996 года «Developer Release 0» был отправлен небольшому числу избранных партнеров. [31] Он не только не продемонстрировал улучшенную стабильность, но и часто вылетал после того, как вообще ничего не делал, и был совершенно непригоден для разработки. В октябре Apple перенесла целевую дату поставки на «когда-нибудь», намекнув, что это может быть 1997 год. Одной из групп, наиболее удивленных объявлением, была собственная команда по аппаратному обеспечению Apple, которая ждала, когда Copland позволит PowerPC быть изначально представленным, не обремененным программным наследием. Члены команды по контролю качества программного обеспечения Apple шутили, что, учитывая текущие ресурсы и количество ошибок в системе, они могли бы разрешить программу для поставки где-то около 2030 года.
Позже, в августе 1996 года, ситуация была не лучше. Амелио жаловался, что Copland был «просто набором отдельных частей, над каждой из которых работала отдельная команда... которые, как ожидалось, каким-то образом волшебным образом соберутся вместе». [40] Надеясь спасти ситуацию, Амелио нанял Эллен Хэнкок из National Semiconductor , чтобы она взяла на себя инженерное дело Айка Насси [41] и вернула разработку Copland в нужное русло. [42]
После нескольких месяцев работы Хэнкок пришла к выводу, что ситуация безнадежна; учитывая текущую разработку и проектирование, она считала, что Copland никогда не будет выпущен. Вместо этого она предложила, чтобы различные пользовательские технологии в Copland были развернуты в серии поэтапных релизов, а не одним большим релизом. Apple официально отменила Copland в августе 1996 года, [33] Конверты CD для релиза разработчика были напечатаны, но диски не были отмастерены.
Чтобы решить проблему устаревающей инфраструктуры, лежащей в основе этих технологий, Амелио предложил поискать за пределами компании неродственную новую операционную систему. Рассматривались кандидаты на Solaris и Windows NT от Sun. По имеющимся данным, Хэнкок был сторонником Solaris, в то время как Амелио предпочитал Windows. По имеющимся данным, Амелио даже звонил Биллу Гейтсу , чтобы обсудить эту идею, и Гейтс пообещал поручить инженерам Microsoft работу по портированию QuickDraw на NT. [43]
После длительных обсуждений с Be и слухов о слиянии с Sun Microsystems, многие были удивлены объявлением Apple в декабре 1996 года о покупке NeXT и привлечении Стива Джобса в качестве консультанта. [44] Амелио съязвил, что они «выбирают план A вместо плана Be». [45] Проект по переносу NeXTSTEP на платформу Macintosh был назван Rhapsody и должен был стать ядром кросс-платформенной стратегии операционной системы Apple. Он унаследовал бы существующую поддержку OpenStep для архитектур PowerPC, Intel x86 и DEC Alpha CPU, а также реализацию библиотек OpenStep, работающих на Windows NT . Это фактически открыло бы рынок приложений Windows для разработчиков Macintosh, поскольку они могли бы лицензировать библиотеку от Apple для распространения со своим продуктом или зависеть от существующей установки.
Следуя плану Хэнкока, разработка продолжилась с System 7.5, получившей интеграцию нескольких элементов Copland. System 7 была переименована в Mac OS 7 с выпуском 7.6, в которой были улучшены стабильность и производительность. [46] Многие функции Copland, включая новый многопоточный Finder и поддержку тем (по умолчанию Platinum ), были интегрированы в невыпущенную бета-версию Mac OS 7.7, которая вместо этого была переименована и выпущена как Mac OS 8. [ 47]
С возвращением Джобса этот ребрендинг на версию 8 также позволил Apple использовать юридическую лазейку для прекращения действия лицензий сторонних производителей на System 7 и эффективного закрытия рынка клонов Macintosh . [48] Позже Mac OS 8.1 наконец добавила новую файловую систему, а Mac OS 8.6 обновила наноядро для обработки ограниченной поддержки упреждающих задач . Его интерфейс — Multiprocessing Services 2.x и более поздние версии, но разделения процессов нет, и система по-прежнему использует кооперативную многозадачность между процессами. Даже процесс, поддерживающий Multiprocessing Services, все еще имеет часть, которая выполняется в Blue Box, задачу, которая также запускает все однопоточные программы, и единственную задачу, которая может выполнять код 68k.
Проект Rhapsody был отменен после нескольких выпусков Developer Preview, поддержка запуска на платформах, отличных от Macintosh, была прекращена, и в конечном итоге он был выпущен как Mac OS X Server 1.0 . В 2001 году эта основа была объединена с библиотекой Carbon и пользовательским интерфейсом Aqua , чтобы сформировать современный продукт Mac OS X. [49] Версии Mac OS X до выпуска Intel Mac OS X 10.4 (Tiger) также использовали концепцию Blue Box без прав root в форме Classic для запуска приложений, написанных для старых версий Mac OS. Несколько функций, изначально появившихся в демонстрациях Copland, включая расширенную команду Find, встроенный интернет-браузер , кучу папок и поддержку видеоконференций , снова появились в последующих выпусках Mac OS X как Spotlight , Safari , Stacks и iChat AV соответственно, хотя реализация и пользовательский интерфейс для каждой функции сильно различаются.
Согласно документации, включенной в релиз для разработчиков, Copland поддерживает следующие конфигурации оборудования: [50]