Pull to refresh

Помочь GNU/Linux — это просто!

Reading time 3 min
Views 46K
Эта статья рассказывает о том, как я, внезапно для себя, перешел с уровня простого пользователя GNU/Linux на уровень контрибьютора в мир open source. Надеюсь что она сможет послужить еще кому-то примером для собственного роста.

Начало

Все началось с того, что я, как всегда, перешел на новый релиз Ubuntu, на этот раз на 13.04. У меня оказалась не самая удачная материнка для линуксоида, так как в дистрибутивах из коробки редко есть дрова для ее сетевой карты (RLT8168E). Но ведь это не большая беда, верно? Раздобыв сопутствующие для компилирования пакеты, скачал с офф сайта последние дрова на Linux. Я уже делал так с Ubuntu 12.10 и ничто не предвещало подвоха.

Подвох

Внезапно эти «дрова» не компилируются. Немного повтыкая в текст ошибок, я пошел просить совета на linux@conference.jabber.ru. Там мне рассказали, что брать дрова с сайта — не всегда хорошая идея и что для моей сетевой карты в репозитории есть пакет. Приятный сюрприз. И действительно, стоило начать с поиска пакета с дровами в репозитории. Но, как оказалось, в нем код того же модуля и при компиляции он точно так же падает.

Поиск решения

Проблема в пакете из репозитория Ubuntu — это уже более серьезная ситуация, и я пошел знакомится с Ubuntu MOTU (Masters of the Universe). На их вики можно найти завлекательные инструкции о том, как помогать содержать пакеты в актуальном состоянии и вообще помогать проекту Ubuntu, что сразу меня заинтересовало. Присоединившись к IRC каналу #ubuntu-motu на freenode.net, начал спрашивать, как я могу помочь починке этого пакета из репозитория. Там мне объяснили, что лучшим вариантом будет решить проблему на этапе до Ubuntu, то есть в репозитории debian, откуда они и берут большинство deb пакетов.

Debian

Не зная, к кому и как обратиться, я решил написать сразу сопровождающему (maintainer) этого пакета (как я узнал потом, так советуют не делать). У каждого deb пакета есть поле maintainer (посмотреть можно, например, при помощи less file.deb), откуда я и взял контактный e-mail. Написал, что, мол, установка пакета падает с такими-то ошибками, что версия пакета такая-то и версия моей Ubuntu такая-то и что, как владелец этого оборудования, хотел бы помочь с фиксом. Не прошло и дня, как он ответил. Написал, что, да, проблема есть, и нагуглил ее на launchpad, и о том, как на самом деле стоит сообщать в debian о найденных багах. Предполагает, что дело в исчезновении некоторых define в исходном коде новых ядер. Попросил, чтобы я нашел commit, который убирает эти define, или любую документацию по этому случаю. Внезапная просьба, но я нашел этот коммит.

Фиксаем

Сопровождающий пакета переслал мне ориентировочный патч, чтобы я опробовал его на своем железе. Чуть его подправив, отправил обратно сообщение об успехе! Таким образом был составлен патч для модуля сетевой карты, в котором фигурирует мое имя как тестера патча. Для меня это был большой повод для гордости и для продолжения начатой работы :)
Далее я протестил у себя получившийся deb пакет и maintainer отправил его в репозиторий sid, на чем история этого пакета в debian пока заканчивается.

Назад в MOTU

Работоспособность для debian — это здорово, но я — пользователь Ubuntu, и этот пакет мне нужен именно там. Пошел обратно к MOTU с надеждой, что сейчас пакет попадет в их репозиторий. Но такая поспешность была слишком оптимистичной :) Оказывается, существует целый протоколированный процесс под названием SRU о попадании пакета в текущий release и в LTS. Документ казался огромным и непрозрачным для меня, и я начал искать ответственных за SRU людей. Нашел их на канале #ubuntu-release. Они оказались весьма приятными людьми и, после недолгого разговора, решили принять пакет в release, так как он берется непосредственно из sid, хорошо документирован и переводит состояние пакета из «не собирается совсем» в «it works for me». Таким образом, к моменту написания статьи все пользователи сетевой карты RLT8168 и ядра любой актуальной версии смогут установить себе дрова прямо из репозитория.
О существовании проблемы и патча для нее я несколько раз сообщил разработчикам модуля в RealTek, но, увы, никакой реакции от них не последовало.

Что дальше?

Почитав уголок разработчика debian, я увидел отличную документацию, множество осиротевших пакетов и пакетов, требующих оформление в deb. Учитывая, что debian сообщество «находится в постоянном поиске новых разработчиков, обладающих некоторыми техническими знаниями, заинтересованных в свободном программном обеспечении и имеющих некоторое свободное время», я начал изучать создание deb пакетов. И мне кажется, это отличная возможность сделать мир Linux чуточку лучше ;)

Зачем статья?

Я надеюсь, что статья поможет увидеть, что помочь любимому дистрибутиву реально даже будучи не супер-пупер программистом. Что сообществу нужна новая кровь и Вы на этом можете получить ценный опыт ;)

P.S.

Если на хабре найдется человек, который сможет стать моим наставником (mentor) и в перспективе адвокатом в становлении debian maintainer, я буду очень рад.
Tags:
Hubs:
+183
Comments 51
Comments Comments 51

Articles