Обновлено 24.10.2021 в 1:30 МСК. Microsoft принесла извинения за удаление функции Hot Reload из инструмента «dotnet watch» в .NET 6, одобрила запрос на возврат этой функции и подтвердила, что она будет доступна в финальной версии .NET 6. Подробную информацию об этом вы можете найти в нашей публикации по этой ссылке.
Оригинальная статья от 23 октября:
На протяжении последних 10 лет Microsoft поддерживает программное обеспечение с открытым исходным кодом. Более того, однажды компания даже призналась в любви к Linux и сообществу Open Source, а организация Linux Foundation хвалила Microsoft за поддержку открытого программного обеспечения.
Однако вся эта доброжелательная атмосфера может в одночасье разрушиться из-за спорного бизнес-решения, которое возмутило сообщество .NET и заставило многих усомниться в приверженности компании к принципам Open Source. По данным The Verge, это решение также не понравилось многим разработчикам внутри Microsoft, но им фактически запретили выражать недовольство. Лишь известный разработчик Скотт Хансельман (Scott Hanselman) опубликовал твит с грустным смайликом со слезой, что вполне может быть связано с описываемой ситуацией.
😢
— Scott Hanselman (@shanselman) October 22, 2021
Проблема в том, что на этой неделе Microsoft без каких-либо предупреждений удалила ключевую часть функции Hot Reload из предстоящего релиза .NET 6. Эта функция позволяет разработчикам редактировать исходный код, применять изменения и наблюдать за результатами в работающем приложении. Отметим, что такая функция уже давно присутствует в языке Dart и фреймворке Flutter от Google, и Microsoft сейчас пытается угнаться за конкурентами.
Изначально Microsoft называла это своим «амбициозным проектом по внедрению Hot Reload для максимально возможного числа разработчиков .NET», но в последнюю минуту компания сделала функцию эксклюзивной для Windows и Visual Studio, а не открытой и кроссплатформенной, как это планировалось вначале.
Интересно, что .NET 6 Release Candidate позволяла использовать функцию Hot Reload на других платформах и в других средах разработки, таких как Visual Studio Code, с помощью «dotnet watch». Как правило, Release Candidate представляет собой финальную версию продукта с окончательным набором возможностей, но может включать в себя некоторые ошибки, которые должны быть устранены к релизу. Но, несмотря на это, Microsoft удалила функцию из .NET 6 уже после выпуска нескольких сборок Release Candidate, что вызывает ещё больше вопросов.
Дмитрий Лялин, программный менеджер Microsoft, подтвердил, что функция Hot Reload будет доступна только в Visual Studio 2022, так как компания хочет «сосредоточиться на предоставлении наилучших возможностей для большинства пользователей». Он заявляет, что инженерам «пришлось расставить приоритеты», в результате чего функция Hot Reload перестала быть частью инструмента «dotnet watch». Тема на GitHub, в которой ведётся обсуждение удаление функции, показывает разочарование сообщества .NET.
Sorry for any confusion. To clarify, given the number of scenarios we are working on, we had to prioritize :(. As a result, Hot Reload will not release as a feature of dotnet watch tool. We are doubling down on VS 2022 with support for VS4Mac coming later
— Dmitry Lyalin (@LyalinDotCom) October 21, 2021
«Еще больше разочаровывает то, что если взглянуть на исходный код, то можно увидеть, что для поддержки функции требовалось примерно 1-2 тысячи строк кода, и в последний момент этот код был вырезан», — сказал Филлип Картер, бывший сотрудник Microsoft в команде F#. «Это явный шаг назад, особенно если учесть, что изначально горячая перезагрузка создавалась не только для Visual Studio. Я очень надеюсь, что это не начало закономерности».
The Verge утверждает, что решение об удалении этой функции из .NET 6 было принято Джулией Лиусон (Julia Liuson), главой подразделения разработчиков Microsoft. По информации источников, решение было принято в интересах бизнеса, и очевидно, что компания рассчитывала, что оно останется незамеченным и не вызовет ответной реакции. Инженеры Microsoft, которые годами работали над .NET вместе с сообществом, , чувствуют себя преданными и опасаются, что это решение будет иметь долгосрочные последствия для усилий Microsoft в сфере Open Source.
Также стоит отметить, что это спорное решение было принято после того, как на протяжении нескольких недель сообщество .NET выражало беспокойство по поводу участия Microsoft в .NET Foundation. Этот фонд был создан в 2014 году, когда Microsoft сделала .NET проектом с открытым исходным кодом. Он должен был стать независимой организацией, которая существует для улучшения разработки программного обеспечения с открытым исходным кодом и сотрудничества в области .NET. Уходящий в отставку член совета директоров недавно поставил под сомнение роль .NET Foundation, задав вопрос: «Призван ли фонд навязывать волю Microsoft в отношении .NET Open Source, или же создан для того, чтобы способствовать развитию и продвижению здорового сообщества?».
Кстати, Microsoft заблокировала возможность обсуждения пул-реквеста на GitHub, который удалил функцию Hot Reload в .NET 6 из «dotnet watch». Этот шаг лишил сообщество возможности прокомментировать или отклонить изменение, внесённое в последний момент. Сообщество .NET создало собственный пул-реквест, направленный на возвращение функции, однако он вряд ли будет одобрен Microsoft.
Отметим, что недавние конфликты в сообществе привели к тому, что исполнительный директор .NET Foundation Клэр Новотны (Claire Novotny) подала в отставку. А многие участники сообщества и вовсе усомнились в независимости .NET Foundation, учитывая особые привилегии Microsoft. Очевидно, что решение в отношении .NET 6 ещё больше усугубит ситуацию в сообществе .NET.
In order for the @dotnetfdn to move forward, I've tendered my resignation as Executive Director. I'm still on the @dotnet team and look forward to continuing to work on my favorite platform.https://t.co/Xn4ghK3vMd
— Claire Novotny (@clairernovotny) October 8, 2021