РАЗРАБОТКА

Как Google едва не потеряла фронтенд-сообщество из-за Angular 2

В 2014 году Google объявила Angular 2 без пути обновления для AngularJS — и часть разработчиков ушла к React и Vue.

✍️ Редакция iTech News | 29.10.2026 | ⏱ 4 мин | Источник: The Register
Как Google едва не потеряла фронтенд-сообщество из-за Angular 2

В 2014 году Google фактически предложила миллионам веб-разработчиков выбирать между устаревающим AngularJS и ещё не готовым Angular 2. Миграция с AngularJS не получила понятного маршрута, а новая версия оказалась настолько непохожей на прежнюю, что часть сообщества ушла к React и Vue. Для российских команд это по-прежнему знакомый сценарий: технически оправданный rewrite может стоить дороже, чем кажется в архитектурной презентации.

О том, как Google запутала собственную аудиторию во время перехода между поколениями Angular, сообщает The Register со ссылкой на выступление бывшего Developer Advocate Google Стивена Флуина на конференции All Things Open. Флуин работал с Angular в Google с 2016 по 2021 год, а теперь руководит developer relations в Buildkite. Его вывод звучит неприятно, но полезно для любого владельца платформы: неопределённость быстро убивает желание разработчиков идти за продуктом.

AngularJS появился в 2009 году как побочный проект инженера Google Мишко Хевери. Изначально он пытался расширить возможности HTML, а затем фреймворк прижился внутри Google: разработчикам он оказался удобнее Java-ориентированного Google Web Toolkit. Внешняя аудитория тоже быстро подхватила идею — HTML-шаблоны были понятны, а интерактивные элементы можно было собирать без тяжёлой клиентской инфраструктуры.

У AngularJS 1.3 была привычная для своего времени модель с контроллерами: ввод пользователя, бизнес-логика и передача данных концентрировались вокруг объекта $scope. Angular 2, анонсированный на ng-europe в 2014 году, менял не отдельные API, а саму модель разработки. Вместо контроллеров пришли компоненты, шаблоны получили собственные классы и свойства, а после неудачного захода в Dart проект полностью переписали на TypeScript. Обратной совместимости не было.

Проблемой стал не только масштаб изменений. На момент объявления команда не могла назвать дату готового релиза, а ключевые основы нового Angular продолжали меняться. Флуин описал работу того периода как почти «марш смерти». Для пользователя это выглядело ещё хуже: действующий инструмент помечают как устаревающий, а замена существует лишь в виде обещания и набора меняющихся идей.

На презентации Angular 2 спикеры прощались со старыми возможностями слайдом-надгробием и церковным колоколом: «RIP Controllers» и так далее. Внутри конференц-зала это могло выглядеть эффектно, но сообщество услышало другое: всё, во что оно вложило время, объявили мёртвым. Миграция с AngularJS превратилась не в управляемое обновление, а в выбор между полной переработкой приложения, ожиданием или сменой стека.

Рынок быстро предложил запасные выходы. React и Vue тоже строились вокруг компонентов, но уже были доступны для production-разработки. По данным опроса State of JS за 2016 год, React использовали 53% опрошенных JavaScript-разработчиков. Аудитория Angular разделилась: 30% оставались на классическом AngularJS, 13% работали с Angular 2, ещё 10% выбрали растущий Vue. Эти цифры не доказывают, что каждый уход был вызван именно Google, но хорошо показывают цену затяжного переходного периода.

Неразбериху усилило и название. AngularJS, Angular 2, затем Angular 4 — третью версию просто пропустили. Angular 2 вышел лишь в сентябре 2016 года, а Angular 4 — уже в марте 2017-го. При этом AngularJS ещё жил: в версии 1.5 весной 2016 года появились компоненты, а формально поддержку проекта прекратили только в конце 2021 года. Неочевидно было даже базовое: AngularJS и Angular 2 — это один фреймворк в разных версиях или два разных продукта?

Google пришлось исправлять не только кодовую базу, но и коммуникацию: уточнять правила публичных формулировок, обучать экспертов и даже корректировать Knowledge Graph — базу фактов поисковика. Сейчас процесс устроен заметно аккуратнее: Angular получает обновления дважды в год, использует семантическое версионирование, а новые версии сначала проверяются на приложениях самой Google. Функции, которые планируют убрать, предварительно помечают устаревшими на год.

Современный Angular в итоге занял своё место: компонентный фреймворк используется в интерфейсах Gemini, Google Analytics и других продуктах компании, а также сближается с внутренним высокопроизводительным фреймворком Wiz. Но урок истории не отменяется. Если миграция с AngularJS или любой другой платформы требует переписать половину продукта, её нельзя продавать как обычное обновление. Иногда честнее дать новому поколению другое имя, отдельную дорожную карту и право завоевать аудиторию заново — чем заставлять разработчиков гадать, жив ли их нынешний стек.

Поделиться: Telegram X LinkedIn