Copland: путешествие в сослагательное наклонение
Иногда нестерпимо хочется представить себе, что бы произошло, если бы не случилось то или иное событие. Занятие бессмысленное, никто не знает всех обстоятельств ситуаций, и с вероятностью близкой к единице все было бы по другому. И все-таки, позволим себе…
Что было бы, если бы в августе 1996 года Apple Computer не убила Copland? С проектом надо было что-то делать, он вышел из под контроля и “завис”. Поэтому вариант “в августе 1996, в конференц-зале кампуса Apple, представители компании увлекательно рассказал о перспективах разрабатываемой системы, о сложностях и проблемах, и о переносе выхода DR1 (Developer Release, бета-версии системы) на более поздний срок” рассматривать мы не будем. Он тривиален. Скорее всего, было бы еще хуже.
Представим себе, что было бы, если бы кто-то (хотя бы та же самая Эллен Хэнкок), вернул проект в адекватное состояние, определил приоритеты – пусть даже не совсем удачные, и, в общих чертах, говоря только правду, без слова лжи, описал ситуацию и предложил план выхода из неё. Амбициозный, но реалистичный и конкретный. Выполнение которого легко проверить, по пунктам.
Основная аудитория выступления – разработчики. Те, кто отлично знает, как впиваются в самые нежные зоны души острые грани “мягкой рухляди” (основным переводом слова software, на протяжении веков, был именно этот), они бы поняли. Момент бы удачный, у компании было новое руководство – и признаться в очевидном можно было без потери лица. Врали.
Делаем долго… Но системы, которые пишутся без труда, не доставляют удовольствия.
И сосредоточить все доступные силы и средства на DR1. Применяя к саботажникам все виды санкций, вплоть до высшей меры корпоративной защиты (увольнение без выходного пособия). На DR1 и на долгосрочных стратегических элементах системы.
Особенно на ядре системы.
Содержание
Ядерная метафизика
Подчеркивая относительную несложность концепций (например, тех на которых основана технология Core Data), говорят “это не ядерная физика”. То есть, что-то понятное простым смертным.
Про микроядро системы этого не скажешь. В 1998-99 команда, занимавшаяся микроядром Mac OS X (тогда еще Rhapsody), поручала рассказывать о своей работе инженеру, который или закончил “цирковое училище” (не знаю, как такие заведения называются в США), или фокусы были его хобби – но свои выступления он (не помню его имени!!!) предварял серией манипуляций с шнурами.
Вот длинный прочный шнур. Вот он завязывается в узел, и… распадается на два шнура. И обратно – длинный прочный шнур, без следов разрыва. “Это и есть суть ядра системы, оно должно быть прочным и невидимым”. И, кроме всего прочего, “выдержанным”. Оно играет в системе очень важную роль, от него зависит её судьба.
Это одна из самых консервативных частей операционной системы. Когда в неё нужно что-то добавить, следует очень хорошо поискать все возможные варианты не делать этого, а если вариантов нет – тестировать и отлаживать эти изменения в течении лет, до полной и абсолютной уверенности в надежности и целостности ядра.
Любое подозрение на проблему должно тщательно расследоваться. Это не программное обеспечение, это магия. Или акробатика на тоненькой струне над пропастью.
Это я к тому, что самой главной и болезненной проблемой DR0 было ядро NuKernel.
У Джефа Робина и его небольшой команды не было никаких шансов создать, на основе Mach 3.0, своё собственное микроядро, вызывающе необычное, меньше чем за год. Это было первое микроядро в их жизни. Они отлично разбирались в теме, они просто бредили ей – но не наделать ошибок, нарушая законы написанные кровью предшественников, они не могли.
Нескольких лет на отладку ядра до идеального состояния у них просто не было. NuKernel в DR0 был ранней альфа-версией, NuKernel в DR1, который, за пределами Apple никто не увидел, был бы не более чем еще одной альфа-версией. Но след чуть более продвинутая версия NuKernel в истории оставила. Зафиксированный документально.
19 марта 1996 года разработчики NuKernel подали заявку на патент. Суть заявки: “Система и методы обмена объекто-ориентированными сообщениями”. 31 декабря 1996 года патент был выдан. US Patent 5 590 334.
В “альтернативном” августе 1996 года, NuKernel стал бы самой приоритетной задачей, на его тестирование и отладку были бы выделены силы и средства, отвечающие важности этой задачи. Адекватный руководитель проекта уговорил бы опытных “ядерщиков” со стороны вступить в команду, может быть даже поставив их над Джефом Робином. Вторая альфа-версия в DR1 была бы заметно ближе к идеалу.
Сроки
Операционные системы создаются долго. От первых строчек в техническом задании до первого “боевого” релиза, который почти всегда становится публичной бета-версией, чаще всего, проходит примерно пять лет. Если система создается с нуля.
Административные подвиги вроде “поднажать”, “кровь из носа”, и прочие подобные, могут ускорить разработку, ненадолго – но ценой этого ускорения будут проблемы, которых без него не возникло бы, и устранение которых отнимет намного больше времени, чем кто-то сэкономил. Такое ускорение запросто может поставить проект под угрозу срыва, а то и убить его.
У администраторов бывают очень важные причины устроить аврал “на ровном месте”. Для того, чтобы проект не закрыли (независимо от общественно-политического строя и формы собственности, иногда приходится доказывать кому-то необходимость и перспективность того, что делаешь). Неизбежное зло, к которому надо быть готовым, и минимизировать его последствия.
С мая 1994 года по август 1996 прошло 2 года и 2 месяца. Три четверти этого времени не пошли системе впрок: эффект от управления проектом был резко отрицательный. Люди делали то, что должны, вопреки указаниям руководства. Их за это наказывали.
В 1997 году, даже если бы в августе 1996 все радикально изменилось, и даже в режиме “кровь из носа”, выпустить Copland 1.0 (или Mac OS 8) было невозможно. Современная ОС могла появиться у Apple в 1999 или 2000 году.
Назвать 1999 сроком выпуска Copland в 1996 году было бы жестоко. System 7.5, все еще, была единственной операционной системой у Apple. Производителей клонов интересовала BeOS, превосходившая Mac OS по всем пунктам, кроме одного: для BeOS практически не было программного обеспечения.
Занявшись современной ОС, руководство Apple совершенно перестало интересоваться “старой”. По мнению руководства, в этом не было смысла – еще одно или два усилия, и рынок будет нокаутирован новой системой…
Но, в нашей альтернативе во главе проекта умный и адекватный человек, способный на неординарные поступки и, при необходимости, умеющий быть жестким.
На свет появился бы план, расписывающий, шаг за шагом, развитие “семерки”. Как и в нашей реальности. В рамках старой системы, одно за другим, испытывали бы и доводили технические и технологические новшества будущей системы. Возможно, опробовали бы и ядро.
А в 2000 или 2001 году Copland 1.0, более или менее триумфально, вышла бы в свет.
А в чем тогда разница?
В каком году Apple Computer выпустила Mac OS 10.0? Версию, которой невозможно было пользоваться. Не говоря о реальных багах, которые могли повредить данные, в ней очень медленно перерисовывались окна.
В том же 2001 году, примерно через полгода после Mac OS 10.0, Apple выпустила 10.1.
Компания не могла не выпустить релиз в начале года (но фактически, это была еще одна публичная бета-версия), а 10.1 можно считать третьей бета версией. Временами, именно политика диктует что и как надо делать. В 10.0, рассказал Стив, из-за бага в оконной системе, окна перерисовывались по три раза.
В 10.1 с перерисовкой стало намного лучше, но она все равно была очень медленной. Вот он, этот Quartz! В 10.2 Quartz, наконец, заработал как надо.
На разработку Mac OS X, официально, ушло 4 года. Если посчитать по факту, включая год бета-тестирования пользователей (проверялось наше терпение) в время создания системы, оно заняло 5 лет.
Copland 1.0 вышла бы в 1999 или 2000 году, только Apple не пришлось бы пережить:
резкое падение спроса после объявления о закрытии Copland;
гигантские убытки из-за падения продаж;
массового ухода разработчиков на другие платформы, из-за падения спроса и неверия в способность Apple Computer что-то исправить;
еще большее снижение продаж после заявлений важных для платформы разработчиков о прекращении разработки программного обеспечения для Mac OS;
падение кредитного рейтинга и авторитета в индустрии.
Полный список того, чего не было бы, занял бы не одну страницу.
У Apple была темная полоса, и проблемы. Но не отчаянные. Решаемые. Для решения этих проблем совет директоров пригласил Гила Амелио, вообще-то физика (неумных физиков не бывает), с опытом реанимации компаний…
Даже если бы Copland вышел в свет в 2002 году, альтернативная Apple пережила бы это.
И, возможно, что-то похожее на iPhone появилось бы году в 2030…
Еще раз, о точности альтернативной версии событий
Фантазировать как все было бы, если бы Ленин утонул в Женевском озере в 1916 году, катаясь по его берегу на велосипеде, если бы Адольфа Г. приняли в художественное училище в Вене, а Copland не закрыли – легко и интересно.
Только вот беда: даже если перечитать абсолютно все источники по рассматриваемой теме, правильно оценить их достоверность, процентов 99 происходившего в то время останется за пределами нашего знания. А именно в этих 99 процентах неизвестной нам реальности, на самом деле, все и происходит…
Тема про Copland закрыта.