Программное обеспечение с открытым исходным кодом для .NET все еще остается в тени Microsoft

В большинстве случаев я предпочитаю .NET. Он универсален, последователен и хорошо продуман. Это редко бывает гламурно. Да, мы в восторге от последних инноваций C #, и иногда появляются горячие технологии (Blazor сейчас, Silverlight в далеком прошлом). Но если опытный разработчик говорит, что .NET предназначен для людей, которые работают в банках - что ж, они не совсем неправы.

Нет ничего плохого в том, чтобы иногда быть скучным. Миром правят бизнес-приложения. Но это становится проблемой, когда корпоративная сторона технологий Microsoft мешает прогрессу, который мы действительно хотим видеть. И нигде это не так заметно, как в мире программного обеспечения с открытым исходным кодом.

Вот в чем проблема. В этом году Microsoft успешно перешла от ориентированной на Windows .NET Framework с закрытым исходным кодом к кроссплатформенной .NET 5 с открытым исходным кодом, по сути перестроив свой движок разработки программного обеспечения, продолжая управлять самолетом. Это был чрезвычайно амбициозный шестилетний проект, который начался с анонса первой версии .NET Core. (Если вы все еще думаете, что Microsoft - динозавр, это доказывает, что он больше велоцираптор, чем бродячий бронтозавр.)

Но .NET 5 по-прежнему живет в экосистеме, где Microsoft - доброжелательный диктатор, проекты с открытым исходным кодом рассматриваются с подозрением, а участие сообщества разворачивается на обочине. По сравнению с любой другой современной платформой .NET - это упрямая монокультура. И если это не изменится, мы пожертвуем будущим ради краткосрочной безопасности.

Проблема культуры

Причин хрупкости экосистемы .NET много, и большинство из них указывают на Microsoft. Главный менеджер программы Иммо Ландверт резюмирует проблему следующим образом:

«Исторически мы учили клиентов ожидать, что все функции будут предоставлены Microsoft. Поскольку мы не можем построить все, особенно не такими темпами, с которыми развиваются другие экосистемы OSS, набор надежных библиотек для .NET должен вырасти за пределы только Microsoft ».

Если вы программировали на .NET, вы знаете, что это видение противоречит нынешней культуре. Сегодня большинство разработчиков .NET по-прежнему создают свои проекты с использованием компонентов Microsoft и собственного кода без участия сообщества. Они используют технический стек, разработанный Microsoft, а не набор инструментов, который они выбрали сами. Это почти вопрос идентичности.

Сравните это с JavaScript, где даже самый простой проект, вероятно, использует полдюжины библиотек, а различные фреймворки для создания приложений конкурируют и сосуществуют. За этот хаос приходится платить, но есть и огромная выгода. Это потому, что проекты с открытым исходным кодом в экосистеме JavaScript не просто устраняют пробелы, они вызывают энтузиазм, способствуют вовлечению и распространяют опыт разработчиков среди людей, которые принимают участие (и людей, которые следят за их работой). Это кардинально отличается от экосистемы .NET, где каждый проект с открытым исходным кодом - без исключения - упорно борется за то, чтобы его заметили.

Вопрос доверия

Когда Microsoft формулирует проблему, они часто описывают ее как проблему доверия, например: «Как заставить людей доверять сторонним продуктам?» В этом вопросе есть доля истины. Но за этим скрывается и настоящая проблема. Доверие разработчиков - это не только и даже не в первую очередь - вопрос качества. Большинство разработчиков .NET не избегают сторонних решений, потому что их качество неизвестно. Они опасаются, что продукт, который сегодня кажется инновационным расширением экосистемы .NET, устареет завтра, когда Microsoft задаст новое предпочтительное направление. Сочетание жесткого контроля со стороны Microsoft и репутации неожиданных поворотов - даже в отношении их собственных продуктов - побуждает не склонных к риску бизнес-разработчиков становиться еще более консервативными.

Самая большая опасность для любого создателя или последователя OSS заключается в том, что Microsoft внезапно представит собственное решение той же проблемы. Пол Стовелл, основатель Octopus Deploy, хорошо выразился:

«Если Microsoft хочет создать базу данных документов, платформу обмена сообщениями, платформу модульного тестирования или инструмент автоматизации развертывания, она должна быть в 10 раз меньше, прежде чем разговор сразу перейдет в« Почему мы должны использовать вас, а не Microsoft? » «Microsoft становится вариантом по умолчанию, даже если они в игру вступают последними».

Вопрос не теоретический. Во время выставки Build Стовеллу задали вопрос: Почему вы, а не Microsoft?. Дело в том, что конкурирующий продукт Microsoft был анонсирован всего за несколько минут до этого. Другой вариант той же проблемы возник с AppGet, за которым Microsoft ухаживала, а затем уничтожила своим собственным официальным конкурентом.

Даже если у Microsoft нет конкурента, одной возможности, что они могут, достаточно, чтобы парализовать разработчиков. Рассмотрим ситуацию с .NET MAUI, проектом Microsoft по унификации полнофункциональных настольных и мобильных приложений. Релиз, по крайней мере, через год, но он все еще заставляет задуматься всех, кто желает рассмотреть Uno Platform, решение OSS для той же проблемной области, которое доступно сегодня.

Даже официально продвигаемые решения сталкиваются с тяжелым климатом. Рассмотрим очень заметный и широко разрекламированный проект Xamarin, который изо всех сил пытался расти, пока не был приобретен Microsoft, что сделало его официальной частью стека .NET. Microsoft не может овладеть всей экосистемой. Но даже если бы это было возможно, мир только для Microsoft - это ограниченный мир. И решение, созданное Microsoft, не просто убивает продукт при замене, оно также подрывает мотивацию потенциальных создателей OSS. Они знают, что просто не стоит тратить свое время на среду, которую они не могут контролировать или полностью знать. Доброжелательный диктатор по-прежнему остается диктатором, который в любой момент может обернуться против вас.

Это настоящий разрыв доверия. Это не между разработчиками .NET и программным обеспечением с открытым исходным кодом, а между сообществом и Microsoft. И это подпитывает опасный цикл. Меньшая уверенность означает меньшее количество людей, желающих создавать и внедрять решения OSS, что означает, что эти проекты развиваются медленно (если вообще развиваются) и все больше отстают - или просто исчезают из сообщества.

Не выбирайте победителей и проигравших

Хорошая новость в том, что Microsoft осознает проблему. Они сформировали рабочую группу для обсуждения проблем развития экосистемы .NET. Они опубликовали влиятельный технический документ, в котором говорится: Нам необходимо нормализовать практику, согласно которой разработчики приложений могут полагаться на библиотеки, которые не контролируются Microsoft.

Но Microsoft отбрасывает длинную тень. Насколько тщательно они могут управлять своей экосистемой, не владея ею, а затем задыхаясь? В прошлом Microsoft баловалась такими идеями, как одобрение и признание на официальной лестнице зрелости .NET. Предполагается, что это гарантия качества, способствующая укреплению доверия, но эффект часто оказывается совсем другим, отодвигая на второй план небольшие стартап-проекты, которые не могут привлечь внимание.

Лучшее вмешательство Microsoft - поддержать создателей библиотек, а не выбирать победителей и проигравших. Им следует предложить лучшую поддержку разработчикам OSS, сотрудничать с ними по документации, направлять их по вопросам качества и защищать их в сообществе разработчиков. Они могут дать разработчикам больше информации о своих долгосрочных планах развития. Они могли спонсировать сотрудников для поддержки популярных сторонних библиотек. Им нужно не делать проекты успешными, а давать возможность стороннему успеху.

В конце концов, проекты сообщества вызывают энтузиазм по поводу платформы, и без энтузиазма экосистема разработчиков не сможет оставаться здоровой. Сегодняшние продукты Microsoft могут не нуждаться в программном обеспечении с открытым исходным кодом. Но Microsoft нуждается в разработчиках OSS, чтобы вырасти в будущее.

Чтобы получать больше новостей о .NET, почему бы не подписаться на ежемесячную рассылку Young Coder?