VSCode 与 OSS 的区别
VSCode 与 OSS 的区别
本文概述了github.com/microsoft/vscodeGitHub 项目(通常称之为Code - OSS)和 Microsoft 的 Visual Studio Code 发行版之间的区别。
Code-OSS 存储库
Code - OSS 存储库是微软开发开源编辑器之处,微软基于此构建了 Visual Studio Code 产品。微软贡献源代码并管理该存储库中的问题,同时维护维基页面,发布 Visual Studio Code 的路线图、每月迭代计划以及产品的最终规划。此存储库中的源代码在标准 MIT 许可证下供所有人使用。
Visual Studio Code
Visual Studio Code 是 Code - OSS 存储库的发行版本,带有微软特定的定制内容,涵盖附加的源代码和扩展,依据传统的微软产品许可证发布。
微软极为谨慎地确保不会有专有代码或资产意外贡献到 Code - OSS 存储库,从而让社区中的任何人都能克隆并自由使用该存储库。
微软的指导原则是一切应开源。若不是开源内容,则必须与 Code - OSS 存储库完全分离,以确保始终能够对存储库进行分叉并构建功能完备的编辑器。
少量非开源的资产和代码通常属于以下类别之一:
- 定义品牌的商标资产(例如徽标和产品名称)
- 依赖于现有专有代码或库的代码
- 与其他专有许可产品(例如 Visual Studio)共享的代码
- 用于或提供对 Microsoft 在数据中心运行的服务的访问的代码(例如,访问 Visual Studio Marketplace)
- 正在进行重大修订的预发布代码,闭源部分在整个产品中仅占很小比例
尽管 Visual Studio Code 并非开源产品,但透明度对项目和社区的健康至关重要。因此,需概述在存储库中所见内容与 Visual Studio Code 发行版内置内容之间的 “最后一公里” 差异。大多数定制通过 product.json 实现,但最终产品中确实包含少量额外的代码和资产。
What | Why | How |
---|---|---|
图标、产品名称(例如“Microsoft Visual Studio Code”)、文档 | 微软商标为客户提供品牌认知,并有助于避免下游实施中的混淆。换句话说,因为微软保护这些品牌,所以当看到带有这些商标的产品时,就知道它是来自微软的产品。 | 静态资源(如图标和桌面图像)包含在发行版中。产品名称和文档 URL 将添加到 product.json 。 |
Visual Studio Marketplace 集成 | Visual Studio Marketplace 是一项面向 Visual Studio 系列产品(适用于 Windows 和 Mac 的 Visual Studio、Visual Studio Code 以及 Azure DevOps,其前身为 Visual Studio Team Services)用户提供的服务。它不仅提供发现和托管服务,还提供评级、评论、问答、发布者验证、病毒扫描、冲突解决服务、Azure DevOps 扩展的支付服务以及对发布者的支持。Visual Studio Marketplace 不是一个旨在支持任何发行版或发行版子集的通用商店。对其的访问受 Marketplace 用户使用条款的约束。 | product.json 包括指向 Visual Studio Marketplace 的 URL。 |
扩展推荐 | 维护了一个经过筛选的 “重要” 和 “一般” 扩展建议列表,这些扩展随后从 Marketplace 安装,因此只将这些包含在发行版中。 | product.json 包含一个扩展 ID 数组。 |
远程开发 | 远程开发扩展的部分内容在依据专有许可证运行的开发人员服务中被使用。虽然这些扩展不需要这些服务也能工作,但由于存在足够的代码复用,所以这些扩展也处于专有许可证之下。虽然大部分代码在扩展中以及在 Code-OSS 存储库中,但在 Visual Studio Code 发行版中有少量的小改动。 | 协商与 Visual Studio Code 服务器连接的部分代码是专有的。 |
启用专有调试适配器、Visual Studio 代码服务器 | 某些 Microsoft 扩展(例如 C#/. NET 调试器)和 Visual Studio Code Server 是根据许可分发的,该许可将其使用限制在 Visual Studio 系列产品(Visual Studio、Visual Studio Code 或 Visual Studio for Mac)中。 | 发行版中包含一个原生节点模块,这个模块允许扩展程序使用一种 “握手” 方式来遵守许可证。通过这种方式确保扩展程序是从 Visual Studio Code 中被使用。 |
使用建议的API的扩展 | 遵循基于提议的 API 的严格 API 流程(扩展 API 流程)。由于提议的 API 经常出现问题,所以我们通常不允许任何使用提议的 API 的扩展发布到 Marketplace 并加载到稳定版本中。然而,我们确实维护了一个小的扩展列表,这些扩展不受此规则限制,因为发布者(通常是微软)已经同意跟踪 API 的变化。 | product.json 包含可以发布到 Marketplace 并使用建议的 API 的扩展 ID 列表。 |
遥测、调查、崩溃报告。 | 微软收集匿名使用统计信息、调查数据和崩溃转储以帮助提高产品质量。不收集任何个人可识别信息。所收集的任何数据,例如崩溃转储,都按照欧盟数据保护法指南(常见问题解答)进行保存。你可以禁用遥测收集,详情请参阅常见问题解答。 | 应用洞察遥测键、曲棍球应用网址、实验网址以及调查概率和网址被存储在 product.json 中,并且是私有的。这样做是为了使其他发行版无法发送遥测数据,同时我们能够保持欧盟数据保护法的合规性。 |
更新服务 | Visual Studio Code 会定期与 Microsoft 托管的一项服务进行检查,以确定是否有需要安装的更新,或者在极其罕见的情况下进行回滚。 | product.json 包含更新服务的URL。 |