Когда я уходил из аспирантуры года этак два с половиной назад, меня утешала в том числе и мысль, что теперь, когда мне не надо будет гоняться по жизни за более, чем одним зайцем (наивная мысль), я смогу наконец посвятить часть свободного времени и сил участию в одном из, с моей точки зрения, наиболее грандиозных общественных движений: в разработке свободного программного обеспечения.
Среди моих френдов есть как люди, знающие о том, что это такое, так и не знакомые с данным явлением, поэтому я оставлю краткую справку: свободное программное обеспечение - это такие программы (а также библиотеки, модули и прочие вещи, которые используются разработчиками программ, а также операционные системы), исходный код которых распространяется свободно. То есть, бесплатно и при этом совершенно легально. Исходный код - это написанный программистом текст, который может быть сконвертирован в исполняемую программу, которую уже можно использовать. Среднестатистический пользователь компьютера, как правило, имеет дело только с исполняемыми программами. Например, он скачивает из интернета установочный файл (или целый "дистрибутив" - набор файлов), кликает на setup или autorun, нажимает Далее -> Далее -> Далее -> Готово, а затем кликает на появившийся на рабочем столе ярлык, запуская тем самым программу, и как-то там работает с этой программой.
В нашей стране, как и в некоторых соседних странах, исторически сложилась традиция не особо заботиться о лицензии, под которой распространяется программа, если ее удалось где-то скачать и установить. А в некоторых случаях еще и "крякнуть", чтобы программа перестала назойливо напоминать, что за нее не заплачено. Между тем, в других частях света правообладатели прикладывают огромные усилия для предотвращения подобной практики и, надо сказать, успешно. В целом, все больше и больше пользователей компьютеров во всем мире привыкают к мысли, что за все хорошее в этой жизни надо платить, в том числе и за используемые компьютерные программы.
За небольшим числом несущественных исключений коммерческое программное обеспечение распространяется только в виде исполняемого кода и/или инсталлятора. Исходный же код, т.е. текст, написанный программистами (текст на неком формальном языке, а не совокупность нулей и единиц, понимаемых машиной), пользователям программы не предоставляется. Во-первых, им должно быть и незачем, они же пользователи, а не программисты. А во-вторых, если пользователь окажется по совместительству программистом, он может в этот исходный код посмотреть и, в лучшем случае, украсть оттуда какую-то идею (а то и всю программу целиком). А то и пойти и собрать этот исходный код на компьютере друга, который за эту программу не платил, - нехорошо.
Какие это имеет последствия для пользователей? До тех пор, пока пользователь "просто работает" с программой, будь она бесплатная или честно купленная, ему, как правило, все равно. Не все равно ему становится только в ряде ситуаций, когда его способ взаимодействия с программой значительно или незначительно меняется по независящим или слабо зависящим от пользователя причинам. Например, некоторые программы (и операционные системы) имеют (отвратительную, на мой взгляд) привычку брать и обновлять себя в самый неподходящий момент, подчас даже не спросив пользователя, а надо ли ему это. И после обновления, когда вдруг оказывается, что программа ощутимо изменилась, пользователь не может поделать с этим фактом практически ничего. Разве что поискать где-нибудь еще в интернете старую версию этой же программы, чтобы заново установить ее и попытаться как-нибудь запретить ей обновляться.
Это происходит потому, что в такой модели коммерческого распространения программ пользователь программы не является ее хозяином. Хозяином является производитель программы, и он же имеет всю полноту свободы распоряжения ее будущим. Пользователь может только подчиниться этому положению вещей, и в самом худшем случае изменения программы в сторону, препятствующую эффективной работе, он может отправиться искать замену этой программе.
Очевидно, что нашлись люди, которые были не рады такому положению вещей. Причем нашлись довольно давно, еще в те годы, когда Apple Стива Джобса только-только выпустил первый Макинтош, а самая первая версия Windows готовилась к выходу: 4 октября 1985 года некто Ричард Столлман основал некоммерческую организацию под названием "Фонд свободного программного обеспечения" (
Free software foundation). Я не буду пересказывать здесь историю этой организации, а также данные ею различные определения свободы применительно к программному обеспечению. Желающие могут ознакомиться с ними
здесь. Важно, что главный и основной принцип, положенный в обеспечение этих свобод, - это свобода распространения исходного кода программы.
С точки зрения рядового пользователя это довольно бесполезная свобода, ибо он, пользователь, работает с уже "собранной" из исходного кода в исполнимый код программой. Однако для того, чтобы "собрать" программу из исходного кода, требуются знания, как именно это надо сделать. Тем не менее, в глобальном плане это выход из ситуации, когда хозяином программы является не ее пользователь, а ее производитель: если с программой со свободно распространяемым исходным происходит что-либо, что не нравится пользователю, никто не препятствует тому, чтобы он самостоятельно попытался изменить исходный код, дабы восстановить статус-кво. Также не возбраняется пойти к другу-программисту и попросить его пошаманить в нужном направлении. Или даже оплатить такое шаманство. Да, именно оплатить. Это ведь наемный труд, почему бы не заплатить за него? Удивительно, но свобода программы не означает автоматически полную бесплатность всего, что с ней может быть связано. Речь именно о том, что программа свободна
для пользователя
от ее оригинального производителя. Если исходный код программы недоступен, то о любых шаманствах можно просить лишь оригинального производителя. Если им является крупная транснациональная корпорация, то можно предположить, какой будет реакция на такую просьбу от рядового пользователя. Отсутствующей.
На сегодняшний день свободных программ (а также библиотек, модулей, операционных систем и т.д. и т.п.) насчитываются тысячи и тысячи. По большей части они распространены в свободных операционных системах, например, в дистрибутивах Linux. Некоторые из них созданы профессионалами, труд которых был оплачен, некоторые - любителями в свободное время. Некоторые - профессионалами, но в их свободное время. Не буду врать, со свободным программным обеспечением иногда возникают проблемы, связанные с тем, что модель его распространения предполагает принцип "никто никому ничего не должен, и вообще, вот тебе исходники, пожалуйста, ищи и исправляй проблему сам, если так уж надо". Однако вместе с тем есть и продукты очень высокого качества, широко применяемые во всей IT-индустрии.
Почему лично я считаю разработку свободного программного обеспечения одним из наиболее грандиозных общественных движений? Потому, что считаю открытость (особенно препятствующая закрытию в будущем хотя бы юридически) и доступность знаний и технологий всем и каждому необходимым условием гарантии их сохранения и преумножения. В нашем насквозь прокоммерциализированном мире знания и технологии принадлежат де-факто корпорациям. Ключевые знания и технологии, как правило, составляют коммерческую тайну. В результате плоды этих технологий доступны для использования, но сами знания и технологии недоступны для изучения. И нет гарантии, что они однажды не канут к лету вместе со всеми прочими технологиями, предназначенными для использования совместно с пропавшей.
Наверняка многим покажется глупой идея конкурировать с корпорациями ради таких вроде бы эфемерных вещей, но я так не считаю. Мне хочется верить, что если человечество выживет и не остановится при этом в своем развитии в следующие n веков (и не опустится до дикарского уровня тоже), то настанет день, когда необходимость свободного распространения знаний и технологий станет осознанной глобально. Я не ожидаю увидеть этот день за свою жизнь, однако мне недостаточно просто надеяться на то, что закрытые технологии, которые я могу создавать, работая на дядю, до этого дня доживут и с той поры станут открытыми. Лучше начать активно действовать уже сейчас. Ну, и потом, прогресс свободного программного обеспечения хоть и продвигается не так быстро, как хотелось бы, но все же в некоторых секторах использования наступает на пятки коммерческим производителям, заставляя их искать какие-то новые решения, улучшать свои продукты. Представьте себе, что вы бизнесмен, и у вас есть конкурент, у которого продукт пусть и не столь богатый функционалом, как ваш, но он не то что демпингует, а вообще отдает продукт за бесплатно. Какой у вас есть выход (помимо того, чтобы устранить конкурента физически; кстати, такие поползновения в сторону свободных программ случаются регулярно)? Только сделать свой продукт настолько лучше, чтобы пользователь все равно предпочел купить его. Конечно, это все в идеальном мире. В реальном мире коммерсанты имеют тысячу и один инструмент, чтобы удерживать пользователей от перехода на свободные программы, например, обеспечить практическую несовместимость своих программ с чем бы то ни было (формат doc текстового редактора Microsoft Word представляет собой целую файловую систему внутри одного файла + у него целый зоопарк различных версий + спецификации были опубликованы с большой задержкой, и то неполные, даром что занимают тысячи страниц). Некоторые не брезгуют и
рэкетом. Как гласит плакат в офисе компании, в которой я работаю, "война идет". А в войне, как известно, все средства хороши.
И это я еще не коснулся аспекта глобальной слежки программ за своими пользователями. Этот тренд еще только стремится к своему пику. Я считаю, что даже наличие исходного кода программы не гарантирует, что она не содержит средств для слежки (их можно умело маскировать, в том числе под баги программы), однако отсутствие исходного кода обрубает принципиальную возможность такой гарантии на корню.
Собственно, за прошедшие два с половиной года с момента моего ухода из аспирантуры я пока не очень много поучаствовал в разработке свободного программного обеспечения, хотя несколько небольших эпизодов и было. Однако свой главный contribution на данный момент я пока только подготавливаю. Это будет довольно незатейливая программа (хотя мне и пришлось повозиться над ее внутренностями), но все-таки это что-то. Пока я жив, пока у меня есть время и силы, я буду посвящать их тому, что по моей вере и надежде, является хотя бы крохотным вкладом в лучшее будущее для всех людей. Пусть в настоящее время это и напоминает крупинку в океане, но ведь путешествие в тысячу миль начинается с первого шага.