VS Code – это в основном редактор кода с открытым исходным кодом, с проприетарной посыпкой сверху и проприетарным рынком расширений. Это немного беспородная порода программного обеспечения. VS Codium – это альтернатива с открытым исходным кодом, основанная на той же кодовой базе.
Но это еще не все! Это требует некоторого распаковывания! Прежде чем мы погрузимся в специфику, вероятно, стоит понять, почему огромная коммерческая компания отдает высококачественный продукт бесплатно!
Почему VS Code бесплатен?
На этот вопрос не так просто ответить, и я здесь спекулирую, но…
Для репутации Microsoft полезно, чтобы ее считали игроком на рынке open-source. В былые времена Microsoft была ярым противником open-source. В 2001 году генеральный директор Microsoft Стив Балмер знаменито назвал Linux “раковой опухолью, которая прикрепляется в смысле интеллектуальной собственности ко всему, к чему прикасается”. В 2020 году Брэд Смит, президент Microsoft, признал: “Microsoft была не на той стороне истории, когда в начале века взорвался open source, и я могу сказать это о себе лично”.
Теперь, когда их операционная система перестала быть дойной коровой, которой она когда-то была, им пришлось менять направление деятельности. Их бизнес облачных вычислений и предложения, связанные с разработчиками, составляют все большую часть их баланса. Теперь разработчики, вероятно, более влиятельны в приобретении их цифровых продуктов и услуг, чем раньше. И в более общем смысле, поскольку добрая воля является фактической статьей баланса компании, хорошо, когда стоимость бизнеса оценивается более высоко.
VS Code создан как облегченный редактор, основная функциональность направлена на фронт-энд разработку. Они получают добровольные взносы от сообщества для поддержания и расширения этих функций. Что еще более важно, сообщество создает большинство функций для других языков и неосновных функций с помощью расширений. Бесплатный труд? Да, пожалуйста.
Недавно VS Code был выпущен как новый онлайн-продукт, vscode.dev, редактор кода в браузере. Как говорится в сообщении в блоге VS Code:
Появление VS Code в браузере – это реализация первоначального видения продукта. Это также начало совершенно нового. Эфемерный редактор, доступный каждому, у кого есть браузер и подключение к Интернету, – это основа будущего, в котором мы действительно сможем редактировать что угодно и где угодно.
GitHub (принадлежащий Microsoft) запустил платный продукт под названием Codespaces, который использует VS Code в виртуальных машинах (VM). Он был запущен в августе 2021 года и в настоящее время доступен только для клиентов GitHub Teams и GitHub Enterprise Cloud. Полная информация о ценах доступна в их документации. Цена выглядит достаточно скромной, но я уверен, что они уже начинают зарабатывать на этом деньги.
Поскольку часть программного обеспечения, связанного с VS Code, является запатентованной, в будущем Microsoft может использовать коммерческие возможности. Она, конечно, не отменила Visual Studio как платный продукт, Visual Studio доступна в различных редакциях и является частью предложения по подписке. Возможно, именно поэтому расширения C# и C++ для VS Code имеют ограничительные лицензии.
Я полагаю, если есть тесная интеграция VS Code с другими продуктами Microsoft, это можно преподнести как особенность, чтобы привлечь людей. Вы можете увидеть эту интеграцию с GitHub сейчас, если нажмете кнопку . на любой странице репозитория, откроется веб-редактор VS Code.
До того, как GitHub был приобретен Microsoft, он также создал свой собственный редактор кода с открытым исходным кодом, Atom. Atom до сих пор активно поддерживается. Это просто показывает, как они использовали похожие стратегии в долгосрочной перспективе. Я полагаю, что философия заключается в том, чтобы делать инструменты для разработчиков и создавать “экосистему”, чтобы продавать что-то дополнительно.
Телеметрия от VS Code дает Microsoft представление о тенденциях и помогает в разработке продуктов. Для них это своего рода маркетинговый инструмент для сбора полевых исследований. Телеметрия работает по модели opt-out, поэтому она достаточно важна для них, чтобы при установке приложения вы получали уведомление. Как я уже говорил в предыдущей статье о телеметрии в VS Code, продукт лицензирован и разработан таким образом, что вы не можете избежать сбора всех данных.
В любом случае, это мои предположения.
Поскольку якобы это в значительной степени соответствует тому, что хотят разработчики – отличный (в основном) редактор кода с открытым исходным кодом по цене ноль центов, многие довольны VS Code.
Обзор и сравнение проектов
Большая часть кода редактора Visual Studio Code доступна в репозитории GitHub (microsoft/ vscode) под лицензией MIT. Microsoft называет его репозиторием “Code - OSS
“. Существует процесс сборки, который берет код из этого репозитория и создает специализированный продукт, который является фактическим программным обеспечением, которое вы устанавливаете и используете.
Код VS | VS Код | |
---|---|---|
Организация | Microsoft | VSCodium |
Лицензия репозитория | MIT | MIT |
Лицензия на продукт | Лицензия на продукты Microsoft | MIT |
Процесс сборки | У Microsoft есть пользовательская сборка, которая клонирует репозиторий “Code - OSS ” и добавляет некоторые настройки Microsoft для создания конечного продукта с другой лицензией. |
VSCodium клонирует репозиторий Microsoft “Code - OSS ” и добавляет некоторые настройки сообщества для создания конечного продукта. |
Marketplace (реестр) | Microsoft Visual Studio Code Marketplace. Код маркетплейса является проприетарный. Условия использования гласят, что расширения в marketplace могут использоваться только с продуктами Microsoft. | Открытый реестр VSX. Код торговой площадки является открытым (Eclipse Public License 2.0). Ограничений на использование расширений нет. |
Проприетарные расширения | Вы можете использовать все расширения Microsoft. | Некоторые из расширений Microsoft ограничены. Некоторые из них заблокированы для запуска вне VS Code. |
Телеметрия (обмен данными) | Включена по умолчанию. | Отключена по умолчанию. |
Давайте рассмотрим эти аспекты по очереди.
Организация
Microsoft – это большая компания по производству программного обеспечения. Пусть вас не вводит в заблуждение название.
VSCodium – это люди с открытым исходным кодом (я полагаю).
Лицензирование
Исходный код VS Code и VS Codium распространяется по лицензии MIT.
Собранное приложение VS Code находится под лицензией Microsoft, в то время как VS Codium – под лицензией MIT.
Процесс сборки
Согласно этому комментарию от сопровождающего Visual Studio Code:
Когда мы [Microsoft] собираем Visual Studio Code, мы делаем именно это. Мы клонируем репозиторий vscode, создаем пользовательский product.json с функциональностью, специфичной для Microsoft (телеметрия, галерея, логотип и т.д.), а затем создаем сборку, которую выпускаем под нашей лицензией.
Когда вы клонируете и собираете сборку из репозитория vscode, ни одна из этих конечных точек не настроена в стандартном product.json. Поэтому вы создаете “чистую” сборку без настроек Microsoft, которая по умолчанию лицензирована по лицензии MIT.
Процесс сборки Microsoft также загружает дополнительные файлы. Об этом говорилось в Microsoft/vscode#141340 и Microsoft/vscode#45978. Вот пакеты, загружаемые во время сборки:
- Расширения из Microsoft Marketplace:
- ms-vscode.references-view
- ms-vscode.js-debug-companion
- ms-vscode.js-debug
- ms-vscode.vscode-js-profile-table
- Из релизов Electron:
- electron
- ffmpeg
VS Codium был создан для того, чтобы избавить вас от необходимости самостоятельно скачивать и собирать из исходных текстов, а также добавить некоторые возможности для настройки сообществом. Полученные двоичные файлы добавляются в раздел релизов репозитория vscodium.
Marketplace (реестр)
VS Code настроен на использование Microsoft VS Code Marketplace. Условия его использования ограничивают доступ только к продуктам Microsoft и GitHub. Ряд ключевых расширений Microsoft разрешено использовать только с продуктами Microsoft, юридическая формулировка этого следующая из раздела 1b:
Предложения Marketplace предназначены для использования только с продуктами и услугами In-Scope, и вы можете устанавливать и использовать Предложения Marketplace только с продуктами и услугами In-Scope.
Код торговой площадки является собственностью компании. В результате исходный код нельзя использовать повторно для создания внутреннего реестра расширений для разработчиков или для внесения новых функций и усовершенствований в торговую площадку.
Меня раздражает такое название: зачем называть это местом продажи, если нельзя ничего продать!
Хотя нет никаких признаков того, что это произойдет, ничто не мешает Microsoft изменить условия и положения в будущем. Это оставляет дверь открытой для них, если они захотят сделать что-то коммерческое.
Чтобы опубликовать расширение на рынке, необходимо выполнить некоторые действия. Вы должны иметь учетную запись Microsoft/Azure и выполнить несколько странных шагов.
VS Codium настроен на использование реестра Open VSX Registry. Этот реестр разработан и поддерживается в рамках проекта Eclipse Open VSX. Он нейтрален к поставщикам, поэтому его можно использовать с любой технологией или инструментом. Примерами являются: VSCodium, Eclipse Theia, Eclipse Che, Gitpod, Coder и SAP Business Application Studio.
Код является полностью открытым. Таким образом, любой желающий может создать свой собственный реестр и использовать его в частном порядке. В результате вы можете сохранять точный контроль над доступностью вашего расширения. Это очень похоже на обычную практику, применяемую в других экосистемах, таких как npm, Cargo и Maven.
Поскольку рынок Microsoft VS Code Marketplace более развит и имеет больше пользователей, вы, скорее всего, пропустите некоторые расширения, доступные там. У вас есть следующие варианты получения недостающих расширений:
- Попросить сопровождающих расширений опубликовать их на open-vsx.org в дополнение к VS Code Marketplace. Процесс публикации задокументирован в Open VSX Wiki.
- Создайте запрос тяги к этому репозиторию, чтобы учетная запись службы @open-vsx опубликовала расширения для вас. Похоже, что они выполняют пакетное задание, чтобы поддерживать их в актуальном состоянии.
- Скачайте и установите файлы vsix самостоятельно.
Для публикации в Open VSX marketplace требуется меньше требований и шагов, чем для установки Microsoft.
Оба рынка предлагают инструменты CLI для публикации и управления вашими расширениями, vsce для VS Code и ovsx для Open VSX. Они довольно похожи.
Я написал несколько расширений и использую действие publish-vscode-extension
GitHub для публикации своих расширений на обоих рынках.
Проприетарные расширения
Некоторые расширения VS Code имеют лицензии, которые ограничивают их использование официальными сборками Visual Studio Code. Если вы проигнорируете лицензии и попытаетесь запустить их в VS Codium, некоторые расширения не будут работать, потому что существует внутренняя проверка, запрещающая их запуск вне VS Code.
Вот список некоторых расширений с ограниченными лицензиями/использованием:
- Язык C# (на базе OmniSharp): Официальная поддержка языка C#. Расширение подпадает под действие этой ограничительной лицензии, так как использует проприетарный отладчик Microsoft. Исходный код доступен по лицензии MIT. См. этот комментарий в репозитории расширения C# для обсуждения этого вопроса. Существует альтернативная версия расширения C# в реестре Open VSX Registry, которая использует отладчик Samsung с лицензией MIT.
- Язык C++: Официальная поддержка языка C++. Расширение подчиняется этой ограничительной лицензии. Вы можете посмотреть этот комментарий в репозитории расширения для разъяснения этого.
- Live Share: Совместное редактирование и отладка с другими пользователями в режиме реального времени в вашем редакторе. На расширение распространяется данная ограничительная лицензия (использование только с продуктами семейства Microsoft Visual Studio).
- Расширения для удаленной разработки: Позволяет открывать любую папку в контейнере, на удаленной машине или в подсистеме Windows для Linux (WSL). Пакет расширений Remote Development соответствует этой ограничительной лицензии и содержит следующие расширения:
- Remote – SSH – работа с исходным кодом в любом месте путем открытия папок на удаленной машине/VM с помощью SSH.
- Remote – Containers – Работайте с отдельным инструментарием или приложением на основе контейнера, открывая любую папку, установленную в контейнере или внутри него.
- Удаленный – WSL – Получите опыт разработки под Linux, не выходя из Windows, открыв любую папку в подсистеме Windows для Linux.
Есть и другие – вот список расширений Microsoft с их лицензиями.
Телеметрия (обмен данными)
Как заявляет Microsoft в своей документации по телеметрии:
Visual Studio Code собирает телеметрические данные, которые используются для понимания того, как улучшить продукт. Например, эти данные об использовании помогают отлаживать проблемы, такие как медленное время запуска, и определять приоритеты новых функций. Хотя мы ценим то понимание, которое дают эти данные, мы также знаем, что не все хотят отправлять данные об использовании, и вы можете отключить телеметрию, как описано в разделе “Отключение телеметрической отчетности”.
Существуют настройки телеметрии, telemetry.telemetryLevel
и telemetry.enableCrashReporter
, которые включены в VS Code по умолчанию. Эти настройки не отключают телеметрию на 100% (как указано в разделе 2.a лицензии).
Когда вы впервые устанавливаете VS Code, появляется диалоговое окно с возможностью отказаться от телеметрии.
По умолчанию VS Codium отключает эти настройки телеметрии, и организация стремится ограничить всю телеметрию.
Расширения не следуют глобальным настройкам. Некоторые расширения Microsoft отправляют телеметрические данные, например, расширение языка C# и расширения из пакета расширений Remote Development. Цитируя Microsoft:
VS Code позволяет добавлять функции в продукт путем установки расширений Microsoft и сторонних производителей. Эти расширения могут собирать собственные данные об использовании и не контролируются параметром telemetry.telemetryLevel. Обратитесь к документации конкретного расширения, чтобы узнать о его телеметрической отчетности и о том, можно ли ее отключить.
Итак, если вы хотите отказаться от телеметрии, то вам нужно обратить внимание и на свои расширения.
Более подробно я обсуждаю эту тему в следующей статье, VS Code – Как быть с телеметрией?
Стоит ли вам переходить с VS Code на VS Codium?
Ответ “Да”, если вы хотите:
- Использовать 100% программное обеспечение с открытым исходным кодом,
- Если вы хотите запустить частный реестр расширений,
- Если вы хотите поддерживать продукт, который по умолчанию минимизирует телеметрические отчеты (обмен данными),
- Или у вас паранойя по поводу того, что Microsoft затеяла какую-то пакость.
В противном случае, я полагаю, ответ будет “Нет”!
Редакторы очень, очень похожи в том, что они делают. Я использовал их бок о бок в течение некоторого времени, и сейчас для меня это одно и то же. Для меня переход прошел без проблем, но я видел, что у некоторых людей возникали некоторые проблемы.
Единственным ограничением VS Codium является отсутствие фирменных расширений на рынке Open VSX, однако для них есть некоторые альтернативы. Похоже, что C# покрыт. Сообщество должно сделать свои собственные версии этих расширений, чтобы все было точно так же.