Как уже сообщалось ранее, Microsoft сделал пулл реквест с добавлением поддержки открытого JS-движка Chakra собственной разработки в Node.js. Разработчики Microsoft предложили сделать весьма спорное изменение, что вызвало ожесточенную дискуссию среди участников проекта: звучали обвинения в адрес MS, с последующими блокировками ветки обсуждения, а трезвая критика местами тонула среди чрезмерно восторженных комментариев. И несмотря на то, что пулл реквест до сих пор не был принят, Microsoft получил официальную поддержку сообщества Node.js.
Спорным этот пулл реквест выглядит потому, что в нем предлагается сделать то, что не удавалось сделать сообществу на протяжении последних нескольких лет – создать слой абстракции над движком JavaScript и уберечь код написаный на С/С++ от постоянного переписывания вслед за изменением архитектуры v8. В MS написали прокладку (shim), эмулирующую поведение v8, и назвали ее ChakraShim.
Многих возмутила попытка MS стать участником первого класса в проекте и влиять на разработку ядра. Это и вправду можно назвать недружественным вмешательством, ведь механизм форка существует давно и хорошо себя зарекомендовал. А с учетом того, что Chakra достаточно новый движок и только зарабатывает свою первую репутацию в среде опен сорс, форк выглядит куда более логичным. Тем более, что и работает движок только под Windows.
В ходе обсуждений было принято решение не сливать проекты воедино и ограничиться форком до момента появления хоть сколько-нибудь стабильной версии. Вот, собственно, и вся новость, если бы не несколько интересных деталей.
Интересные детали
Microsoft не перестает удивлять своей новоявленной открытостью, предоставляя закрытые ранее технологии общественности. Корпорация предоставляет сообществу многое из того, что разработчики хотели видеть открытым еще с начала нулевых. Более того MS открывает абсолютно новые разработки. На фоне этого участие компании в разработке Node.js выглядит логичным. Тем более, что MS планирует использовать результат симбиоза в своих IoT продуктах, а у node.js есть огромная база кода.
Но, зачем все это MS, если у них есть собственный стек от IoT до мобильной платформы и серверов, почему не сделать еще один собственный продукт, дополнив им XAML? Достаточно сделать его совместимым с Nodejs. Зачем вкладываться в сообщество, которое не слишком-то лояльно и в продукт, который не занимает значительной доли в твоем техпроцессе? Кто-то, может считать что MS отказалась от стратегии самостоятельной разработки. Но это совсем не тянет на исчерпывающее объяснение.
Давайте посмотрим в сторону WebAssembly. Это технология браузерного байткода, сочетающая скорость и энергоэффективность близкую к C; безопасность исполнения и высочайшую скорость доставки, доступную сегодня только браузеру. Так же добавьте сюда самое широкое распространение среди прочих сред. Плюс абстракция от какого-либо языка! Крайне вероятно, что эта технология перевернет рынок разработки программного обеспечения, как когда-то мобильные приложения перевернули разработку и отхватили огромную долю у веба. Но, кто сегодня занимает лидирующие позиции в вебе, не Google ли с Chrome и v8 под капотом!? Для Microsoft это сулит серьезные последствия, как минимум изнуряющую борьбу.
Но это лишь одна деталь, по ней нельзя делать достоверных прогнозов. Как js разработчик, я очень жду появления wasm, и прогнозировал включение экспериментальной поддержки в июне-июле 2016 – все-таки не такая простая задача – разработать новую всеобъемлющую технологию для веба. Но темпы разработки оказались значительно выше – Google уже тестирует wasm в v8. Интересно, что решение начать разработку слоя абстракции в Node.js, не принималось на протяжении нескольких лет из-за очевидной трудности задачи и отсутствия вообще какого-либо представления о том, как это сделать. С появление ChakraShim решение было принято меньше чем за неделю. И, что не менее интересно, без каких либо внятных причин технический коммитет принимает решение завершить работы к апрелю и назначает этой задаче самый высокий приоритет. Дело в том, что с пришествием wasm необходимость в абстракции отпадет, так как большинство модулей можно будет перенести на wasm без существенной потери производительности, но с избавлением от платформозависимости. А это значит, что Google отхватит жирный кусок уже внутри самой Windows, пусть и не напрямую, но все же.
Конечно, возможно, Microsoft просто пытается укрепить позиции. Но, судя по рискам, которые возникают перед MS, компания стремиться обезопасить свои владения и, возможно, примеряется к Nodejs перед покупкой (напомню, что Nodejs – это торговая марка Joyent, а, значит, может быть продана). В любом случае это первые признаки новой технологической войны, разворачивающейся вокруг wasm. И, в ближайшее время стоит ожидать усиления присутствия Microsoft в Node.js.
Автор: rumkin