В этом руководстве комплексно рассматриваются все базовые вопросы, касающиеся наиболее обширной, перспективной и динамичной на сегодняшний день области создания программного обеспечения. В разделе "Open Source" на сайте IBM developerWorks вы найдете руководства, программное обеспечение и новости о проектах, которые помогут вам использовать открытые технологии при работе с продуктами IBM® и для создания собственного программного обеспечения.


Что такое "технологии с открытым исходным кодом"?

Если кратко, то открытость программного обеспечения означает коллективную работу над проектом по его созданию, в которой может принять участие любой желающий. IBM внесла колоссальный вклад в развитие свободного ПО, приняв участие в более чем 120 проектах и, в частности, затратив более миллиарда долларов на поддержку развития Linux®. Организация по продвижению свободного ПО (Open Source Initiative - OSI) дала следующее определение открытым технологиям: "открытый подход к созданию программного обеспечения направлен на повышение его качества и надежности за счет независимой экспертизы и быстрой эволюции исходного кода продукта. Для получения сертификата OSI программное обеспечение должно выпускаться под лицензией, гарантирующей права на свободное использование, повторное распространение и модификацию".

Термин "open source" также может использоваться применительно к отдельным людям, организациям и компаниям, активно использующим свободное программное обеспечение. Согласно определению OSI, свободное ПО характеризуется 10 признаками, которые перечислены ниже. Открытость приложений отнюдь не ограничивается свободным доступом к исходному коду. Программное обеспечение должно распространяться в соответствии со следующими правилами.

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

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

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

4. Целостность исходного кода автора
Лицензия может ограничивать распространение модифицированной версии исходного кода только в том случае, если она разрешает распространение так называемых "файлов исправлений" (patch files), благодаря которым можно изменять исходное приложение до компиляции. При этом в лицензии должно быть явным образом оговорена допустимость распространения приложения, собранного из исходного кода. В лицензии может присутствовать условие, по которому производным продуктам должно быть присвоено имя или номер версии, отличные от исходного продукта.

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

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

7. Распространение лицензии
Права на использование приложения должны относиться ко всем пользователям при повторном распространении ПО. Вторичные пользователи не должны быть ограничены дополнительными лицензионными соглашениями.

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

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

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


В чем важность свободного программного обеспечения?

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

Существуют как сугубо практические, так и философские аргументы в пользу развития свободного программного обеспечения.

  1. Открытые приложения позволяют разработчикам анализировать исходный код, находить возможности для его совершенствования и использовать его в собственных продуктах. Пользователи по всему миру могут вносить свой вклад в развитие различными способами, от программирования до написания и перевода документации, а также отчетов об ошибках. Свободный обмен идеями является движущей силой инноваций.
  2. Согласно манифесту GNU (EN), люди имеют моральное право на доступ к удобочитаемому представлению компьютерных программ.

Что такое FOSS?

Аббревиатура FOSS означает "Free and Open Source Software" (свободное и открытое программное обеспечение). Этот термин используется применительно к программному обеспечению, которое является свободным(EN) или открытым(EN) в соответствии с определениями FSF, если не требуется явно разделять эти понятия.


Бесплатное или свободное?

Термин "свободный" имеет два значения: "независимый" и "бесплатный". Произнося речи с импровизированной трибуны, сторонникам свободного ПО часто приходится явно пояснять, имеют они в виду, что ПО можно использовать и распространять свободно, либо что его можно получить бесплатно. При этом любой студент знает, что все продукты имеют себестоимость, т.е. кто-то затратил определенные средства на их производство, даже если их можно получить и использовать бесплатно.


Как приступить к созданию свободного программного обеспечения?

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

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


Что такое LAMP?

Аббревиатура LAMP образована от первых букв слов Linux, Apache, MySQL и PHP. Как правило, считается, что "Р" означает PHP, но в зависимости от аудитории его можно заменить на Perl или Python. Однако у LAMP есть и более широкий смысл. Этот термин означает независимый и гибкий подход к созданию серверного приложения. При этом каждый из продуктов, чьи названия образуют эту аббревиатуру, можно заменить на альтернативное решение, более подходящее для конкретной ситуации. Все компоненты можно обновлять независимо друг от друга, хотя это, как правило, требует аккуратности и тщательного планирования. Основное преимущество подхода заключается в том, что все компоненты являются свободными (или почти свободными) в обоих смыслах этого слова.


На каких языках разрабатывается свободное программное обеспечение?

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


Легально ли свободное программное обеспечение?

Да. Более того, практически все, кто пользуется электронной почтой или работает в Web, являются пользователями свободного ПО. Большая часть электронных писем пересылается через Интернет-серверы со свободным ПО. Большинство Web-серверов работают под управлением свободного ПО. Подобное ПО лежит в основе деятельности Google. Согласно OSI, фактически все основные компоненты Интернета, включая почтовые системы, серверы Web и FTP, реализованы на основе свободного ПО.

При этом важно отличать свободные приложения от нелицензионного ПО (warez), которое распространяется без согласия владельцев и без лицензии.


Какие проекты по создания свободного программного обеспечения ведутся в IBM?

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


Есть ли у IBM собственная лицензия для выпуска свободного программного обеспечения?

Да, это Common Public License (общая открытая лицензия). Более подробную информацию об этой лицензии можно найти на странице часто задаваемых вопросов о CPL (EN).