Пасхальные яйца и Open Source

в 9:06, , рубрики: ненормальное программирование, пасхальные яйца

«Пасхальное яйцо» (англ. Easter Egg) — секрет в компьютерной игре, фильме или программном обеспечении, заложенный создателями. Отличие пасхального яйца в игре от обычного игрового секрета состоит в том, что его содержание, как правило, не вписывается в общую концепцию, выглядит в контексте неправдоподобно, нелепо, и зачастую является внешней ссылкой. Пасхальные яйца играют роль своеобразных шуток для внимательных игроков или зрителей. (wiki)

Пасхальные яйца бывают разные. Например широко известна команда apt-get moo, которая рисует корову в консоли:

         (__) 
         (oo) 
   /------/ 
  / |    ||   
 *  /---/ 
    ~~   ~~   
...."Have you mooed today?"...

Пожалуй все согласятся с тем, что apt-get moo не является деструктивной функцией. Эта пасхалка может показаться смешной, или же нет, а то и вовсе неуместной, но она наверняка вам ничего не сломает. Также можно посмотреть некоторые другие пасхалки в linux.

В этой статье я бы хотел остановиться на одной конкретной пасхалке. А конкретно о "christmas" в ant-design. Это неплохая UI библиотека контролов для React-экосистемы. Про неё можно было бы написать отдельную статью, но сейчас не об этом.

Открыв сегодня проект с применением этой библиотеки я увидел нечто странное:
Пасхальные яйца и Open Source - 1

У всех кнопок атрибут title превратился в "хо-хо-хо", а ключевые кнопки получили снежную шапку. Достигнуто это было за счёт этого коммита с применением класса "christmas" и кастомным стилем на этот счёт.

Пасхальные яйца и Open Source - 2

    const isChristmas = now.getMonth() === 11 && now.getDate() === 25;
    const classes = classNames(prefixCls, className, {
      // ...
      christmas: isChristmas,
    });

    // ...
    const title= isChristmas ? 'Ho Ho Ho!' : rest.title;

Поначалу я засмеялся. Полез в код. Посмеялся ещё раз. Посмотрел на дату. А потом вспомнил про production. Хм, да-да. Рождественское настроение доехало и туда.

Полез гуглить, как же так. Может быть мне стоило прописать какой-нибудь ключ аля env? Наткнулся на этот issue, с извинениями от автора:

About the christmas egg in antd, it is derived from my commit 00aebeb at Sep 10th. This implementation will make primary button snowy with native tooltip Ho Ho Ho! at the specificed day of Dec 25th. It is a complete stupid decision of my own and very sorry to everyone that get involved.

Are there other eggs in antd's code. No.

Are there same events would happen in future? No, I promise. We are open source project, please supervise us like this time, like always.

После обновления проблема ушла. Автор проблему признаёт и раскаивается. Свой поступок называет "stupid decision".

Отмечу, что библиотека имеет 38 тысяч звёзд и 13 тысяч форков. И она правда неплоха.

Собственно в комментариях хочу поднять вопрос: а что вы думаете о пасхальных яйцах в публичных проектах? Допустимы ли они? Какими они могут быть? Скажем тащить 2 MiB шуточную-картинку с мемом ― однозначно перебор. А нарисовать ASCII корову? Где проходит та самая грань? Уместен ли юмор в open source?

Автор: faiwer

Источник


* - обязательные к заполнению поля