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

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


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

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


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


Открыв сегодня проект с применением этой библиотеки я увидел нечто странное:


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



    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?

Комментарии (8)


  1. natan555
    25.12.2018 12:42

    Юмор уместен всегда, даже в самом серьезном проекте, что говорит о том что проект сделан с любовью и в него вложено масса энергии. Пара МБ картинки или какая-нибудь подпись типа «включить реактор или взорвать?» точно перебор. Но забавная мелочь, в уместное время, очень хороши.


  1. ThisMan
    25.12.2018 13:23

    На одной из работ участвовал в разработке CRM внутренней. Добавил маленькую пасхалку с этим парнем, выскакивал когда случалась ошибка сервера. Правда все равно был только в dev режиме. Бекендерам зашло


  1. yefrem
    25.12.2018 13:43

    У ruby gem'а HTTParty есть забавный post-install message (сообщение, выводящееся в консоли после установки либы): «When you HTTParty, you must party hard!». В свое время очень удивился, узнав, что множествао людей его просто таки ненавидят, еа гитхаба есть куча отклоненных PRов и issue, десятки комментов о том, насколько это ужасно и неуместно, многие упоминают, что перешли на альтернативные либы только из-за этого. Кроме того есть специальный гем, не дающий другим гемам выводить post-install messages вообще, который, кажется, как раз этой строкой вдохновлен (тут не уверен).
    Честно говоря, так и не понял, почему это настолько страшно. Может не всем настолько смешно, как автору, но чтоб прям так…


  1. TonyLorencio
    25.12.2018 14:02
    +1

    Нарисовать ASCII корову — вполне допустимо, apt-get moo не является необходимой командой.


    1. Serge78rus
      25.12.2018 16:48

      Это пока никто не догадался, что такой ASCII-арт оскорбляет чувства верующих индуистов, для которых корова — священное животное.


      1. maxzhurkin
        25.12.2018 19:17

        А разве её не только есть нельзя, но и рисовать?


        1. mayorovp
          25.12.2018 20:07

          Но защитникам обиженных и оскорбленных ответ на этот вопрос не важен!


  1. aleaksah
    28.12.2018 13:53
    +1

    Под рождество у x64dbg все иконки (а они там на каждый пункт каждого меню) превратились в картинки рождественской атрибутики (крашеные яйца, банты, что-то еще). Я это заметил далеко не сразу, и долго не мог понять что не так (ибо до этого машинально ориентировался по картинкам, а тут их нет).
    Разработчик быстро выпустил билд, где это можно отключить прописав вручную параметр в файл конфигурации. Но на мой взгляд он все же перестарался с этой пасхалкой.