Апдейт — всему голова?

6 июль, 2009 - 10:07Александр Пацай

Пропущенному наконец-то в субботу в App Store iPref-у посвящается…

На самом деле этот пост у меня зреет уже какое-то время. Началось все с того момента, как я переехал на Snow Leopard, обзор которого я писал для блога.

Естественно, в процессе работы с 10.6 я столкнулся с тем, что некоторые приложения перестали работать — часть из них вообще не запускается, а часть некорректно функционирует, что может приводить к невыполнению поставленных им задач. Соответственно, возник вопрос о том, что надо бы проверить все установленные приложения насчет обновлений, закачать эти самые обновления и установить их. В этом месте я пожалел, что для приложений под Mac OS X нет чего-то подобного App Store. Но жалел я недолго.

software-update

Про App Store я вспомнил потому, что в нем, без сомнения, есть определенные преимущества. В частности, все приложения собраны в одном месте, тут же все рейтинги и отзывы, так что выбрать подходящее приложение, ориентируясь на них, довольно легко. Все приложения отсюда же можно и установить, скачав с компьютера или телефона – затем все легко синхронизируется в обе стороны. Не надо заморачиваться с каким-то сайтами, битыми ссылками и прочими сложностями, с которыми сталкиваешься, когда ищешь какую-то программу в интернете. Соответственно, с обновлениями тоже легко – как только для приложения выходит обновление, оно тут же показывается в iTunes или на телефоне, и обновления ко всем приложениям устанавливаются путем нажатия 1 кнопки. Удобно? Без сомнения, если вы – конечный пользователь. А вот с точки зрения разработчика все немного хуже, и мы это на своей шкуре ощутили в случае с iPref, нашим преферансом для iPhone.

О том, что iPref несовместим с iPhone OS 3.0, мы, конечно же, знали достаточно давно – с тех пор, как Apple начала раздавать бета-версии прошивок 3.0. Но сразу менять приложение, подстраивая его под каждую конкретную бету, не зная, что будет в будущих бетах, не имело особого смысла, так как неизвестно, что Apple могла изменить в последующих бетах – все наши исправления могли оказаться бессмысленными. Это сродни тому, как Dev Team не выпускала свой jailbreak для бета-версий iPhone OS – в каждой последующей бете все могло перестать работать снова, поэтому лучше сесть и ждать чего-то более устаканившегося. Проблема с Apple заключается в том, что сколько ждать – неизвестно. Они не говорят “вот эта бета – последняя, давайте под нее прикручивайте уже что можно”, или же “еще пара бета-версий впереди”. Только потом, постфактум, мы вдруг узнаем из новостей, что “теперь Apple тестирует приложения в App Store с этой версией, значит, это уже что-то, похожее на релиз”.

Соответственно, когда мы узнали об этом (недели за две, наверно, до официального выхода 3.0 – сейчас уже не помню точных дат), мы, конечно же, собрали версию iPref (да и других приложений), которая точно была совместима с 3.0, и подали ее в App Store. Но, во-первых, точно также сделали, наверно, большинство разработчиков 40-50 тысяч приложений из App Store – можете себе представить загрузку тех, кто проводит проверку приложений. А во-вторых, нас ждал облом в виде отказа – примерно через недели полторы нам пришло письмо, что приложение “зареджектили” по причине опции “вибрирования”. Напомню, что эта опция там была всегда, начиная с декабря прошлого года, когда iPref начал продаваться в App Store. Только в этот раз, видимо, либо проверяющий был с iPod touch, либо просто был более придирчив, и он отказал приложению, мотивируя тем, что раз вибрации нет на iPod touch, то игроки на этом устройстве, бедняжечки, страшно запутаются, и не смогут расписать пулю.

Естественно, что в тот же день мы внесли изменения в программу (теперь она узнает на каком устройстве происходит запуск и если это iPod touch, то просто прячет опцию включения вибрации), и тут же переподали ее в App Store, однако, то ли в отместку за то, что один раз мы получили “reject”, то ли просто лавина приложений в очереди на обзор стала невероятно огромной, но после повторной подачи iPref провел в режиме pending около 3 недель, и был пропущен в App Store только в субботу утром в начале июля. Естественно, поскольку с момента выхода iPhone OS 3.0 прошло уже почти 3 недели, пользователи успели массово на нее мигрировать, и в комментариях к приложению в App Store мы выгребли кучу отрицательных отзывов “нифига не работает!”

И дело ведь не только в том, что “ну у вас же там написано “совместимо с 2.0 и выше”" — в конце концов, это такие варианты в системе у Apple, когда при подаче приложения нельзя указать “совместимо с 2.1-2.2″. Такая централизованная система управления приложениями вместе с присущими ей удобствами, часть из которых я озвучил выше, несет в себе и недостатки. Например, в случае единой системы с одним проверяющим именно Apple решает, какие приложения можно, а какие нельзя выпускать для платформы. Поэтому в App Store практически нет альтернативных браузеров (туда прорвался только iCab, а клоны Safari не в счет), нет альтернативных медиа-плееров, нет приложений для взрослых, до недавнего времени не было полноценных приложений для GPS, MMS, интернет-tethering, и тд (те, кто делал jailbreak для своего телефона, прекрасно осведомлены о тех приложениях, которые становятся доступными телефону после JB). Именно в силах Apple допустить или запретить то или иное приложение, и это, безусловно, ограничивает свободу пользователей.

Ну и второй недостаток связан с медлительностью той же Apple во всех процессах, связанных с разработчиками. Ведь не только поданное обновление приложения (как в случае с iPref) может рассматриваться очень долго, точно также долго происходит процесс рассмотрения первоначальных заявок на право разработки приложений для iPhone, а также утверждение финансовой информации (чтобы Apple могла переводить деньги). Да, кстати про деньги — с переводами денег тоже возникают задержки: мало того, что Apple сохраняет за собой право платить через 45 дней после окончания учетного месяца, так еще и зачастую деньги приходят с опозданием. То есть за продажи в январе деньги придут в марте, если повезет, а если не повезет, то в апреле. Не нравится? Ну вы знаете ответ на этот вопрос.

Но вообще я, наверно, отвлекся:)  — явно видно, что тема с App Store для меня наболевшая. При всех его недостатках, когда я искал обновления для приложений, установленных на Маке, мне хотелось, чтобы была какая-то централизованная база, которая бы автоматически показывала и обновляла мои приложения. Да-да, я знаю про AppFresh, которая вроде как по описанию должна помогать находить обновления для установленных на компьютере приложений. Но эта штука находится в версии 0.8.4, что, понятное дело, не обещает особой стабильности работы даже на релизнутых 10.4 и 10.5, а уж на 10.6 она вообще крешится практически сразу.

Частично помогает решить проблему штука под названием Sparkle Framework — это специальная бесплатная библиотека, разработанная для добавления более-менее стандартного интерфейса по обновлению приложений. Добавив его в программу, разработчик получает практически готовое решение по проверке приложений на наличие обновлений, а также их автоматическую закачку и установку. Есть только несколько проблем — во-первых, Sparkle сам не без изъянов, и в наших приложениях, где мы его использовали, мы сталкивались с его глюками, иногда приводящими к падениям. А во-вторых, пользователю Sparkle сам по себе бесполезен, если разработчик приложения не потрудился его вкрутить в программу. А в третьих, несмотря на то, что Sparkle бесплатен и доступен с открытым исходным кодом, многие компании используют свои решения для software update, так что до стандартизации на одном решении еще очень далеко.

В итоге, конечно, все это приводит к тому, что для конечного пользователя весь процесс обновления приложений состоит в многочисленных ручных и полуавтоматических проверках, скачиваниях и установках, после чего система App Store начинает выглядеть привлекательно. Но это опасно, так как возьми Apple в руки систему распространения приложений для Mac OS X, мы не досчитаемся очень многих и полезных приложений на Маке. Так что, похоже, в ближайшее время особо лучше не станет.