Рубрика:
Разработка /
Open source
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВИЗИТКА
Алексей Новодворский, заместитель генерального директора «Базальт СПО»
Разработка СПО: мифы и реальность Как и зачем программисты становятся разработчиками свободного софта?
Курс государства на технологическую независимость в сфере ИТ поднял волну интереса к свободному программному обеспечению. К СПО стали обращаться разработчики, которые пришли из мира проприетарного ПО и не имеют опыта создания свободных программ. Люди, посвятившие свободному ПО бо́льшую часть своей жизни, рады притоку энтузиастов в свои ряды. Однако мы видим, что вокруг нового тренда возникло множество мифов, заблуждений, неточных толкований. В этой статье попытаемся развеять некоторые из этих мифов и расскажем, как обстоят дела в действительности
Четко ли вы представляете себе, какое именно программное обеспечение относится к категории свободного? Для того чтобы составить достоверное представление об СПО, прочтите, прежде всего, Манифест GNU, опубликованный в 1985 году Ричардом Столлманом. В нем внятно и образно изложены цели и принципы движения СПО. А затем, для полноты картины – ГОСТ Р 54593-2011 «Информационные технологии. Свободное программное обеспечение. Общие положения», где описан объем прав (свобод), которые может давать лицензионный договор на СПО-продукт.
Если у вас появилась идея создать собственный свободный программный продукт, в одиночку или с командой единомышленников, то на старте будет полезно задаться несколькими вопросами, ответы на которые помогут вам конкретизировать видение целей проекта и способов их достижения.
Ключевые вопросы 1.Какие свободные программные продукты можно взять за основу собственной разработки? 2.Под какой лицензией (лицензиями) вы будете распространять свой программный продукт? Почему выбрана именно эта лицензия? 3.Как найти помощников, которые заинтересуются совместной разработкой и распространением программного продукта? 4.Как распространять продукт? 5.Как обеспечивать его жизненный цикл (модернизировать, улучшать, обеспечивать преемственность версий и т.п.)?
«На плечах гигантов»: сторонние компоненты в вашем программном продукте
В современном мире практически ни одно приложение не разрабатывается «от и до» собственными силами. В той или иной мере все разработчики используют компоненты свободного ПО: достаточно привести в пример таких гигантов как Microsoft, IBM, Google, Яндекс.
Одно дело, когда вы знаете, что коллеги увидят и оценят ваши разработки. И совсем другое, когда вы инкогнито для сообщества создаете код, к которому бизнес предъявляет одно требование: работоспособность. Выдавая «на гора» такой код, вы становитесь крепким благополучным ремесленником, но уменьшаете шансы стать уникальным мастером |
Для начинающих разработчиков эти возможности тоже открыты. Существует множество международных проектов разработки свободного программного обеспечения, плоды труда которых можно применять при создании собственного софта.
Например, компоненты для обеспечения харденинга (безопасности) ПО создают Kernel, Glibc, libssl, GCC и Open Wall Linux (OWL). Контроль цепочек зависимостей на основе RPM обеспечивает Apt RPM. Xcat – управление узлами, используемыми в суперкомпьютерах. Strace – отслеживание системных вызовов между процессом и операционной системой (ядром) и многие другие.
Важно внимательно изучить, какие права будут предоставлены вам лицензионным договором на модификацию исходного программного продукта и распространение производного произведения. Разработчики, которые не уделили должного внимания лицензиям на исходные СПО-компоненты, рискуют получить неприятные сюрпризы, когда захотят коммерциализировать свой программный продукт.
Например, если вы взяли за основу программный продукт под GNU GPL и модифицировали его, то производный продукт обязательно должны будете распространять тоже на условиях GNU GPL – лицензии, которая запрещает закрывать коды после их модификации. Таким образом воплощается принцип «наследования» прав, или «копилефт».
«Все-в-одном»: репозиторий
Крупнейшие проекты разработки свободного программного обеспечения ведут собственные репозитории программных пакетов. Репозиторий может обеспечивать не только хранение, но и сборку пакетов (в том числе доверенную), отслеживание зависимостей между пакетами, поддержку их версионности и т.п. В репозиторий включаются как собственные наработки проекта, так и сторонние СПО-компоненты, которые используются для создания программного продукта.
Репозитории тесно связаны с инфраструктурой разработки ПО. Создавать программные продукты на основе репозитория могут не только его владельцы: как правило, он открыт для всех желающих, которые готовы соблюдать правила работы. Это взаимная выгода: репозиторий получает полезные, качественные разработки, а программисты – возможность пользоваться аккумулированными плодами чужого труда, причем «свежими» и лучшими плодами. Подобные репозитории ведут, например, крупнейшие проекты разработки операционных систем на основе ядра Linux: Red Hat, Debian, SUSE и отечественный репозиторий «Сизиф» (Sisyphus).
Создание и поддержка собственного репозитория требует немалых финансовых затрат и серьезной организационной работы. Поэтому, создавая свой программный продукт, можно воспользоваться уже существующим репозиторием. Это потребует некоторых накладных расходов и соблюдения «правил игры», но взамен вы получите весьма ощутимые бонусы.
Например, разработчикам, работающим с «Сизифом», открыт доступ практически ко всем хранящимся в нем разработкам, к технологиям и сборочным системам. Закрытые разработки, составляющие небольшую долю от общего объема, связаны, как правило, с обеспечением безопасности или обязательствами «Базальт СПО» (держателя репозитория) перед сторонними фирмами.
Существенное преимущество работы с отечественным репозиторием – в том, что вам становятся доступны разработки отечественных программистов, которые не включаются в зарубежные репозитории.
Например, вы можете собрать программу, которая будет работать не только на компьютерах Intel с архитектурой х86, но и на отечественных аппаратных платформах на базе микропроцессоров «Эльбрус», «Байкал», «Мультикор».
Кроме того, вы избавляетесь от необходимости самостоятельно находить сторонние разделяемые библиотеки, необходимые для работы приложения. Актуальность этих библиотек надо постоянно поддерживать, что создает для разработчика дополнительный большой объем работ.
Можно не включать в состав своего продукта сторонние разделяемые библиотеки, а пойти другим путем: вызывать их непосредственно из операционной системы. В дистрибутивах операционных систем семейства «Альт», которые развиваются на основе репозитория «Сизиф», содержится большое количество разделяемых библиотек, версии которых регулярно актуализируются.
Другое преимущество – предсказуемая доверенная сборочная среда. Ни для кого не секрет, что не только зарубежное ПО, но и железо может содержать «закладки», обеспечивающие несанкционированный доступ к информационным ресурсам пользователей. Поэтому важно не только то, на каком оборудовании работает ваш софт, но и то, на каком он собран.
Например, сборка на инфраструктуре «Сизифа» выполняется в «стерильном» окружении: в безопасной виртуальной зоне, которая специально создается для каждого пакета, и по завершении процесса уничтожается.
Перспективно ли быть разработчиком свободного ПО?
Наша страна пока что не лидер в области разработки свободного программного обеспечения. Нам всем памятен достаточно долгий период, когда отечественные программные продукты сравнивали с «Жигулями» и не рассматривали всерьез. Причем не были исключением случаи, когда отторжение отечественного ПО строилось по печально знаменитому принципу «Не читал, но осуждаю». Созданию негативного имиджа отечественного софта немало поспособствовали зарубежные вендоры – международные корпорации, которые располагали внушительными бюджетами и на разработку, и на массированные маркетинговые и PR-кампании.
Сейчас ситуация постепенно начинает поворачиваться «с головы на ноги», события последних лет внушают надежду. В связи с курсом государства на технологическую независимость в сфере ИТ стали развиваться интересные проекты, связанные с СПО, сократился отток из страны сильных программистов. Соответственно, молодые люди получают возможность заниматься интересным делом в сильном профессиональном окружении и получать за свой труд достойное вознаграждение.
В стране создано и развивается довольно много отечественных системных и прикладных решений, которые покрывают основные потребности заказчиков любого масштаба и отраслевой принадлежности. Многие из них создаются на основе свободного ПО.
Фирмы-разработчики заинтересованы в привлечении в штат программистов, знакомых с СПО. Дополнительный импульс этой сфере придали появляющиеся государственные преференции для отечественных фирм-разработчиков – например, преференции на приобретение ПО органами госвласти в ходе открытых конкурсов. Подобные преференции, кстати, уже давно и успешно реализуются в других странах, обеспечивая поддержку местных производителей. Поэтому перспективы для молодых разработчиков, решивших связать свою профессиональную жизнь с СПО, безусловно, есть.
«Покажи мне свой код»!
Присоединиться к проектам разработки свободного программного обеспечения совсем несложно. Единственным «входным билетом» служит написанный вами код.
«Покажи мне свой код!» – это требование, ставшее каноническим в среде СПО, неизменно предъявляет Линус Торвальдс к программистам, желающим присоединиться к проекту разработки ядра Linux.
Когда «Базальт СПО» рассматривает кандидата в штат, нас интересуют не регалии человека, а его код. Кстати, нередко случается, что мы уже заочно знакомы с программистом по его коду. Аналогичную просьбу слышат и программисты, которые хотят, например, поместить свои разработки в репозиторий и распространять их в составе дистрибутивов операционной системы.
Деньги vs имя
Свободный продукт, если он удался разработчику, приносит ему известность и уважение в сообществе СПО. Если вы хотите заработать имя – создавайте открытый код и демонстрируйте его сообществу. Причем не обязательно создавать свой продукт, можно присоединиться к уже существующему СПО-проекту со своей идеей. Со временем имя начнет «работать» на вас: вы будете обнаруживать, что профессионалы, с которыми не были знакомы лично, уже знают вас «по коду», и это сильно облегчит взаимодействие с различными проектами.
Свободный продукт, если он удался разработчику, приносит ему известность и уважение в сообществе СПО. Если вы хотите заработать имя – создавайте открытый код и демонстрируйте его сообществу |
Но будьте готовы к тому, что признание придет не сразу, и период «наработки» имени не будет сопровождаться высокими заработками. Вначале имя, а потом карьерный рост.
Ждать готовы не все. Веяние сегодняшнего времени – создание стартапов, разрабатывающих решения с использованием компонентов СПО. Участие в таком проекте сильно повышает шансы быстро получить желаемое материальное вознаграждение. Но побочным эффектом становится ваша «обезличенность» для сообщества. В проектах, нацеленных на извлечение прибыли, известность обретают, как правило, не разработчики, а бизнесмены, которые организовали стартап, вложили в него деньги и продвигают продукт на рынок.
Приемлемы оба пути. Просто надо выбрать, какой из них вам интереснее. А можно ли их совместить? Да, если бизнесмен, основавший стартап, не скрывает имен работающих с ним программистов. Это отнюдь не уникальная ситуация, но все же гораздо чаще программисты уходят на второй план.
Еще один минус начала карьеры с коммерческого проекта – достаточно слабый стимул добиваться высокого качества кода. Одно дело, когда вы знаете, что коллеги увидят и оценят ваши разработки. И совсем другое, когда вы инкогнито для сообщества создаете код, к которому бизнес предъявляет одно требование: работоспособность. Выдавая «на гора» такой код, вы становитесь крепким благополучным ремесленником, но уменьшаете шансы стать уникальным мастером. Что важнее – каждый решает для себя.
Подпишитесь на журнал Купите в Интернет-магазине
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|