Как Microsoft убила AppGet
На прошлой неделе Microsoft выпустила пакетный менеджер WinGet в рамках анонсов на конференции Build 2020. Многие посчитали это ещё одним доказательством сближения Microsoft с движением Open Source. Но только не канадский разработчик Кейван Бейги (Keivan Beigi), автор свободного менеджера пакетов AppGet. Сейчас он силится понять, что произошло за последние 12 месяцев, в течение которых он общался с представителями Microsoft.
В любом случае, теперь Кейван прекращает разработку AppGet. Клиентские и серверные службы переходят в режим технического обслуживания немедленно до 1 августа 2020 года, после чего будут закрыты навсегда.
В своём блоге автор приводит хронологию событий. Всё началось год назад (3 июля 2019 года), когда он получил это письмо от Эндрю, руководителя группы разработки в Microsoft:
Кейван,Я управляю командой разработки Windows App Model и, в частности, командой развёртывания приложений. Просто хотел отправить вам короткую записку, чтобы поблагодарить за создание appget — это отличное дополнение к экосистеме Windows, которое делает жизнь разработчиков Windows намного проще. Вероятно, мы будем в Ванкувере в ближайшие недели для встреч с другими компаниями, но если у вас есть время, мы хотели бы встретиться с вами и вашей командой, чтобы получить обратную связь о том, как сделать вашу жизнь проще в разработке appget.
Кейван был взволнован: его хобби-проект заметили в Microsoft! Он ответил на письмо — и через два месяца, после обмена письмами, пришёл на встречу в представительство Microsoft в Ванкувере. На встрече присутствовал Эндрю и другой менеджер по разработке из той же группы продуктов. Кейван говорит, что отлично провёл время — они поговорили об идеях, лежащих в основе AppGet, о том, что не очень удачно сделано в текущих менеджерах пакетов в Windows и что он планирует в будущих версиях AppGet. У разработчика сложилось впечатление, что Microsoft хочет помочь проекту: они сами спросили, что могут сделать для него. Он упомянул, что было бы неплохо получить немного кредитов на Azure, некоторую документацию на новый формат пакетов MSIX, и хорошо бы исправить проблемы с отдельными ссылками для загрузки.
Через неделю Эндрю прислал новое письмо, в котором фактически пригласил Эндрю на работу в Microsoft: «Мы хотим внести некоторые существенные изменения в дистрибуцию ПО на Windows, и есть отличная возможность помочь в том, как будет выглядеть Windows и система распространения приложений в Azure/Microsoft 365. Имея это в виду, вы рассматривали возможность тратить больше времени, посвящённого appget, потенциально в Microsoft?» — написал он.
Кейван сначала немного колебался — он не хотел идти в Microsoft, чтобы работать над Windows Store, движком MSI и другими системами для развёртывания приложений. Но они заверили его, что всё своё время он будет работать только над AppGet. После примерно месяца длительной переписки по электронной почте они пришли к выводу, что соглашение будет очень похоже на acqui-hire — Microsoft нанимает разработчика вместе с его программой, и они решают, переименовать её в что-то другое, или она станет Microsoft AppGet.
Кейван пишет, что на протяжении всего процесса не совсем понимал, какой будет его роль в Microsoft. В чём будут заключаться его обязанности? Кому докладывать? Кто будет отчитываться перед ним? Он пытался прояснить некоторые из этих ответов во время этих медленных переговоров, но так и не получил чёткого ответа.
После ещё нескольких месяцев опять очень медленных переговоров по электронной почте ему сказали, что процесс найма на работу через BizDev займет очень много времени. Альтернативой для ускорения процесса было бы просто нанять его с «бонусом», после чего он начнёт работать над переносом кодовой базы. У него не было никаких возражений, поэтому они запланировали несколько встреч/собеседований в Редмонде.
Процесс пошёл. 5 декабря 2019 года Кейван прилетел в Сиэтл — в штаб-квартиру Microsoft — и весь день провёл там, на собеседованиях с разными людьми и на переговорах с Эндрю. Вечером взял такси до аэропорта — и вернулся в Ванкувер.
Ему сказали ждать звонка из отдела кадров. Но потом, в течение шести месяцев Кейван ничего не слышал от Microsoft. До середины мая 2020 года, когда старый знакомый Эндрю сообщил о выходе программы WinGet на следующий день:
Привет, Кейван, я надеюсь, что у тебя и твоей семьи все хорошо — похоже, Британская Колумбия хорошо справляется с ковидом по сравнению с США.Мне очень жаль, что позиция менеджера проекта не сработала. Я хотел бы найти время, чтобы сказать, как высоко ценим твой вклад и идеи. Мы разработали менеджер пакетов для Windows, и первый предварительный просмотр состоится в прямом эфире завтра на Build 2020. Мы также упомянем appget в нашем блоге, поскольку считаем, что в Windows найдётся место для различных менеджеров пакетов. Наш менеджер пакетов тоже основан на GitHub, но, очевидно, с нашей собственной реализацией и так далее. Он тоже выходит с открытым исходным кодом, поэтому, очевидно, мы будем рады любому твоему вкладу.
Кейван был не слишком удивлён. К тому моменту уже стало очевидно, что его не пригласят на работу в Microsoft, это его не расстроило, потому что он сомневался, что хочет работать в такой большой компании.
Но настоящее удивление ждало его на следующий день, когда он увидел репозиторий GitHub: «Когда я показал репозиторий своей жене, первое, что она сказала, было: „Они назвали его WinGet? Ты это серьёзно??” Мне даже не пришлось объяснять ей, как основные механики, терминология, формат и структура манифеста, даже структура папок хранилища пакетов, вдохновлены AppGet».
«Расстроен ли я тем, что Microsoft, компания стоимостью 1,4 триллиона долларов, наконец-то собралась с силами и выпустила достойный менеджер пакетов для своего флагманского продукта? Нет, они должны были сделать это много лет назад. Они не должны были портить Windows Store так сильно, как они это сделали, — пишет Кейван. — В реальности, независимо от того, как сильно я пытался продвигать AppGet, он никогда не будет расти с такой скоростью, как решение Microsoft. Я создал AppGet не для того, чтобы разбогатеть, прославиться или устроиться в Microsoft. Я создал AppGet, потому что считал, что мы, пользователи Windows, тоже заслуживаем достойного опыта управления приложениями. Что меня беспокоит, так это то, как именно всё это было сделано. Медленные и ужасные коммуникации. В конце полное радиомолчание. Но больше всего меня задел этот анонс. AppGet, который объективно является источником большинства идей для WinGet, был упомянут только как ещё один менеджер пакетов, который просто случайно существует на этом свете. В то же время другие менеджеры пакетов, с которыми у WinGet очень мало общего, были упомянуты и объяснены гораздо более тщательно».
Кейван Бейги не расстраивается. Он говорит, что нет худа без добра. По крайней мере, WinGet построен на прочном фундаменте и имеет потенциал для успеха. И пользователи Windows, возможно, наконец-то получат достойный менеджер пакетов. А для него эта история стала ценным опытом: «Век живи — век учись».
Он объясняет, что копирование кода не является проблемой, в этом суть Open Source. И он не имеет в виду копирование общей концепции менеджеров пакетов/приложений. Но если посмотреть на подобные проекты в OS X, Homebrew, Chocolaty, Scoop, ninite и т. д., то у всех свои особенности. Однако WinGet работает почти так же, как и AppGet: «Хотите знать, как работает Microsoft WinGet? Сходите и прочитайте статью, которую я написал два года назад о том, как работает AppGet», — пишет он.
Кейвана огорчило только то, что его работа нигде не упомянута.
Для справки. «Embrace, extend and extinguish» («Поддержать, надстроить и уничтожить») — фраза, которая, как было установлено Министерством юстиции США, использовалась в корпорации Microsoft, чтобы описать стратегию внедрения в отрасли программного обеспечения, использующего широко распространённые стандарты. Стратегия предусматривала расширение этих стандартов и дальнейшее использования этих отличий для получения преимущества над конкурентами.
В случае AppGet нельзя сказать, что применялась эта стратегия в чистом виде, но некоторые элементы можно рассмотреть. Сторонники свободного программного обеспечения считают её морально неприемлемым способом действий и до сих пор с недоверием относятся к инициативе Microsoft по внедрению подсистемы для Linux в операционную систему Windows (WSL). Они говорят, что Microsoft по своей сути не изменилась и никогда не изменится.