Зачем мне ОСС?
Saturday, 8 Jun 2024
Так получилось, что в результате весьма сумбурной жизни я стал довольно благодарным человеком. Кроме того, меня в свое время неплохо обучили физике. Поэтому если я беру с полки какой-либо товар, мне комфортнее за него заплатить — и ощущения неблагодарной сволочи не грызет, и энтропия без нужды не увеличивается.
Существуют ситуации, когда расплачиваться за добро деньгами — не слишком уместно. Я не пробовал, но, подозреваю, моя супруга не оценит попытку вместо спасибо после ужина высыпать на стол пятерку мелочью. Даже несмотря на то, что здесь, в Испании, — пять евро — это довольно щедрые чаевые. В общем, иногда уместнее выразить благодарность чуть менее естественным способом. Помыть посуду, там, или громко рыгнуть. Но просто встать и молча уйти смотреть футбол — не тот цемент, который укрепляет семью.
Программировать я начал еще в школе, но зарабатывать этим ремеслом у меня стало получаться года с 1993. В любом ларьке тогда можно было купить диск с любым программным обеспечением.
Зато с софтом никаких проблем: вспоминается, как к нам в физтеховскую лабораторию зашли какие-то американцы. В качестве подставки под чайник мы использовали диск «все операционные системы», купленный в ларьке неподалеку за, как сейчас помню, полтинник. Совокупная стоимость программного обеспечения на нем превышала сто тысяч долларов. Американцы были удивлены.
— я об этом уже писал, кстати
Писал я на Delphi32
, с кучей подломанных VCL библиотек для красивых кнопочек и подключения к внешней видеокамере. Мне не приходило в голову, что я делаю что-то не так. Нет, серьезно: я дошел до магазина, заплатил кровные пятьдесят рублей, продрался сквозь не слишком прозрачную инсталляцию, часто — что-то подправил в исходниках (если они были приложены), или прямо в машинном коде. Моя совесть была абсолютно чиста. В принципе, мне иногда удается сойти за неглупого человека, способного к простейшим силлогизмам, но в 1993 году мне на полном серьезе казалось, что я этот софт по-настоящему купил. Потом я познакомился с концепцией свободного программного обеспечения, узнал про домашний проект Торвальдса, понял, что $169,– в документации библиотеки компонент для Дельфей — это не первоапрельская шутка. Но это было потом.
Примерно к 1998 году, когда я уже работал в филиале американской компании, пришло осознание того, что мне неохота воровать. Пиздоболы, поднаторевшие в риторике «украсть можно только выточенный своими руками из дерева артефакт» — пусть живут безмятежно. Я никому не судья (хотя под это дело лет 25 назад Экслер проспорил мне сотню баксов, позорно подтёр тему на форуме и скрылся с радаров) — но это было тогда; как любой новообращенный неофит, я был агрессивно миссионерен (Come Back, Little Sheba — почти все недавно бросившие курить, или нормально питаться свиными котлетами — обязательно ведут себя так, как будто весь мир обязан последовать их примеру).
В общем, я перешел на линукс, перестал пользоваться надломленным софтом (и ломать его своими руками, в чем я за предыдущие десять лет преизрядно поднаторел), и даже купил несколько шариварных поделий (словарик, расчет налогов, — я тогда как раз переехал ненадолго в Германию). На тот момент я уже, помимо ассемблера и бейсика, довольно сносно знал всякие си и плюсы, поэтому как-то само собой получилось так, что я чинил те мелочи, которые меня не устраивали в линуксе. А затем меня осенило: почему бы не начать эти самые фиксы слать в транк?
Так продолжалось еще лет десять; я отсылал все, до чего доходили руки починить, но делал это как-то нерегулярно, и без настроения. Вспоминаются какие-то оптимизации с ранним возвратом в итераторах руби, левые библиотеки на похапе и питоне, что-то еще по мелочи.
А потом меня взбесил подход руби в работе с юникодом (если не ошибаюсь, это были версии 1.8
–1.9
, там все было буквально приколочено гвоздями) — и я написал свою первую полноценную библиотеку — для поддержки UTF-8
единственно верным способом. Тот код — он был довольно неуклюжим и перенасыщенным метапрограммированием, сейчас я бы так писать не стал — был идеологически как две капли воды похож на то, как спустя несколько лет Валим реализовал поддержку юникода в эликсире. Я парсил текстовые спецификации консорциума и генерировал на их основе код всяких строковых преобразований. Например, функция is_space(char)
пережила несколько обновлений спецификации, за которые количество пробельных символов выросло с, кажется, шести, до двадцати с хером. Библиотеку я, разумеется, открыл, и ей даже кто-то пользовался. И вот тут у меня в голове щелкнуло: все, что напрямую не касается бизнес-логики заказчика — целесообразно открывать. Обратная связь помогает искать и исправлять ошибки, а самому становится как-то теплее на душе оттого, что ты своим кодом не только заработал денег, но и кому-то помог.
С тех пор процент открываемого мной в OSS кода вырос до примерно 80%. Меня стали узнавать в коммьюнити. Моими решениями пользуются тысячи людей. Редкая библиотека в экосистеме эликсира (включая компилятор и инструментарий самого языка) не содержит хотя бы кусочек моего кода. Я избавился от резюме и закрыл профиль в линкедине — интересных приглашений стало хватать просто от заглянувших в мой гитхаб. Параллельно я занимался популяризацией эликсира (да и руби) на стековерфло — давал внятные правильные ответы на многие вопросы, от тривиальных, до тех, найти ответ на которые мне удавалось хорошо, если в течение пары часов.
Я практически избавился от выгладывающей пыл мысли «да ну, это же просто кусок кода, зачем я буду его выкладывать в публичный доступ?». До сих пор многие из моих библиотек, включая набравшие сотню звезд (что для эликсира все еще — довольно большое число), с недоверием воспринимаются некоторыми коллегами (которым приятнее пользоваться плохим, неудобным, но чужим кодом). Но я с уверенностью могу сказать, что идея открывать все, что можно, в OSS — была самым лучшим решением, которое я принял за почти тридцатилетнюю карьеру. Если мне завтра предложат 300К годовых, с условием, что я перестану поддерживать свои открытые проекты — я просто рассмеюсь дурачкам в лицо. Я и так не голодаю.
Что лично мне приносит этот — как довольно часто представляется — мартышкин труд? — Ощущение, что я не на галере. Я пишу тот код, который кажется нужным и полезным лично мне. Потом мы используем его и в наших корпоративных проектах, разумеется. Или не используем, тогда его использует кто-то другой, и код не пропадает зря. Я с большим уважением и благодарностью отношусь к работодателю, но для обычных CRUDов пусть он наймет человека более усидчивого и прямолинейного. А я буду решать пока еше нерешенные задачи. Приносить в этот мир решения, полезные не только для моей конторы, но и для вон того случайного интерна из Гватемалы.
Самое интересное, что случается в трудовых буднях разработчика программного обеспечения — это удовольствие поставить самому себе задачу. С пограничным условием «решение должно немного помочь и нашему бизнесу тоже». Но я как бы иду на полкорпуса впереди паровоза. Предугадываю, что нужно будет решить завтра, придумываю, как это удобнее всего абстрагировать от чистого бизнеса, прикидываю библиотечную отчуждаемую разгадку этой шарады.
Без OSS такой путь был бы невозможен. И именно поэтому я так благодарен судьбе, что мне довелось работать в эпоху чуть более дружественного подхода к софту, в сравнении с распространенным лет пятьдесят тому назад. Мне было бы ужасно скучно в профессии, основанной на принципе «товар–деньги–товар». Деньги счастью не помеха, но никакого удовлетворения они не приносят (начиная с суммы, которая позволяет не читать меню в ресторане справа налево).