Патч "справедливости"

Представим ситуацию. Контора берёт разработчика. Не в штат, а по договору ГПХ. Удобно. Ни отпускных, ни больничных, ни обязательств. Схема обычная, никто нынче уже не удивляется.

Работа идёт. Месяц, два, три. Потом начинается какая-то муть с деньгами. Сначала задержка на неделю. Потом на две. Потом "потерпи, всё будет". Разработчик понимает: пора уходить. Не потому что принципиальный. Просто кушать хочется.

Но перед уходом он делает одну вещь. Типовую для своей профессии. Ничего особенного - просто обновляет версию библиотеки в репозитории. Классический jQuery, или любую другую - это вообще тут не важно. Меняет номер версии, кладёт новый файл. Всё как обычно. Только библиотека пропатчена. Внутри - маленькое дополнение. В самой библиотеке.

Мысль простая. Ревью кода делается часто. Ревью типовой библиотеки - не делается. Никто не открывает jQuery и не проверяет, что там внутри. Все смотрят на свой код. А эта зависимость - не свой код, а часть инфраструктуры, которой пользуемся. Она приходит снаружи. Ей доверяют.

Разработчик увольняется. Деньги ему не отдают. Ни через месяц, ни через два. Просто тишина. Он не пишет заявлений, не судится, не скандалит. Просто уходит.

Проходит N месяцев.

И тут - в один день... На всех страницах системы у клиентов. Во всех полях ввода, кроме формы авторизации. Появляется фраза. Короткая. К примеру: "Я тут был. Вася".

Механика - простая. Патч ищет на странице определённые буквы по массиву asc-кодов. Когда находит все - заменяет значения заполненных полей на фразу. Потому что не заполнено - значит не надо. Туда не лезем.

Клиенты видят. Звонят в поддержку. Поддержка ищет в коде. Не находит. Потому что в коде фразы нет. Она в библиотеке. А библиотеку никто не проверяет. Она же типовая, да и в репозитории уж сколько месяцев не тронутая лежит.

Начинают искать причину. Уходит день, два, неделя. Кто-то догадывается посмотреть через консоль. Доходит до jQuery. Внутри - патч. И тогда приходит понимание. Это не баг. Это след.

Теперь вопрос. Прав ли программист.

Юрилически - он нарушил. Вмешался в работу системы. Изменил поведение продукта. Нанес репутационный ущерб. Возможно, финансовый. Тут можно спорить о суммах, но факт остаётся фактом. Да и сам Вася если что присесть мог бы, не будь он вымышленным.

Не формально - он не тронул данные. Не удалил заказы. Не сломал бизнес-логику. Он всего лишь поменял текст в полях ввода. Система работала. Просто в полях теперь было написано "Я тут был. Вася".

Что это? Месть? Самоутверждение? Акт искусства? Или детская выходка? Зависит от рамки: от того, кем был Вася и сколько ему не заплатили.

Он ничего не выиграл. Деньги не вернул. Справедливости не добился. Он просто оставил след. Как надпись на стене. "Здесь был Вася". Не "вы мне должны". Не "я вас накажу". А "я существовал". Несмотря на то, что вы меня вычеркнули.

Контора работает. Взяла новых. Старые в пролёте. Никто не понёс ответственности за невыплаты. Никто не узнал, кроме тех, кто открыл jQuery... и всех клиентов той гипотетической конторы.

И да, я знаю, как действия этого вымышленного разработчика будут интерпретированы по УК РФ. Dura lex sed lex.

Но вот по человечески (или клише "по понятиям") - прав ли он - открытый вопрос.

Интересно, кто бы поступил также, как этот вымышленный программист, а кто не стал бы?

Жаль, в Сетке голосование нельзя устраивать - очень любопытно было бы взглянуть на соотношение "рискованных" и "законопослушных".

ВНИМАНИЕ!

Приведенный выше простенький вариант патча крайне не рекомендую использовать, потому как и правда - УК РФ весьма и весьма критично настроен к таким "милым шалостям". :)