- Главная
- /
- Лаборатория научных коммуникаций
- /
- Открытое программное обеспечение
Открытое программное обеспечение
Открытое программное обеспечение (свободное программное обеспечение, Open Source, СПО) — программное обеспечение, распространяемое на условиях свободного лицензионного договора, на основании которого пользователь получает право использовать программу в любых, не запрещенных законом целях; получать доступ к исходным текстам (кодам) программы как в целях её изучения и адаптации, так и в целях переработки, распространять программу (бесплатно или за плату, по своему усмотрению), вносить изменения в программу (перерабатывать) и распространять экземпляры изменённой (переработанной) программы с учетом возможных требований наследования лицензии.
Open Source Initiative (OSI) это калифорнийская публичная корпорация, основанная в 1998 году и управляющая проектом Open Source Definition (OSD), а также общественная организация, которая рецензирует и утверждает лицензии OSD. OSI активно участвует в построении сообщества Open Source и обучении. Члены совета OSI часто путешествуют по миру чтобы посетить Open Source конференции и события, встретиться с разработчиками и пользователями, и чтобы обсудить с органами исполнительной власти публичные или приватные вопросы о том, как открытые технологии, лицензии и модели разработки могут обеспечить экономические и стратегические преимущества.
OSI дала следующее определение открытым технологиям: «открытый подход к созданию программного обеспечения направлен на повышение его качества и надежности за счет независимой экспертизы и быстрой эволюции исходного кода продукта. Для получения сертификата OSI программное обеспечение должно выпускаться под лицензией, гарантирующей права на свободное использование, повторное распространение и модификацию».
Программное обеспечение с открытым исходным кодом производится многими людьми и распространяется под OSD-совместимой лицензией, которая предоставляет все права на использование, изучение, изменение и распространение программного обеспечения в измененном и неизмененном виде. Свобода программного обеспечения необходима для разработки сообществом программного обеспечения с открытым исходным кодом.
Термин «open source» также может использоваться применительно к отдельным людям, организациям и компаниям, активно использующим свободное программное обеспечение. Согласно определению OSI, свободное ПО характеризуется 10 признаками, которые перечислены ниже. Открытость приложений отнюдь не ограничивается свободным доступом к исходному коду. Программное обеспечение должно распространяться в соответствии со следующими правилами.
1. Право на повторное распространение
Лицензия не должна ограничивать продажу или свободное распространение ПО в качестве компонента программного комплекса, включающего программы, полученные из разных источников. Она также не может включать требования лицензионных платежей или других отчислений с доходов от подобных продаж.
2. Исходный код
Дистрибутив приложения должен включать его исходный код, причем распространение приложения должно быть разрешено как в виде исходных кодов, так и в скомпилированной форме. Для тех приложений, которые распространяются без исходных кодов, должна быть предоставлена возможность получения оных без существенных затрат, предпочтительно путем бесплатной загрузки из Интернета. Исходный код должен быть предоставлен в таком виде, в котором он бы являлся наиболее подходящим способом модификации приложения. Не допускается распространение преднамеренно запутанного кода, а также промежуточного кода, например, сгенерированного препроцессором или транслятором.
3. Производные продукты
Лицензия должна разрешать внесение изменений и производные продукты, а также их распространение на тех же условиях, что и для изначального продукта.
4. Целостность исходного кода автора
Лицензия может ограничивать распространение модифицированной версии исходного кода только в том случае, если она разрешает распространение так называемых «файлов исправлений» (patch files), благодаря которым можно изменять исходное приложение до компиляции. При этом в лицензии должно быть явным образом оговорена допустимость распространения приложения, собранного из исходного кода. В лицензии может присутствовать условие, по которому производным продуктам должно быть присвоено имя или номер версии, отличные от исходного продукта.
5. Недопустимость дискриминации в отношении пользователей
В лицензии недопустимы условия, дискриминирующие отдельного человека или группы людей.
6. Недопустимость дискриминации в отношении области применения
Лицензия не может ограничивать пользователей в выборе области применения программного обеспечения. Например, она не может включать условия, запрещающие использование ПО для бизнеса или генетических исследований.
7. Распространение лицензии
Права на использование приложения должны относиться ко всем пользователям при повторном распространении ПО. Вторичные пользователи не должны быть ограничены дополнительными лицензионными соглашениями.
8. Лицензия не должна быть специфичной для конкретного продукта
Права на использование приложения не должны зависеть от того, является оно частью определенного программного пакета или нет. Если приложение используется или распространяется повторно в отдельности от остальных компонентов пакета, его пользователи должны обладать теми же правами, что и пользователи всего изначального программного пакета.
9. Лицензия не должна ограничивать использование других продуктов
В лицензии недопустимы ограничения на использование других продуктов, распространяемых совместно с лицензируемым программным обеспечением. Например, лицензия не может требовать, чтобы другие приложения, которые распространяются на том же носителе, также являлись свободным программным обеспечением.
10. Нейтральность по отношению к технологиям
Никакие условия лицензии не должны быть обусловлены использованием той или иной технологии, стиля или интерфейса.
Открытые приложения позволяют разработчикам анализировать исходный код, находить возможности для его совершенствования и использовать его в собственных продуктах. Пользователи по всему миру могут вносить свой вклад в развитие различными способами, от программирования до написания и перевода документации, а также отчетов об ошибках. Свободный обмен идеями является движущей силой инноваций.
На базе открытого программного обеспечения развиваются многие сегменты открытой науки: архивы и репозитории научных публикаций (DSpace, E-prints), электронные журналы (OJS), открытые образовательные ресурсы (Moodle) и другие.
GitHub — это популярный инструмент, который позволяет контролировать версии программного обеспечения: управлять и отслеживать все изменения в определенной его части. Такие службы, как GitHub, GitLab, Bitbucket и другие, предоставляют интерфейс для инструментария, а также службы удаленного хранения, которые можно использовать для поддержки, совместного использования и совместной работы над открытым программным обеспечением.
Наличие исследовательского программного обеспечения на GitHub — это только одна часть процесса; также важно иметь опубликованный и постоянный идентификатор, связанный с ним, такой как DOI. Есть несколько способов связать DOI с репозиторием GitHub: проще всего использовать Zenodo (бесплатный открытый открытый репозиторий, созданный OpenAIRE и CERN), хотя существуют другие репозитории для архивирования программного обеспечения и получения DOI, такие как Figshare. Zenodo интегрируется с GitHub для архивирования программного обеспечения и предоставления DOI, когда разработчики делают официальный релиз на GitHub.
Отсутствующие или недоступные зависимости или недостаточное документирование вычислительной среды являются очень распространенными барьерами для повторного использования и воспроизводимости. Один из подходов к преодолению этих барьеров — это использование кода в вычислительной среде с использованием контейнерных технологий. Контейнеры упаковывают код с зависимостями и вычислительной средой, чтобы другие могли легче выполнять анализ. Примеры реализации контейнеров в исследованиях включают такие платформы, как Docker, Binder и Code Ocean.
Общедоступные API
API (application programming interface) — это инструмент для обмена контентом и данными между программными приложениями. API-интерфейсы используются в различных контекстах, например, для встраивания контента с одного веб-сайта в другой, динамической публикации контента из одного приложения для отображения в другом приложении или извлечения данных из базы данных более структурированным способом, чем позволяет обычный пользовательский интерфейс.
Многие издатели научной литературы, базы данных и другие программные продукты предлагают API-интерфейсы, позволяющие пользователям с навыками программирования более эффективно извлекать данные для различных исследовательских целей. С помощью API пользователи могут создавать программируемый поиск в базах данных цитирования, извлекать статистические данные или динамически запрашивать и публиковать содержимое блога.
Примеры ресурсов, которые делают свои API доступными для использования: