среда, 7 ноября 2007 г.

Вешалка или инсталлятор?

Помните знаменитое выражение Константина Сергеевича: «Театр начинается с вешалки»? А с чего начинается программное обеспечение? Я думаю - с инсталлятора! Новый универсальный инсталлятор Codegear - это специальный продукт компании, призванный вымотать все нервы у благодарных поклонников. Казалось бы, какая забота о пользователе! Всегда свежие, пахнущие компилятором, файлы без прежних глюков, полная автоматизация самого процесса инсталляции, описание происходящего, и даже, вы не поверите, прогрессиндикатор! Так что же всполошило наших толерантных пользователей, мужественно переживших даже Delphi 8 и Delphi 2005, и заставило исписать сотни форумов и блогов в поисках ответов на свои вопросы. Попробую объяснить на примере, хотя и говорят, что примером ничего нельзя доказать или опровергнуть.
Итак, товарищ решил поставить Update 3 на Delphi 2007. Ну что ж – дело хорошее, тем более что всякие модные фичи типа добавления переменных в Var секцию прямо из текущего места кода в его непатченной Delphi не работали. Не говоря уже о диаграммах, которые напрочь отказывались создавать любые объекты, кроме Namespace. Сказано – сделано. Инсталлятор жужжит – удаляет старую инсталляцию, причем полностью, качает что-то из сети, ставит новую. Мы пьем чай, беседуем о хлебе насущном. И тут у нас кончается свет. (Видимо, Чубайс нас за что-то не возлюбил, потому что свет последнее время пропадает достаточно часто). В ответ на это у нас есть аргумент фирмы APC, хорошо зарекомендовавшей себя в борьбе с таким недугом. Но вот беда, такого устройства нет в одном из шкафов сетевого оборудования где-то по ходу наших пакетов из далекой Америки. После этого инцидента у нас на компьютере не осталось ни старой версии, ни новой. Только кэш с недокачанными файлами. Но самое странное – инсталлятор ни в какую не хочет запускаться. Т.е. вообще. Почитали Интернет, узнали, что проблема такая есть, о что ней знают и помнят, скачали майкросовтовскую тулзу, которая завалила остатки инсталла, удалили все из реестра, из prorgam files, из application data своих и общих, вытерли испарину и начали все по новой… Сразу хочется вспомнить певицу Земфиру, громко вопрошающую в куда-то зал: «Почему?...» На-на-на, блин.
Я тоже имел похожий опыт апгрейда с помощью этого инсталлятора. Но у меня все прошло на удивление гладко, только процесс апгрейда растянулся так, что знай я заранее, что это будет так долго, я бы просто пошел домой. Видит бог, я наблюдал за сим действом более 5(!) часов. Это при том, что у меня не самый медленный Интернет. И все это время я не знал, когда этот безумный процесс закончится. Милая программа время от времени показывала подходящий к концу прогрессиндикатор, сбрасывала его в ноль и начинала все сначала. Видели мы такие алгоритмы...
Кто-то может сказать – чего тут разводить пустословие на три страницы? Проблема не стоит выеденного яйца - просто скачайте образ с сайта и ставьте сколько захотите. Ну да, так наверное и надо делать впредь, а не использовать предоставляемые программой возможности. Фигня-то заключается в том, что прежде чем товарищ Исаев вспомнил название этого популярного садового инструмента, он на него наступил. Ну и зачем тогда нужен этот модный инсталлятор (два раза КУ), который делает все неудобно, неоптимально, а порой даже по-идиотски? Зачем сносить рабочий продукт, если ещё ничего нет ему на замену и неизвестно, будет ли? Почему я не могу знать про то, сколько это чудо будет ставить среду и все это время вынужден сидеть без работы? Я уже не говорю про возможность «починить» инсталляцию за счет места на винте пользователя. Иолки-моталки, да если бы программисты были тупыми пользователями, которые не могут сами нажать инсталл-анинсталл, смогли бы они работать на Delphi? Все это напоминает неожиданно проснувшийся в разработчиках инсталлятора «талант суперархитектора», о котором так много говорили большевики, тьфу, Бэк и Фаулер. Потратили бы лучше эти мифические человекомесяцы на создание действительно стабильной и удобной среды. Инсталлятор же должен быть простым и надежным. Все остальные цели, которые вы хотите достичь, не должны идти в разрез с желанием пользователей установить ваш продукт. Потому, что желание пользователя - вещь капризная - может вступить в конфликт с его терпением и одним пользователем CodeGear станет меньше. Оракл уже наступал на подобные грабли со своим OUI, но они большие – им, типа, можно. Из-за какого-то инсталлятора завод не станет менять БД =). Интересно, в CodeGear тоже на это рассчитывают?

9 комментариев:

-=WAIK=- комментирует...

Лучшее враг хорошего! Уж сколько раз твердили миру... Думаю к следующей версии получим новый инсталятор ещё более интелектуальный.. :)

Mykhaylo Skachkov комментирует...

да ладно вам.
да, процесс инсталляции геморный и т.д. но общее направление правильное. думаю, в следующем релизе, запланированном на след. год, будет основная проблема с производительностью решена и все будет происходить быстро и т.д.

так или иначе, прогресс очевиден. главное теперь "удержать" его, чтобы каждый новый релиз улучшал то что есть.

по большому счету это беда СodeGear, что такая инсталляция - это по сути их первый опыт комплексного подхода к инсталляции софта. пока был Борланд - все эти процессы шли через жопу.

сейчас же - инсталлятор, хелп, сборка самой среды - делаются автоматически. кроме того есть краштесты и т.д. и т.п.
кроме того нормальное вобщем-то бета-тестирование.

это все, безусловно, "работа над ошибками", что является хорошим знаком. будем надеяться, что дальнейшие шаги CodeGear будут продуманными и улучшах их продукты.

есть все основания для сдержанного оптимизма

Unknown комментирует...

Согласен с Mykhaylo. Прогресс на лицо, глюки инсталятора тоже. Нужно доработать.

У меня граблей не было, просто ОЧЕНЬ долго (оставлял на ночь) шла установка. Причем 90% времени как я понял это установка и настройка хелпа) При том, что инсталяция шла полностью с локального образа и инет был отключен.

А так, ребята, думаю, что все будет хорошо, уже сейчас видно, что движение в правильном направлении и результаты (вспоминая 8,2005,2006) весьма радующие.

Николай Войнов комментирует...

Не хочу разжигать никакие священные войны - просто думаю что проблема глубже. Движение в правильном направлении это уже наверное не про Delphi. Пока они будут таскать за собой две IDE, просто будут распылять усилия. Масса моих знакомых перешла на C# и VS - они просто удивлены, что заставляло их так долго сидеть в Delphi IDE со стороны как затрат так и эффективности разработки. Если на базе Eclipse выйдет Free-Pascal и обеспечит обратную delphi совместимость,то кто останется с ним?
http://nvoynov.blogspot.com/2007/11/delphi.html

Mikhail Mokhov комментирует...

Друзья! Прогресс наметился, это никто не отрицает, и это очень, очень хорошо! Дело в другом. Порой множество проблем спрятано за красивым фасадом. Их не увидеть, просто повертев в руках глянцевую упаковку и не заглянув во внутрь. И этот блог, он в основном про существующие недостатки. Надеюсь, от этого будет польза. Постараюсь писать объективно. Если навру - поправляйте =)

Mikhail Mokhov комментирует...

Николаю. В Ваших словах есть доля правды. Codegear выступает сейчас в роли догоняющего, так как долгое время Delphi финансировался по остаточному принципу. Но сейчас (с выходом 2007) очень многое изменилось - это заметили почти все разработчики. Даже устоявшиеся конструкции языка и синтаксис был подвергнут изменению, не говоря про IDE (я сейчас использую одновременно версии 7 и 2007 и удивляюсь тому, насколько удобнее и продуктивнее стала среда). В целом, я не спешил бы хоронить Delphi. Просто надо её развивать в нужном направлении. Будем пытаться.

Muxo комментирует...

Михо, пеши есче!

Анонимный комментирует...

А что, в Делфи до сих пор нет объявления переменных прямо в тексте (как в C#, Visual Basic .Net):

...
var Counter: Integer = 1;
...

Это же так просто!

Mikhail Mokhov комментирует...

Что Вы, это кощунство! В этом весь великий смысл Паскаля – все строго запротоколировано и детерминировано.