Что такое программное обеспечение с открытым кодом?

Завершено

Программное обеспечение с открытым исходным кодом — это программное обеспечение , исходное код которого предоставляется общедоступным для всех пользователей для проверки, изменения и распространения. Инициатива с открытым исходным кодом предоставляет широко принятое определение:

"Программное обеспечение с открытым исходным кодом — это программное обеспечение с исходным кодом, которое любой пользователь может проверять, изменять и улучшать. Владелец авторских прав предоставляет пользователям права на изучение, изменение и распространение программного обеспечения всем пользователям и в любом случае в соответствии с условиями лицензии с открытым исходным кодом".

Это определение подчеркивает несколько ключевых принципов:

  • Доступность исходного кода: Полный исходный код должен быть общедоступен, а не только исполняемые двоичные файлы.
  • Свобода изменения: Пользователи могут изменить программное обеспечение в соответствии с потребностями, исправить ошибки или добавить функции.
  • Права распространения: Пользователи могут совместно использовать программное обеспечение с другими пользователями в исходной или измененной форме.
  • Условия лицензии: Права на использование определяются лицензией с открытым кодом, указывающей разрешения, ограничения и обязательства.

Программное обеспечение с открытым исходным кодом существенно отличается от закрытого программного обеспечения, где исходный код остается секретным, и права на использование жестко контролируются владельцем авторских прав.

Коллаборативная модель с открытым исходным кодом

Разработка с открытым кодом включает совместное создание программного обеспечения с несколькими участниками:

Сообщество-ориентированная разработка

  • Распределенные участники: Разработчики по всему миру вносят свой код, документацию, тестирование и поддержку.
  • Добровольное участие: Многие участники участвуют добровольно, мотивированы решением проблем, обучением, созданием репутации или вспомогательными инструментами, которые они используют.
  • Меритократия: Влияние в проектах обычно коррелирует с качеством и количеством вкладов, а не организационной иерархией.
  • Прозрачные процессы: Разработка происходит в общедоступных репозиториях, где любой пользователь может наблюдать за обсуждениями, решениями и изменениями.

Рабочие процессы совместной работы

  • Общедоступные репозитории: Код размещается на таких платформах, как 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.

Языки и среды выполнения: 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) поддерживают открытый исходный код широко, корпорация Майкрософт должна соответствовать или превышать свои возможности с открытым исходным кодом.

Почему организации выбирают открытый исходный код

Организации выбирают программное обеспечение с открытым исходным кодом по нескольким причинам:

Рекомендации по затратам: Устранение платы за лицензирование снижает прямые затраты, особенно важно при развертывании программного обеспечения в масштабе или создании продуктов, где затраты на лицензирование будут переданы клиентам.

Гибкость и контроль: Доступ к исходному коду означает, что организации могут изменять программное обеспечение в соответствии с конкретными потребностями, устранять критические ошибки независимо и не блокироваться на временной шкале поставщика для функций или исправлений.

Прозрачность и безопасность: Общедоступный исходный код позволяет проводить аудиты безопасности, обзор сообществом помогает быстрее идентифицировать уязвимости, а отсутствие скрытых лазеек и скрытого сбора данных обеспечивает уверенность.

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

Поддержка сообщества: Активные сообщества с открытым кодом предоставляют форумы, документацию, учебники и одноранговую помощь, часто конкурирующие или превышающие качество коммерческой поддержки.

Инновации и функции: Передовые технологии часто появляются в открытом исходном коде, и организации могут способствовать функциям, которые им нужны, а не ожидать планов поставщиков.

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