Shared Source¶
Shared Source — это инициатива корпорации Microsoft, в рамках которой предоставляется доступ к исходному коду программного обеспечения для ознакомления, изучения и, в определённых случаях, модификации, но без соблюдения всех критериев, присущих открытому программному обеспечению (Open Source) и свободному программному обеспечению (Free Software). Термин «Shared Source» (с англ. — «совместный исходный код») описывает набор лицензий и программ, которые занимают промежуточное положение между проприетарным (закрытым) и полностью открытым кодом.
¶История
Инициатива Microsoft Shared Source была официально анонсирована 3 мая 2001 года. Её появление было связано с несколькими факторами:
- Рост популярности Open Source: К концу 1990-х годов движение за открытое программное обеспечение, в частности операционная система Linux, набрало значительную силу. Microsoft, чья бизнес-модель традиционно основывалась на продаже лицензий на проприетарное ПО, столкнулась с необходимостью реагировать на этот вызов.
- Критика закрытости: Разработчики, особенно в академической среде и в сфере корпоративных решений, критиковали Microsoft за непрозрачность и невозможность аудита кода для выявления уязвимостей или понимания работы системы.
- Потребности крупных клиентов: Крупные корпоративные и государственные заказчики требовали доступа к исходному коду для обеспечения безопасности и соответствия внутренним стандартам.
Первоначально программа была ограничена. В 2001 году доступ к исходному коду получили представители правительств некоторых стран (в рамках программы Government Security Program, GSP) и крупные корпоративные партнёры. В 2002 году была запущена программа Shared Source CLI (Common Language Infrastructure), которая позволила разработчикам изучать и портировать реализацию .NET Framework. В 2004 году Microsoft выпустила первую версию лицензии Microsoft Permissive License (Ms-PL), которая была признана Open Source Initiative (OSI) как соответствующая определению открытого ПО. Однако большинство продуктов, распространяемых по лицензиям Shared Source, не являются открытыми в полном смысле этого слова.
¶Отличия от Open Source и Free Software
Основное различие между Shared Source и классическим открытым/свободным ПО заключается в ограничениях, накладываемых лицензиями. В то время как Open Source Definition (OSD) и Free Software Definition (FSD) требуют, чтобы лицензия гарантировала свободу распространения, модификации и использования в любых целях (включая коммерческие), лицензии Shared Source часто содержат одно или несколько из следующих ограничений:
- Запрет на коммерческое использование: Код можно изучать и модифицировать, но нельзя использовать в коммерческих продуктах.
- Ограничения на распространение: Разрешено распространение только в неизменном виде или только в составе определённых продуктов.
- Запрет на создание производных работ: Модифицировать код можно только для личного использования, но нельзя распространять изменения.
- Географические ограничения: Доступ к коду может быть ограничен для определённых стран (например, в рамках экспортного контроля США).
Таким образом, Shared Source предоставляет доступ к исходному коду, но не предоставляет всех четырёх свобод, определённых Фондом свободного программного обеспечения (FSF): свобода использования, изучения, распространения и улучшения. Это делает Shared Source формой проприетарного ПО с открытым исходным кодом.
¶Основные лицензии Shared Source
Microsoft разработала несколько лицензий, входящих в семейство Shared Source. Наиболее известные из них:
¶Microsoft Public License (Ms-PL)
Это самая свободная лицензия из семейства. Она позволяет распространение и модификацию кода, в том числе в коммерческих целях, при условии сохранения уведомлений об авторских правах. Ms-PL была одобрена OSI и FSF (с некоторыми оговорками). Она не требует, чтобы производные работы распространялись под той же лицензией (не является «копилефт»). Примеры проектов под Ms-PL: библиотеки .NET Micro Framework, ASP.NET MVC.
¶Microsoft Reciprocal License (Ms-RL)
Эта лицензия является «копилефт» на уровне файлов. Она разрешает распространение и модификацию, но требует, чтобы любые изменения в файлах, распространяемых под Ms-RL, также публиковались под Ms-RL. Однако код, который просто использует эти файлы (например, подключается к ним как к библиотеке), может распространяться под любой другой лицензией. Ms-RL также одобрена OSI.
¶Microsoft Limited Public License (Ms-LPL)
Эта лицензия является вариантом Ms-PL, но с ограничением: она действительна только для продуктов, разработанных для платформы Microsoft Windows. Это делает её непереносимой и, следовательно, несовместимой с определением Open Source, которое требует технологической нейтральности.
¶Microsoft Community License (Ms-CL)
Более ограничительная лицензия, которая не была одобрена OSI. Она часто используется для кода, который можно изучать, но нельзя использовать в коммерческих продуктах без отдельного соглашения.
¶Примеры проектов, распространяемых по Shared Source
Многие ключевые технологии Microsoft были выпущены по лицензиям Shared Source, что позволило разработчикам лучше понять их внутреннее устройство:
- Windows Driver Kit (WDK): Исходный код классов драйверов и примеров.
- .NET Framework (частично): До 2014 года значительная часть библиотек классов .NET Framework распространялась по лицензии Ms-RL. В 2014 году Microsoft перешла на полностью открытую лицензию MIT для .NET Core, что стало важным шагом в сторону Open Source.
- ASP.NET MVC: Исходный код был доступен по Ms-PL.
- Windows Calculator: Исходный код классического калькулятора Windows был выпущен под лицензией MIT в 2019 году, но до этого он распространялся по одной из лицензий Shared Source.
- Microsoft Reference Source Code: Специальный сервер (referencesource.microsoft.com), где публиковался исходный код библиотек .NET Framework для отладки и изучения, но без права модификации и распространения.
¶Критика
Инициатива Shared Source с самого начала подвергалась критике со стороны сообщества открытого ПО и защитников свободного программного обеспечения.
- Маркетинговый ход: Критики, в том числе Ричард Столлман (основатель FSF), называли Shared Source попыткой Microsoft «присвоить» термин «открытый код» и создать иллюзию открытости, не жертвуя контролем над своей интеллектуальной собственностью. Термин «Open Source» стал ассоциироваться с доверием, и Microsoft пыталась получить это доверие, не принимая на себя обязательств, налагаемых настоящими открытыми лицензиями.
- Несовместимость с Open Source: Большинство лицензий Shared Source не соответствуют OSD, что означает, что код, распространяемый по ним, не может использоваться в проектах с открытым исходным кодом без нарушения лицензий.
- Ограниченная польза для сообщества: Возможность только «смотреть» на код, но не вносить в него изменения и не распространять их, значительно снижает ценность Shared Source для разработчиков, которые хотят активно участвовать в развитии ПО.
- «Вирусный» эффект Ms-RL: Хотя лицензия Ms-RL является «копилефт» на уровне файлов, её условия могут быть сложны для понимания и соблюдения, что создаёт юридические риски для разработчиков, использующих такой код.
¶Влияние и эволюция
Несмотря на критику, Shared Source сыграла важную роль в изменении политики Microsoft в отношении открытого кода. Она позволила компании начать диалог с сообществом разработчиков и постепенно перейти к более открытым моделям. В 2010-х годах, под руководством генерального директора Сатьи Наделлы, Microsoft кардинально изменила свою стратегию. Компания начала активно вносить вклад в Open Source-проекты, выпустила .NET Core под лицензией MIT, приобрела GitHub (крупнейшую платформу для хостинга кода) и сделала многие свои продукты (Visual Studio Code, PowerShell, TypeScript) полностью открытыми.
Сегодня концепция Shared Source в её первоначальном виде утратила своё значение. Microsoft в основном использует стандартные открытые лицензии (MIT, Apache 2.0, GPL) для новых проектов. Однако наследие Shared Source остаётся в виде некоторых старых продуктов и лицензий, а также как исторический этап в эволюции взаимоотношений между крупными проприетарными вендорами и сообществом открытого ПО.
¶Источники
- Microsoft Shared Source Initiative (архивные материалы Microsoft).
- Определение открытого программного обеспечения (Open Source Initiative).
- Определение свободного программного обеспечения (Free Software Foundation).
- Статьи и комментарии Ричарда Столлмана о Shared Source.
- Публичные заявления и блоги сотрудников Microsoft (2001–2010 гг.).
- Документация по лицензиям Microsoft (Ms-PL, Ms-RL, Ms-LPL).