Что такое программное обеспечение с открытым кодом?
Программное обеспечение с открытым исходным кодом — это программное обеспечение , исходное код которого предоставляется общедоступным для всех пользователей для проверки, изменения и распространения. Инициатива с открытым исходным кодом предоставляет широко принятое определение:
"Программное обеспечение с открытым исходным кодом — это программное обеспечение с исходным кодом, которое любой пользователь может проверять, изменять и улучшать. Владелец авторских прав предоставляет пользователям права на изучение, изменение и распространение программного обеспечения всем пользователям и в любом случае в соответствии с условиями лицензии с открытым исходным кодом".
Это определение подчеркивает несколько ключевых принципов:
- Доступность исходного кода: Полный исходный код должен быть общедоступен, а не только исполняемые двоичные файлы.
- Свобода изменения: Пользователи могут изменить программное обеспечение в соответствии с потребностями, исправить ошибки или добавить функции.
- Права распространения: Пользователи могут совместно использовать программное обеспечение с другими пользователями в исходной или измененной форме.
- Условия лицензии: Права на использование определяются лицензией с открытым кодом, указывающей разрешения, ограничения и обязательства.
Программное обеспечение с открытым исходным кодом существенно отличается от закрытого программного обеспечения, где исходный код остается секретным, и права на использование жестко контролируются владельцем авторских прав.
Коллаборативная модель с открытым исходным кодом
Разработка с открытым кодом включает совместное создание программного обеспечения с несколькими участниками:
Сообщество-ориентированная разработка
- Распределенные участники: Разработчики по всему миру вносят свой код, документацию, тестирование и поддержку.
- Добровольное участие: Многие участники участвуют добровольно, мотивированы решением проблем, обучением, созданием репутации или вспомогательными инструментами, которые они используют.
- Меритократия: Влияние в проектах обычно коррелирует с качеством и количеством вкладов, а не организационной иерархией.
- Прозрачные процессы: Разработка происходит в общедоступных репозиториях, где любой пользователь может наблюдать за обсуждениями, решениями и изменениями.
Рабочие процессы совместной работы
- Общедоступные репозитории: Код размещается на таких платформах, как GitHub, GitLab или Bitbucket, где любой пользователь может просмотреть его.
- Отслеживание проблем: Ошибки и запросы функций отслеживаются публично, позволяя членам сообщества выявлять проблемы и предлагать решения.
- Ревью pull request: Участники отправляют изменения с помощью pull request, которые проверяются мейнтейнерами и другими членами сообщества перед слиянием.
- Управление выпусками: Поддерживающие лица координируют выпуски, обеспечивая стабильность и совместимость, учитывая вклад сообщества.
Модели управления проектами
Различные проекты с открытым кодом применяют различные подходы к управлению:
- Благожелательный диктатор: Один человек (часто основатель) принимает окончательные решения о направлении проекта (например, Python с Guido van Rossum исторически).
- Основная команда: Небольшая группа поддерживающих коллективно принимает решения через консенсус или голосование.
- Управление фондом: Крупные проекты часто создают основы (например, Apache Foundation, Linux Foundation), которые обеспечивают юридическую структуру, ресурсы и платформы управления.
- Корпоративное спонсорство: Многие проекты с открытым кодом в основном поддерживаются сотрудниками компаний, которые зависят от программного обеспечения.
Широкое внедрение программного обеспечения с открытым исходным кодом
Программное обеспечение с открытым кодом стало повсеместным во всех секторах технологий:
Статистика внедрения в отрасли
- Использование предприятия: Более 90% предприятий используют программное обеспечение с открытым исходным кодом в рабочих средах.
- Инфраструктура Интернета: Большинство веб-серверов работают в Linux (с открытым исходным кодом), обслуживают содержимое с помощью Apache или Nginx (с открытым исходным кодом) и используют такие базы данных, как PostgreSQL или MySQL (с открытым кодом).
- Облачные вычисления: Основные облачные платформы широко используют и поддерживают технологии с открытым исходным кодом— Kubernetes, Docker, Terraform и многочисленные другие средства с открытым кодом формируют основу современной облачной инфраструктуры.
- Мобильные устройства: Android, самая популярная в мире мобильная операционная система, основана на ядре Linux и включает обширные компоненты с открытым исходным кодом.
Состав стека технологий
Современные стеки технологий являются преимущественно открытым кодом:
- Операционные системы: Linux обеспечивает облачную инфраструктуру, контейнеры и многие внедренные системы.
- Языки программирования: Python, JavaScript, Java, Go, Rust, Ruby, PHP — наиболее популярные языки являются открытым кодом.
- Баз данных: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch доминируют в развертываниях баз данных.
- Веб-технологии: React, Angular, Vue.js, Express, Django, Rails обеспечивают разработку веб-приложений.
- Средства разработки: Git, Docker, Kubernetes, Jenkins, VS Code являются важными средствами разработки с открытым кодом.
Поддержка Майкрософт открытого кода
Корпорация Майкрософт демонстрирует преобразование в корпоративном отношении к программному обеспечению с открытым кодом:
Исторический сдвиг
Корпорация Майкрософт исторически рассматривала открытый исходный код как угрозу своей собственной бизнес-модели программного обеспечения. Это резко изменилось за последнее десятилетие, поскольку компания признала стратегическое значение открытого источника.
Открытый исходный код в Azure
Azure широко интегрирует технологии с открытым исходным кодом:
Языки и среды выполнения: Azure поддерживает Python, Node.js, Java, PHP, Ruby, Go и другие языки с открытым кодом в качестве параметров платформы первого класса.
Баз данных: Azure предлагает управляемые службы для PostgreSQL, MySQL, MariaDB и Redis, а также собственные предложения.
Оркестрация контейнеров: Служба Azure Kubernetes (AKS) предоставляет управляемые Kubernetes, платформу оркестрации контейнеров с открытым исходным кодом.
Средства разработки: Azure DevOps интегрируется с Git, Jenkins и другими средствами с открытым кодом, а GitHub (приобретенный корпорацией Майкрософт) является крупнейшей в мире платформой для разработки с открытым кодом.
Данные и аналитика: Azure поддерживает Apache Spark, Hadoop, Kafka и другие технологии больших данных с открытым кодом.
Преобразование .NET
Платформа .NET демонстрирует комплексную приверженность Корпорации Майкрософт к открытому коду:
Open-sourcing .NET: Корпорация Майкрософт выпустила .NET Core (теперь .NET 5+) в качестве открытого исходного кода в соответствии с лицензией MIT, что делает всю платформу свободно доступной с исходным кодом. Среда выполнения .NET, библиотеки, компиляторы и средства являются открытым исходным кодом.
Кроссплатформенная разработка: Открытие исходного кода .NET позволило корпорации Майкрософт обеспечить кроссплатформенную разработку на Windows, Linux и macOS, значительно расширив охват .NET.
Вклад сообщества: Репозитории .NET на GitHub получают тысячи вкладов от разработчиков за пределами Майкрософт, при этом компания активно просматривает и принимает улучшения сообщества.
Зависимости с открытым кодом: приложения ASP.NET Core обычно включают множество компонентов с открытым кодом:
- Библиотеки для фронтенда: jQuery, React, Angular, Vue.js позволяют создавать богатые пользовательские интерфейсы.
- Библиотеки служебных программ: Newtonsoft.Json, Serilog, AutoMapper и бесчисленное число других предоставляют общие функциональные возможности.
- Фреймворки для тестирования: xUnit, NUnit, Moq поддерживают разработку на основе тестов.
Участие в проектах с открытым кодом
Корпорация Майкрософт активно участвует в проектах с открытым исходным кодом, помимо собственных:
Ядро Linux: Корпорация Майкрософт вносит свой вклад в ядро Linux, повышая интеграцию Hyper-V и поддерживая инфраструктуру Azure.
Kubernetes: Корпорация Майкрософт является основным участником Kubernetes, помогая сформировать платформу, которая управляет AKS.
Инициативы с открытым кодом: Корпорация Майкрософт спонсирует события с открытым исходным кодом, финансирует критически важную инфраструктуру с открытым исходным кодом и использует разработчиков для полного работы над проектами с открытым исходным кодом.
Проекты с открытым кодом, созданные корпорацией Майкрософт
Помимо участия в существующих проектах, корпорация Майкрософт создает и значительно повышает уровень программного обеспечения с открытыми источниками:
Visual Studio Code: Наиболее популярным редактором кода является открытый исходный код с расширениями, темами и улучшениями, внесенными глобальным сообществом.
TypeScript: Язык Майкрософт для типобезопасной разработки JavaScript с открытым исходным кодом, который широко используется.
PowerShell Core: Платформа автоматизации Майкрософт — это кроссплатформенный и открытый код.
.NET Foundation: Корпорация Майкрософт создала .NET Foundation для поддержки проектов с открытым исходным кодом в экосистеме .NET, предоставляя ресурсы, управление и поддержку сообщества.
Дополнительные сведения см. на веб-сайте .NET Foundation .
Стратегическое обоснование
Принятие корпорацией Майкрософт открытого кода отражает стратегические бизнес-решения:
Принятие разработчиками: Разработчики предпочитают инструменты и языки с открытым исходным кодом. Поддерживая открытый исходный код, корпорация Майкрософт привлекает разработчиков к своим платформам.
Облачный бизнес: Рабочие нагрузки с открытым исходным кодом управляют внедрением облака. Отличная поддержка с открытым кодом в Azure делает платформу более привлекательной.
Скорость инноваций: Open-source обеспечивает более быстрые инновации с помощью вкладов сообщества, что снижает нагрузку на разработку Майкрософт.
Рост экосистемы: Сообщества с открытым кодом создают ценные расширения, инструменты и знания, повышающие ценность платформы.
Конкурентное позиционирование: Поскольку конкуренты (AWS, Google Cloud) поддерживают открытый исходный код широко, корпорация Майкрософт должна соответствовать или превышать свои возможности с открытым исходным кодом.
Почему организации выбирают открытый исходный код
Организации выбирают программное обеспечение с открытым исходным кодом по нескольким причинам:
Рекомендации по затратам: Устранение платы за лицензирование снижает прямые затраты, особенно важно при развертывании программного обеспечения в масштабе или создании продуктов, где затраты на лицензирование будут переданы клиентам.
Гибкость и контроль: Доступ к исходному коду означает, что организации могут изменять программное обеспечение в соответствии с конкретными потребностями, устранять критические ошибки независимо и не блокироваться на временной шкале поставщика для функций или исправлений.
Прозрачность и безопасность: Общедоступный исходный код позволяет проводить аудиты безопасности, обзор сообществом помогает быстрее идентифицировать уязвимости, а отсутствие скрытых лазеек и скрытого сбора данных обеспечивает уверенность.
Избегайте блокировки поставщика: Программное обеспечение с открытым исходным кодом обычно можно развертывать в любом месте, уменьшая зависимость от конкретных поставщиков и повышая позиции переговоров.
Поддержка сообщества: Активные сообщества с открытым кодом предоставляют форумы, документацию, учебники и одноранговую помощь, часто конкурирующие или превышающие качество коммерческой поддержки.
Инновации и функции: Передовые технологии часто появляются в открытом исходном коде, и организации могут способствовать функциям, которые им нужны, а не ожидать планов поставщиков.
Понимание того, что такое программное обеспечение с открытым исходным кодом и почему оно стало таким широко принятым, предоставляет важный контекст для изучения проблем, которые организации должны решать при реализации компонентов с открытым исходным кодом, которые рассматриваются в следующем уроке.