Как стать автором
Обновить

15 лет в опенсорсе, а вам слабо?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.6K

Эта статья — поддержка каждого начинающего разработчика, кто никак не может решиться завести свой проект на гитхабе или соурсфордже, на нашем собственном примере. Я убеждён, что этих начинающих — бесчисленное множество, так как курсы (войти в ай‑ти) множатся с каждой неделей — должны же они кого‑то выпускать. Кто‑нибудь видел проекты от специалистов окончивших курсы от какой‑нибудь известной площадки? Будет интересно почитать в комментариях.

Сразу надо сказать, что я не профессиональный программист и пишу код только потому, что он рождается в голове и надо его куда‑то сбросить, я сбрасываю на диск. Со временем на диске появился проект Screen Squid, анализатор логов Squid. Кратко — проекту 15 лет и уже есть что рассказать. Поехали.

Немного истории

По ходу статьи я буду употреблять «Мы» — это означает всех участников проекта в данный момент времени. В разное время «Мы» разное.

В общем, мой основной заказчик — мой знакомый, сказал — неудобно. На протяжении многих лет, именно слово «неудобно» будет мерилом качества.

Идея создать очередной анализатор логов, конкретно — логов прокси‑сервера Squid появилась у моего знакомого. Он профессиональный системный администратор, то есть зарабатывает этим на хлеб. Админ до мозга костей.

Уже тогда (на дворе стоял 2009 год) было много средств понятных и удобных для сисадмина — SARG, SAMS, lightsquid, Free‑SA (трудно поверить, но и сейчас они живы).. их можно много перечислять, а можно перейти на сайт http://www.squid‑cache.org/Misc/log‑analysis.html и увидеть, что анализаторов логов очень много, пишут их во всём мире и всё‑равно чего‑то не хватает. Большинство программ, которые представлены в этом разделе пишутся самими системными администраторами, типа заглушек для собственных нужд и за редким исключением пишутся программистами. Отсюда выходило, что самое родное для сисадминов это shell cкрипты, очень редко perl и ещё реже С/С++.

Все кто писал на С/С++ приложения того времени просто умирали на поддержке приложения. Потому что мир огромен, а число систем на которые ставится программное обеспечение (ПО) ещё больше. И это не строго Debian, а самые разные дистрибутивы *nix.
Из этого выходило, что выпустив релиз, разработчик спешно мастерил костыли, чтобы новый релиз заработал на большинстве платформ. А самое главное, чтобы обновится могли простые сисадмины. Простые сисадмины — это отличные специалисты в своей отрасли, но программисты плохие. Поэтому процесс установки и обновлений лучше, чтобы был одинаков и без сюрпризов. А если будет пошаговая инструкция это вообще — потрясающе.

Изучив текущую обстановку выяснилось, что имеющиеся анализаторы логов работают с понятными сисадминам файлами. Запустил скрипт, получил десяток файлов. А если не получил — то что‑то пошло не так. Я решил работать иначе — загружать данные в базу и оттуда уже «на лету» формировать отчёты. От сисадмина только требуется установить Perl, MySQL(MariaDB) (сейчас можно развернуть и на PostgreSQL) и развернуть веб‑сервер с PHP. Мне показалось, что так будет быстрее и удобней, а главное — кроссплатформенно. Первые шаги в освоении MySQL привели к версиям Screen Squid v0.01 — 0.06. Это были очень‑очень пробные версии. Вкупе с тем, что работали медленно, еще и базу настраивать надо было.

В общем, мой основной заказчик — мой знакомый, сказал — неудобно. На протяжении многих лет, именно слово «неудобно» будет мерилом качества. Для меня большая удача, что я не только могу написать код, но и протестировать на «сисадмине обыкновенном». И это очень важно. Если вам негде тестировать код, скорее всего это будет код «в стол». Проект Screen Squid с самого начала — пишется в первую очередь для себя, для собственных нужд. Поэтому у меня никогда не возникало проблем с мотивацией.

Позднее началось становление Screen Squid с версии v1.0. Основное её отличие было в том, что она быстрее всех аналогов. Схема базы данных практически не менялась с тех пор, а функционал наращивался. Благодаря пользователям удалось внести очень много фич и пофиксить багов. Нам очень помог пользователь под ником drels (привет, Александр!). Он внедрил Screen Squid у себя на предприятии и был автором первой инструкции по установке. Её и сейчас можно найти на просторах интернета, это был первый вклад «сообщества» в мир Screen Squid.

Каждый вклад как импульс к развитию. А что насчёт денежных импульсов?

Донатный рай

Время шло дальше, торт портился, вместе с ним и стриптизерша, в ожидании команды — «давай». «Давай», в смысле, «выпрыгивай», а не — чего сидишь, хотя бы «давай».

Проект появился достаточно давно, и в те времена просто так собирать донаты было не принято. У меня появилась идея — как мне казалось — восхитительная, мы хотим накопить на торт с выпрыгивающей из него стриптизершей. Идея, конечно, не оригинальная, а взятая из фильма со Стивеном Сигалом. Никакого интима, вот такая простая идея, обошлась бы нам в 7 тысяч рублей в 2010-х. Шло время, и мы были согласны, что 7 тысяч это посильный вклад сообщества, а остальное мы довнесём сами. Время шло дальше, торт портился, вместе с ним и стриптизерша, в ожидании команды — «давай». «Давай», в смысле, «выпрыгивай», а не — чего сидишь, хотя бы «давай».

Спустя 15 лет, так ничего и не произошло. Донаты были, за три‑четыре года мы иногда собирали сумму для оплаты хостинга на год. Мы не смогли накопить на мечту. С тех пор мы выросли и вот нам уже нельзя много сладкого и стриптизерш. Может оно и не так плохо. Но к этому надо быть готовым, что ничего не будет.

Однако, в конкретном нашем случае мы обрели команду единомышленников которую не измерить деньгами. Кстати, а что там с сообществом?

Сообщество

Из последнего, что запомнилось — «вы своим анализатором не даёте людям спокойно работать на своих местах, им приходится опасаться, что за ними следят».

Когда ты выложишь свой проект в публичный репозиторий, рано или поздно вокруг начнет формироваться сообщество. Люди будут разные и чаще — городские сумасшедшие, которые почему‑то знают как тебе улучшить свой проект. Действительно дельных советов будет мало. В основном будут говорить, что — код god know.

Или, наш специфический пример — анализатор логов Squid. Очень часто приходят специалисты и заявляют о том, что прокси это атавизм. Из последнего, что запомнилось — «вы своим анализатором не даёте людям спокойно работать на своих местах, им приходится опасаться, что за ними следят».

Мы убеждены, что это лучшая оценка, проект работает.

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

Это всё — враньё. Никому дела нет до твоего кода. Некоторые куски кода были написаны в самом начале и остались неизменными по сей день. Периодически приходят коллеги окончивший какие‑нибудь курсы и говорят — некрасивый код. Я понимаю, что на курсах их не учат решать задачи, а ставят во главу угла — стандарты красоты. Я и сам был на таких курсах. Не окончил.

Где‑то с 2017 года я начал спрашивать у приходящих за советом коллег, откуда они. Оказалось — большинство с регионов. В благодарность они оставляли отзывы на соурсфордже. Лично наша статистика — из столиц — приходят чаще эникеи. Screen Squid установлен на всех пяти континентах. Конкретно меня удивили специалисты из Африки. Для меня было открытием, что там есть компьютеры. Есть! И специалисты там тоже есть. Поэтому если ты планируешь делать проект доступный не только в русскоговорящих странах, то желательно владеть английским языком. Хотя бы, чтобы оказать помощь. К слову, а что с помощью, как обстоят дела с техподдержкой?

Техподдержка

Тут на пальцах не получается объяснить, а читать зачастую они не хотят.

Для меня это стоит заметно выше написания самого кода. Для меня очень важно было написать так, что установить Screen Squid сможет каждый. И пока — у меня сухая серия. Сумасшедших я в расчёт не беру, а так — всем помогли. Пару лет, а может и больше уже существует Wiki. По которой всё должно быть понятно. И я частенько отправляю теперь коллег — почитать инструкцию, пройтись по ней — всё получится. Особенные случаи конечно разбираем. Из недавнего — коллега сообщил, что удалил часть базы, а логов больше нет. Разузнали, что осталось и поняли, что не всё потеряно. Помогли и восстановили данные. Хоть и на это ушла неделя.

Конечно, всякому терпению бывает приходит конец. Например, как я писал выше — дело имеем обычно с видом «сисадмин обыкновенный», поэтому установка и разворачивание базы в инструкции — от пользователя postgres. Небезопасно. Да. Но не понимают админы пока что систему управления пользователями в PostgreSQL. Тут на пальцах не получается объяснить, а читать зачастую они не хотят. Поэтому если кто‑то упорно не хочет ставить из‑под postgres и читать тоже не хочет — получает бан.

А был случай — мне просто дали SSH до сервера и я настроил. Вот такая бывает техподдержка. А если техподдержки нет — продукту будет непросто. Нам повезло, код написан просто и на хабре есть даже статьи как встроится в код и получить дополнительный функционал.

В заключении

У меня есть мечта. Я мечтаю, что у нас в стране появится хотя бы какой‑нибудь отечественный аналог гитхаба или соурсфорджа (без регистрации в ЕСИА) с отечественными лицензиями на опенсорс. Может не первым, но одним из первых я встану под такие лицензии и буду продолжать писать код.

15 лет назад, когда ещё не было активного развития импортозамещения и множества успешных отечественных аналогов, мне пришлось создать свой проект с нуля — ведь, как известно, лучшая мотивация для разработчика это осознание, что работающей альтернативы просто не существует. Если у тебя есть проект, идея, какой‑то код, выкладывай, не бойся. Мы выложили 15 лет назад и ничего. Во всех смыслах — ничего. Останутся вопросы — пиши в комментариях.

Когда меня спрашивают — мой ли продукт Screen Squid, я отвечаю — Нет, это продукт каждого, кто создавал тикеты с фичами и багами, критиковал код и мой образ жизни. Каждый из них может сказать, что он приложил свою руку к крутости Screen Squid и этот проект доступен каждому. Бесплатно. Навсегда.

Теги:
Хабы:
+11
Комментарии20

Публикации

Ближайшие события