Взрывной рост мобильного пространства ускорил поиск надежного и жизнеспособного кроссплатформенного решения. В 2008 году, вскоре после появления iPhone SDK и после игры с Cocoa и Objective-C, Брайан Леру и его коллеги из Nitobi решили, что их время лучше потратить на создание кроссплатформенного решения, чем на создание собственных мобильных приложений.
Сегодня PhoneGap поддерживает десятки тысяч мобильных приложений. Для Брайана и его команды многое изменилось с момента основания PhoneGap. В 2011 году Adobe приобрела Nitobi, а источник PhoneGap был передан в дар Apache Software Foundation в качестве Cordova .
В центре внимания сегодняшнего дня, я говорю с Брайаном о первых днях PhoneGap, о будущем мобильных устройств и о том, почему разрушение PhoneGap — хорошая вещь.
PhoneGap существует с начала мобильной революции и хорошо известен среди разработчиков. Для тех, кто не Brian LeRoux или PhoneGap, не могли бы вы рассказать нам о себе и как вы участвуете в проекте?
PhoneGap был создан небольшой группой людей, большинство из которых в то время работали в Нитоби, в Канаде.
Первый коммит, где приземлились Брок Уиттен и Роб Эллис для iOS. В наши дни iOS полностью принадлежит плодовитому Shazron Abdulla. Джо Боузер взломал очень раннюю версию Android и продолжает поддерживать ее по сей день.
Дейв Джонсон добавил различные биты BlackBerry, которые теперь в значительной степени поддерживаются самими BlackBerry с помощью Lorin Beer. Джесси Макфадьен перерезал воплощения Windows Phone в тесном сотрудничестве с Microsoft.
Майкл Брукс потряс документацию и большую часть интерфейса командной строки (CLI) и инструментов тестирования вместе с Fil Maj. Анис Кадри был лидером в разработке и поиске плагинов. Стив Гилл был ответственным за выпуски и внес значительную часть сопутствующего инструментария.
Херм Вонг запустил Firefox OS и теперь наш новый проект с графическим интерфейсом. Фирменный стиль начался с Yohei Shimomae и с тех пор перешел к Joni Rustulka. У Google и IBM тоже есть целая куча авторов.
Аккуратная история создания с одним хакером в подвале — это своего рода фантазия, которая нравится нашей индустрии, но редко встречается. Программное обеспечение — это всегда коллективные усилия, и каждый, кто вносит свой вклад, заслуживает признания. Мне не хватает канадской метрической тонны авторов, но вы поняли идею.
Для себя я работал в Nitobi, вносил много кода в различные области PhoneGap с момента его воплощения, но моей главной задачей было построение ранней культуры проекта, его философии и целей — вещей, которые чрезвычайно важны для коммуникации и развития сообщества.
Тестирование, инструментарий и адаптация были другими первоочередными проблемами для меня. В конечном счете, мой фокус больше сместился на усиление приверженности за пределами Нитоби, что привело к пожертвованию в пользу Apache под именем Cordova .
Поскольку PhoneGap уже близко к шести годам, большинство людей по крайней мере слышали об этом. Для тех, кто не знаком с PhoneGap, вы можете сказать, какую проблему пытается решить PhoneGap?
PhoneGap предназначен для создания мобильных приложений с использованием HTML, CSS и JavaScript. Мы поддерживаем все основные мобильные операционные системы для создания и распространения в собственных магазинах приложений. Но мы, прежде всего, веб-разработчики, и цель PhoneGap — продемонстрировать веб как первоклассную платформу для разработки. Мы хотим создавать веб-приложения, а не проприетарные ловушки.
В конечном счете, PhoneGap предоставляет вам полноценный полноэкранный веб-браузер и модель расширяемости для доступа к функциональности собственной платформы через простой интерфейс плагина. Модель плагинов упрощает представление чего-либо в операционной системе в веб-представлении. Таким образом, нисходящие потоки могут быстро создавать новые веб-функции, и разработчики приложений не ограничены традиционной песочницей веб-представления.
В последние годы основная часть наших усилий была посвящена созданию инструментов, которые абстрагируют общие нативные рабочие процессы мобильной разработки. Компиляция, эмуляция, ведение журнала, установка плагинов и тому подобное.
Как выглядели первые дни PhoneGap? Когда вы поняли, что PhoneGap является решением проблемы, с которой сталкиваются многие компании и разработчики?
Первые дни были смешными и веселыми. PhoneGap был в основном сторонним проектом, и первые разработчики ядра часто взламывали и философствовали в Alibi Room, знаменитом пивном баре в Ванкувере, в нерабочее время.
Постепенно, когда мобильность начала стремительно расти, многие другие разработчики пришли к драке, привлеченной философским пониманием, которым мы делились.
Это была и остается группа, которой надоели проприетарные платформы, меняющиеся операционные системы и запертые в экосистемах разработчиков. Усталый от программных платформ, утверждающих, что «один верный путь» только обновляется «таким образом» каждые шесть месяцев, а затем устаревают, если не исчезают совсем.
На протяжении многих лет этого злоупотребления веб-платформа постепенно улучшалась, и приложения, нацеленные на нее, все еще работали. Мы больше не влюблялись в блестящий маркетинговый материал, называющий себя «руководящими принципами проектирования человеческого интерфейса».
Сеть никогда не подвергалась какой-либо угрозе, но мы нашли взлом, который может привести к драке на самых угрожающих ей платформах. Проект всегда был с открытым исходным кодом, в первую очередь уважал сеть и был разработан для демонстрации функций, которые, по нашему мнению, должны были поддерживать платформу, чтобы оставаться конкурентоспособными по сравнению с собственными альтернативами. Это всегда была хакерская группа хакеров, но мы стараемся не относиться к себе слишком серьезно.
Несколько лет назад вы сказали, что PhoneGap «не золотой молоток» и что PhoneGap не является решением для каждого мобильного приложения. Это все еще правда, или мы приближаемся к мобильному вебу, столь же мощному, как нативный опыт?
Спектр потенциальных приложений постоянно расширяется по мере совершенствования браузеров и устройств, на которых они работают. Я бы никогда не стал пропагандировать PhoneGap как окончательное решение. Есть технические соображения, такие как доступность собственной платформы, и есть более мягкие проблемы, такие как бизнес-драйверы, навыки сотрудников, инвестиции в существующий контент, лицензирование, зависимость от сторонних поставщиков платформ и даже партнерские отношения.
Выбор технологий всегда приносит компромиссы, и инвестиции в такие веб-технологии, как PhoneGap, ничем не отличаются.
Реальная проблема, с которой сталкиваются разработчики, особенно на предприятии, заключается в признании того, что разработка мобильных приложений подобна обычной разработке программного обеспечения. Это не просто какой-то момент, связанный с маркетингом. Существует целый жизненный цикл, чтобы рассмотреть; проектирование, разработка, тестирование, аналитика и мониторинг.
Мобильная разработка требует постоянного обслуживания и ресурсов. Один раз консалтинговой фирмой потребуется обновление, когда выйдет новая версия iOS или Android. Отдел маркетинга должен понимать, какой контент выполняет, и иметь возможность быстро публиковать изменения в контенте, который не работает. ИТ-отделу необходимы отчеты о сбоях во время выполнения и доступ к инфраструктуре push-уведомлений.
Более длинная игра, которая требует преднамеренного стратегического подбора ресурсов, только признается, поскольку многие организации только сейчас обнаруживают, что они, по крайней мере частично, сами становятся компаниями-разработчиками программного обеспечения. Стратегические инвестиции в технологии, основанные на собственной частной экосистеме, представляют собой риск для бизнеса. PhoneGap может помочь снизить этот риск. В конечном итоге вы никогда не потеряете ставку в Интернете.
Приобретение Nitobi компанией Adobe стало важной вехой для PhoneGap, но Apache Cordova, вероятно, был даже более важным. Как Apache Cordova изменила платформу?
Приобретение Nitobi компанией Adobe было абсолютно важным. Мы освободились от сумасшедшей консалтинговой работы, чтобы сосредоточиться исключительно на PhoneGap, и нет никаких сомнений в том, что платформа принесла огромную пользу. Пожертвование источника PhoneGap для Apache в качестве Cordova не менее важно в долгосрочной перспективе.
Работа с Apache принесла новый уровень дисциплины в проект. Наш процесс выпуска гораздо более формализован, и, хотя нам было сложно поддерживать темп, наше сообщество завоевывает правовую безопасную почву, которой славится Apache.
Эта нейтральная территория является отличной средой для совместной работы людей, работающих в различных организациях. С момента присоединения к Apache мы приветствовали коммиттеров из IBM, BlackBerry, Microsoft, Google, Intel, HP, LG, Samsung и других.
В результате мы увидели много новых дистрибутивов Cordova. Мое предубеждение касается Adobe PhoneGap, но разработчики могут выбрать таргетинг на BlackBerry Webworks , IBM Worklight , SAP SDK, Telerik , Intel XDK или Google Mobile Chrome Apps.
Некоторые люди просто используют ванильный Apache Cordova и создают свой собственный downstream. Я люблю это разнообразие. Все это указывает на динамичную и здоровую экосистему, на которую может рассчитывать наше сообщество разработчиков. Мы выполняем быстрые итерации, быстро исправляем ошибки, регулярно добавляем новые функции и хорошо понимаем процесс участия, в котором может участвовать каждый.
Apache имеет заслуженную репутацию в области политики и бюрократии, но ее улучшение также является частью нашей работы, и работа с ASF ( Apache Software Foundation ) в конечном итоге стала верным путем для нашего сообщества в долгосрочной перспективе. Я очень горжусь тем, что мы достигли с ASF.
PhoneGap — отличная платформа для разработки мобильных приложений. Развертывание остается громоздким на многих платформах, но вы попытались решить эту проблему с помощью PhoneGap / Build . PhoneGap / Build звучит как золотой молоток для разработчиков, которые ищут кроссплатформенное решение. Можете ли вы рассказать нам, что делает служба и какую проблему она решает?
PhoneGap Build — это компилятор, размещенный в Adobe Creative Cloud . Используя PhoneGap / Build, вы можете настроить таргетинг на любую поддерживаемую нами мобильную операционную систему из любого веб-браузера. Вы можете создать приложение для iOS из нетбука или даже из собственного телефона (мета).
Сначала мы думали, что это может быть полезно для непрерывной интеграции и тестирования. Это стало универсальной утилитой для очень осторожного процесса компиляции приложения и предоставления получающемуся артефакту URL. Он делает только одну вещь и делает это довольно хорошо. Мы видели, что многие люди используют PhoneGap / Build как API или как их компилятор.
Вы однажды сказали, что верите, что будущее PhoneGap заключается в его собственном разрушении. Можете ли вы объяснить, что вы подразумеваете под этим?
Да, конечная цель PhoneGap — прекратить существование. Мы не хотим писать нативные приложения. Мы пошли по пути разработки проприетарных клиентов и знаем, что это ведет к рискованной блокировке экосистемы.
Мы хотим создавать веб-приложения, и PhoneGap всегда был временным решением, пока браузеры или, возможно, устанавливаемые веб-приложения не станут подходящей альтернативой. Я думаю, что мы очень близки к этой реальности сегодня. Для многих приложений веб-сначала абсолютно подходит.
Для того чтобы мобильные веб-приложения преуспели с повсеместным распространением, которое мы видим на рабочем столе, полезно продемонстрировать области, которые необходимо улучшить в Интернете. Архитектура плагинов PhoneGap — это действительно гладкая поверхность для создания незаметных прототипов для демонстрации новых возможностей традиционной веб-поверхности. Эта тонкая философия помогла нам осветить правильные направления, внедрив стандарты, заполнив условия, сотрудничая с W3C по разработке API, и поставив в известность производителей браузеров, которые привели к появлению новых функций платформы.
Открытое признание окончательного упадка может быть либо трагическим событием во времени, либо стратегическим пониманием, против которого нужно планировать. Чтобы засвидетельствовать наше собственное уничтожение, PhoneGap должен сделать все возможное, чтобы веб-платформа победила.
Какие болевые точки нам еще нужно решить в Интернете? Другими словами, насколько мы близки к мобильному вебу, который предлагает опыт, аналогичный нативным приложениям?
25 лет трудно критиковать веб-платформу. Тем не менее, избиение в Интернете, в сети, является давней традицией ремесла для веб-мастеров.
Категория дохода, приносящая доход в App Store, — игры. Итак, давайте подумаем о том, что нужно, чтобы стать отличной игрой. Аудио в целом грязное, но API Web Audio просто сумасшедший. WebRTC, или как мы там его называем, обещает сделать приложения в реальном времени более реальными.
Тогда есть множество слесарного дела, которое не совсем приземлилось повсеместно, такое как Full Screen и Game Controller . Когда весь этот материал станет общедоступным, он встряхнет игры. API с интенсивным использованием данных, такие как Web Audio , WebRTC и WebGL , помогут нам найти грани производительности выполнения JavaScript, и все ранние признаки крайне положительны.
Планировка становится довольно хорошей. Flexbox великолепен, и я возлагаю большие надежды на CSS Grids. Последняя версия Firefox (28) исправляет последние ошибки с Flexbox. Я не знаю, когда приземлились CSS-сетки, но я терпелив. Полезны медиазапросы, иногда называемые адаптивным веб-дизайном. Мне нужна более надежная модель возможностей, которая позволила бы нам оптимально отображать адаптивные интерфейсы.
Самая большая возможность действительно взломать историю офлайн — вероятно, лучше назвать «иногда подключен». Установленные веб-приложения, такие как приложения PhoneGap, по сути автономны, но модель полного разрешения еще предстоит определить. Mozilla, Google и W3C работают над этим.
У многих наших читателей есть амбиции разрабатывать для мобильных устройств. Если бы вы начинали сегодня, с чего бы вы начали? Какой совет вы бы дали себе?
Мобильный телефон не сильно отличается от обычного клиентского программирования. Классический совет — тестировать на реальных устройствах, и я призываю людей изучать нативные платформы, но не слишком привязываться к ним. Хорошим примером будет обновление с iOS 6 до iOS 7. Хорошо спроектированное и спроектированное PhoneGap или обычное веб-приложение не было хрупким для этого обновления.
В противном случае, все обычные программист мудрости применяется. Будьте амбициозны в своей области, но осторожны в своих реализациях. Создайте много веток и будьте готовы отбросить большую часть своей работы. Вы не ваш код, поэтому безжалостно рефакторируйте и ищите критические отзывы.
Маленькие модули и прототипы легче рассуждать, исправлять, тестировать и проверять. Не увлекайтесь рамками и библиотечной модой. Сосредоточьтесь на проблемном пространстве, которое вы имеете, и повторяйте яростно и беспристрастно. Напишите тесты и сделайте так, чтобы кто-то новичок в кодовой базе упростил выполнение тестов самостоятельно.
Наконец, будьте супер превосходны со своими коллегами. У Интернета длинная память, эта индустрия меньше, чем может показаться на первый взгляд, и никто не хочет работать с мудаком. Никто никогда не думал, что грубый человек был умным. Пламя это просто небезопасное поведение и профессионально незрелый. Программирование достаточно сложное, мы все можем чему-то научиться друг у друга и выбрать для этого приятный опыт.
Future Insights Live 2014
Я хотел бы поблагодарить Брайана за его время и за то, что он поделился своими идеями и идеями с Tuts +. Вы можете услышать, как Брайан выступил на Future Insights Live 2014 в Лас-Вегасе в июне. На конференции представлен внушительный список докладчиков, освещающих лучшие вопросы веб-дизайна, разработки и мобильных устройств. Используйте код купона TUTS для 15% скидки .