open source, медленные правки багов


Есть такой миф, что открытое программное обеспечение более качественное и безопасное, чем закрытое. Много раз это обоснованно ставилось под сомнение. Существует примеры, когда в открытом коде находили эпичные уязвимости, которые скрывались от разработчиков и пользователей долгие годы. Я считаю, что качество проекта зависит от того, как руководители разработки построили процесс и какие методологии/инструменты используются, а не от того, открыт или закрыт проект.


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


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


Множество раз мои сообщения про найденные ошибки игнорировались или откладывались в дальний ящик авторами открытых проектов. Хочется proof'ов? Пожалуйста. Сегодня у меня как раз есть красивый жирный пример.


Меня cподвигло написать эту мини-заметку неожиданное письмо от багтрекера проекта Samba. Я сначала даже не понял, что это за письмо такое. Оказывается, добрались до ошибок, отписанных мной ещё 9 лет назад! Bug 9320 — PVS-Studio.


9 лет, Карл!


Девять лет всем всё равно, что в проекте баги. Девять лет всем всё равно, что в проекте присутствуют старые версии библиотек с потенциальными уязвимостями типа CWE-14. Да, собственно, и сейчас, пока я пишу эти строки, в коде присутствуют всё те же опасные вызовы memset. Например, здесь:


static void
md_result(MD_CTX * ctx, unsigned char *dst)
{
  SHA256_CTX tmp;

  memcpy(&tmp, ctx, sizeof(*ctx));
  SHA256_Final(dst, &tmp);
  memset(&tmp, 0, sizeof(tmp));
}

Или здесь:


static void
calc(struct md2 *m, const void *v)
{
  unsigned char x[48], L;
  const unsigned char *p = v;
  int i, j, t;

  ....
  memcpy(m->state, x, 16);
  memset(x, 0, sizeof(x));
}

Вызовы этих memset компилятор удалит, и приватные данные будут продолжать находиться в памяти. Если вы далеки от этой темы, то разобраться, что к чему, поможет статья "Безопасная очистка приватных данных".


Возможно, конкретно эти баги и дефекты безопасности никакой реальной беды и угрозы не представляют. Дело в другом. Разработчикам проекта всё равно. И сторонним разработчикам всё равно. Никто не берёт и не исправляет хотя бы те баги, которые можно взять и найти с помощью PVS-Studio. И даже уже найденные баги не торопятся исправлять.


Бомбанул. Стало полегче. Спасибо, кто выслушал :). Буду ссылаться на эту заметку, когда кто-то вновь заведёт шарманку на тему того, что открытый код безопаснее.

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


  1. sshikov
    16.12.2021 18:29
    +18

    Проверьте log4j 2.*


    1. aleks_pingvin
      16.12.2021 18:44
      +4

      Лучше openJDK


      1. sshikov
        16.12.2021 18:46
        +5

        Да, можно обоих, чего уж там. Но я исхожу из того, что продукт, в котором уже обнаружили дырищу, скорее всего содержит их еще. Это такое эмпирическое правило, если угодно.


        1. fougasse
          16.12.2021 19:46
          +19

          Если написанная программа сработала "правильно", то это значит, что во время ее работы выполнилось четное число ошибок.


          1. LynXzp
            19.12.2021 05:16

            Выполнилось количество ошибок не равное одной. Три ошибки могли последовательно себя скрыть.


        1. amarkevich
          17.12.2021 15:19

          Баг связан с фичей версии 2.х, в 1.х такого нету. Если бы в процессе прикручивания очередной свистелки подумали бы о нестандартном использовании - то проблема была бы только у пользователей, явно включивших эту фишку.


          1. sshikov
            17.12.2021 16:10

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


      1. Shaz
        16.12.2021 22:57
        +1

        Самой популярной версии 1.8ххх?


  1. uuuuuuuu
    16.12.2021 18:54
    +15

    А сколько закрытых проектов вы проверили? И сколько багов в них обнаружили?


    1. Andrey2008 Автор
      16.12.2021 19:05
      +18

      Не так уж много, но проверяли. Подробности не расскажу в силу NDA. Ощущение: качество кода также варьируется, как и качество открытых проектов. Пруфов не будет, сорри. Вывод тот-же: от открытости почти ничего не зависит.


  1. Lure_of_Chaos
    16.12.2021 18:58
    +16

    Открытый софт не более безопасный, а *потенциально* более безопасный.

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

    Остаются преступники, которые заинтересованы в поиске уязвимостей и совершенно не заинтересованы в их исправлении, по понятным причинам.

    Кто остаётся? Энтузиасты? Да, они могут находить баги, но всё упирается в п.1 - желание разработчиков заниматься этими тикетами. Есть и ещё несколько "бонусов": чтобы находить ошибки, нужно обладать знаниями и опытом чуть выше среднего (в противном случае их бы исправляли ещё до релиза); ещё больше знаний, опыта и времени требуется чтобы найденный баг воспроизвести (поймать) и исправить. И зачастую как раз времени не хватает, т.к. сами девелоперы загружены требованиями бизнеса выкатить новые фичи и без того фантастически быстро.

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

    -

    В завершение вспомню эпизод из собственного прошлого, когда начальник мне втолковывал, что рабочее время необходимо тратить на код, "привносящий ценность продукта для клиента", а рефакторингом и мелкими улучшениями я могу заниматься в свободное время бесплатно, если у меня есть такое желание. Хорошо, что ему не пришла мысль штрафовать за баги, но я не стал этого дожидаться и ушёл из компании.

    Случай может показаться надуманным, но он правдив, и хотя (к счастью) таких заявлений я больше не слышал, он показывает общее стремление бизнеса и объясняет, почему софт настолько забагован, а ошибки не исправляются независимо от открытости кода.


    1. borovinskiy
      16.12.2021 20:30
      -3

      Ну собственно начальник прав, программа нужна чтобы нести ценность клиенту.

      Про "писать в свободное время", это он про расстановку приоритетов (компания платит не за идеальный код, а за такой, который устраивает клиента), его не надо буквально понимать -)


      1. cepera_ang
        16.12.2021 21:33
        +5

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


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


        1. Earthsea
          17.12.2021 09:49
          -3

          Представьте мир, в котором поиск в интернете выполнялся бы, ну хотя бы за минуту, а ещё лучше за 10 минут, а не за 0.1сек.

          Лучше сутки. Мир был бы прекрасен. Люди не искали бы всякую чушь, и не тратили бы время на чтение буллшита и покупку всякой ненужной дряни. Было бы меньше гугл-специалистов, которые без интернета под рукой не могут ничего выполнить, и больше реальных специалистов с твердыми знаниями. А кому надо что-то поискать по делу, могли бы заранее записывать свои запросы в блокнот, расставлять приоритеты, вычеркивать лишнее.


          1. Lure_of_Chaos
            17.12.2021 18:04
            +4

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

            И в этом не было ничего прекрасного - ту программу, которую сегодня может за полчаса написать вчерашний студент, писали единичные профессионалы месяцами; результаты достигались не просто нервами, а потом и почти кровью. Но - чуши меньше не было, просто она была оффлайн - в кафе, на улицах, домашних кухнях.

            Спасибо Интернету и в целом техническому прогрессу за то, что мне не нужно учить в самом деле чушь - таблицы чисел с точностью до 8 знака после запятой, названия функций и порядок параметров, тонкости различий процессоров и т.д., а могу заняться именно тем, чем мне нравится заниматься - созданием софта, который работает приемлемо неплохо.


        1. svr_91
          17.12.2021 09:53
          +2

          И раз в десять запросов выдавал бы мусорный ответ.

          Ну сейчас он 9 раз из 10 выдает мусорный ответ. В итоге таже минута на поиск и получается (на самом деле гораздо больше)


          1. cepera_ang
            17.12.2021 13:20
            +1

            Минута и даже десять на результативный поиск — это же отлично. Лучше только если вы уже знаете ответ — тогда можно за 30 секунд воспроизвести из головы. Ещё лучше — когда за вас думать начнёт и само себе вопросы задавать. Но до этого пока не дошли.


            А если бы у вас на каждую попытку уходило десять минут, а то и день (как во времена библиотек), то вы бы просто не стали делать подавляющее число запросов. Как сейчас не делаете никаких спонтанных запросов в архивы, типа "о, любопытно, а где мой прадед по отцовской линии жил в такие-то годы? А в эти? А кто соседи были? А то? А сё?"


            1. svr_91
              17.12.2021 14:56

              Я думаю, это от порядка величин зависит. Если на одну попытку будет уходить минута, ничего страшного, переживем. Врядли чтото сильно изменится. Если 10 минут - то уже да, сильно хуже


              1. cepera_ang
                17.12.2021 17:37

                А вы попробуйте. Откройте DevTools, Network и создайте кастомный профиль сети с задержкой 60 000 мс и попробуйте прожить так денёк (придётся оставить открытыми девтулс, да). Только честно, без "да я попробовал загуглить хабр, ну подождал минутку, нашёл что ожидалось, ничего не изменилось в ощущениях, дальше нет смысла продолжать и так всё понятно".


                1. svr_91
                  17.12.2021 17:46

                  Ну вот сейчас я попробовал на старом телефоне (которым только бросил пользоваться) выполнить свой стандартный путь "найти что-нибудь": разблокировать экран, запустить wifi, открыть браузер, ввести запрос, дождаться загрузки. На это у меня ушло 36 секунд. Всего в 2 раза меньше минуты. А мне это приходилось делать каждый раз, когда хотелось чтонибудь найти, и я этого даже не замечал


                  1. cepera_ang
                    17.12.2021 18:48
                    +1

                    Если не умничать и не углубляться во всякие сложности типа latency amplification (не гуглите! это займет минимум десять минут даже с нормальным гуглом), но даже ваш старый телефон — это не тоже самое, что каждый запрос и всегда по минуте, с одной стороны, то, как используется гугл, дающий мгновенные ответы — с другой.


                    • На телефоне, после всех этих долгих стартовых действий, каждый очередной запрос, например уточняющий запрос по результатам поиск — занимает уже не по 40 секунд, а скорее "время ввода + пара секунд" и можно аргументировать, что время ввода вообще нужно исключить, потому что оно зависит от пользователя и тут чудес нет (хотя голосовой ввод + подсказки вносят приличный вклад). Итого серия из 10 запросов будет не 6 минут, а скорее 2-3. С минутным ожиданием было бы 15 минут.
                    • Ваш пример с телефоном звучит как довольно долгий доступ к гуглу, который гарантированно повлиял на ваше желание что-то искать, даже если вы этого и не замечали. Зная, что поиск займет "36 секунд" вы заранее отфильтровываете "ерунду", которая не стоит того, чтобы тратить на неё столько времени. Открытый же в отдельной вкладке на 4к экране поиск позволяет искать любые вещи практически без трения, и это пробуждает скрытый до этого спрос на эти действия. Почему не сослаться на доступные через 10 секунд (в худшем случае через минуту) данные в разговоре на хабре? Почему не узнать что такое харамамбура, если вдруг пришла такая мысль? У меня сегодня был спокойный день и я ничего целенаправленно не ресёрчил, но поиск по истории браузера (ха, опять поиск, который легко сделать) показывает, что я сделал около сотни запросов. Сколько было бы с минутной задержкой? Ну, наверное самые важные пять.


                    1. svr_91
                      17.12.2021 19:10

                      каждый очередной запрос, например уточняющий запрос

                      Как правило, на какой-то итерации я обычно бросал это дело и садился за комп. Но скорее не из-за долгого отклика чего либо, а из-за моей неспособности набирать что либо на мобильной клавиатуре.

                      Но у меня есть и опыт пользования компьютером в детстве, когда инет был очень медленным (уж не знаю, насколько, но точно медленнее чем сейчас). И привычки формируются быстро - например, открыть сразу несколько вкладок с результатами поиска, и пока читаешь одну, остальные уже догрузятся

                      Зная, что поиск займет "36 секунд" вы заранее отфильтровываете "ерунду", которая не стоит того, чтобы тратить на неё столько времени

                      Видимо у нас и правда разные паттерны использования интернета. Я и сейчас, с быстрым интернетом, всегда фильтрую "ерунду", и ни разу не гуглил что такое харамамбура, даже сейчас, представьте, не хочу. Так что может быть я и вправду намного легче переживу резкое замедление интернета, в отличие например от вас


                      1. cepera_ang
                        17.12.2021 19:34
                        +1

                        Гугл — это был просто пример, но общий паттерн один и тот же: люди неосознанно избегают действий, которые воспринимаемо "дорого стоят". Методы работы, креативные возможности и т.д. — радикально меняются, когда очередная итерация возможна в интерактивном режиме. А замедление интернета я переживать не собираюсь, также как не готовлюсь, ну не знаю, жить в мире без унитаза и душа с горячей водой.


        1. Wesha
          17.12.2021 10:56
          +1

          Представьте мир, в котором поиск в интернете выполнялся бы, ну хотя бы за минуту, а ещё лучше за 10 минут, а не за 0.1сек.

          Есть такой мир, Марсом называется.


          1. SlimShaggy
            17.12.2021 11:25

            Думаю, на Марсе придется делать свой марсонет со своим гуглом.


          1. cepera_ang
            17.12.2021 13:21
            +1

            Думаю там вполне себе будет стоять локальная копия индекса, во временем.


      1. Shaz
        16.12.2021 22:59
        -1

        А если из-за багов программа ещё и уносит ценности клиентов налево?

        Хотя понятно что это будет проблема клиента и юристов а не начальника.


        1. borovinskiy
          17.12.2021 12:38

          Клиент заведет тикет, баг исправят.
          Программист, устраняя баг из тикета, будет нести пользу бизнесу.

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

          Что хочет работодатель - доносит менеджер проекта или начальник, если такая иерархия.


          1. Mike-M
            18.12.2021 02:47
            +1

            Клиент заведет тикет, баг исправят.
            При этом:
            1. Клиент будет вынужден потратить свое время на заведение тикета, хотя изначально на это не рассчитывал.
            2. Клиент будет вынужден ждать выхода исправления. Кроме того, не все баги удается исправить корректно с первого раза.
            3. Пара-тройка таких тикетов, и репутация Вашей компании/продукта в глазах клиентов будет основательно подорвана.

            Программист, устраняя баг из тикета, будет нести пользу бизнесу.
            Программист принесет еще больше пользы, если вместо того чтобы постоянно отвлекаться на тикеты, он будет заниматься новым функционалом. Ибо давно и многократно доказано, что Task switching is a costly process.


            1. borovinskiy
              18.12.2021 08:46

              Здесь видимо каждый о своём.

              Проекты, в которых 3 ошибки - это много и повод отказаться от подрядчика - это какие-то микропроекты.


              1. Mingun
                18.12.2021 12:53

                Тут, так, к слову, а вы на новом интерфейсе хабра или на старом?


                1. borovinskiy
                  18.12.2021 13:11

                  А не знаю, на новом наверное.


                  1. Mingun
                    18.12.2021 13:28
                    +1

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


            1. Am0ralist
              18.12.2021 10:39

              Пара-тройка таких тикетов, и репутация Вашей компании/продукта в глазах клиентов будет основательно подорвана.
              Гы… на моём счету сотни тикетов от заказчика поставщику САПР при внедрении оного на производство.
              А другие местные ещё хуже, иностранные — дороже на порядки и тоже не сахар в плане автоматизации производства


              1. Mike-M
                18.12.2021 12:50
                +2

                Помнится, в советские времена большинство автолюбителей ездили на Жигулях, Москвичах и Запорожцах. Некоторым удавалось пересесть на лучшее, что было в те времена — Волгу. Но даже Волга была барахло по сравнению с Мерседесом.

                Когда деваться некуда, приходится выбирать лучшее из худшего. И допиливать по ходу пьесы, как в Вашем примере. Тут вопросов нет.


                1. Am0ralist
                  18.12.2021 12:57

                  Скажем так, мерсы купить можно было. Но допиливать их бы пришлось уже СВОИМИ руками.
                  Не, я знаю такую контору, у которых одних только вакансий программистов C# висело постоянно столько, что можно было уже свою студию разрабов запилить, при этом на части производства, кстати, использовался уже тот российский САПР (то есть в основном для дизайнеров делалось)… Зато солидворкс же! И да, грубая оценка затрат на разрабов за много лет и стоимостей лицензий солида, а так же процессы обучения, почему-то у меня в голове превышает стоимость покупки студии из коломны целиком или хотя бы на 50%)))


      1. Lure_of_Chaos
        17.12.2021 17:51
        +1

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

        Ну т.е. да, до штрафов исполнителей за баги там было недалеко.

        И это не расстановка приоритетов, это вынесение задач за рамки. И я очень рад, что в основном бизнес (уже?) не представляет себе радужных пони, а понимает, что это нормально, что программы могут содержать ошибки и на их выявление и устранение нужно закладывать время и деньги.


        1. borovinskiy
          17.12.2021 18:01

          Это какой-то странный бизнес. В нем поди и тестировщиков нет, раз у программистов сразу идеальный код?)


          1. Lure_of_Chaos
            17.12.2021 19:03

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


    1. Wohlstand
      16.12.2021 23:43
      +5

      А как же энтузиасты, которые не просто находят баги, а ещё исправляют их самостоятельно и отправляют разработчикам патчи? У меня как раз именно так и происходит, одна часть жалоб от простых пользователей, которые тупо нашли баг, но исправить не могут, или даже не знают её причины; и другая часть - те, кто присылает мне патч с исправлением и объяснением причин бага. С первой частью разработчики чинят ошибки в зависимости от настроения и приоритетов, а со второй частью разработчики даже спасибо говорят, если всё сделано всё чётко и качественно (ага, потому что сразу на блюдечке подали готовый результат, остаётся только заценить и принять или отправить лесом).


      1. IkaR49
        17.12.2021 09:37
        +3

        Возьмем, например, bullet. Там куча готовых к мерджу пулл реквестов висит больше 2 лет, а мейнтейнерам и дела нет.

        Я лично тут в одну мелкую тулзину 3 ПР оформил на критические баги, и они уже больше месяца висят, но там это пет-проект одного человека, и я готов понять, почему у него нет времени.


        1. Lure_of_Chaos
          17.12.2021 18:07
          +1

          И вот в этом есть плюс открытого софта - можно его форкнуть, подправить баги, добавить фичи и поддерживать самостоятельно. Конечно, если и вам это надоест, но пользователям вашего форка будет больно, но, будем надеяться, найдётся другой неутомимый специалист, который форкнет ваш проект и продолжит поддержку.


    1. khim
      17.12.2021 00:07
      -3

      Открытый софт не более безопасный, а *потенциально* более безопасный.

      Он и потенциально и реально более безопасный.

      Просто если в коммерческом софте ошибки встречаются, условно, по штуке на тысячу строк, то в опен-сорсе — штука на десять тысяч строк.

      Но и там и там уязвимостей — вагон и маленькая тележка.


      1. Andrey2008 Автор
        17.12.2021 16:43
        +2

        Просто если в коммерческом софте ошибки встречаются, условно, по штуке на тысячу строк, то в опен-сорсе — штука на десять тысяч строк.

        Это мнение и фантазии, не более того.


    1. Koval97
      17.12.2021 05:16

      У меня был подобный начальник, когда еще был совсем зелёный. Тоже много прикалывался, подшучивал, душевный человек, но Team Lead из него такой себе - кормил директора завтраками, а ни одного прототипа за целый год не сделал.

      С опытом повзрослевше понимаешь, что не всё нужно доносить таким начальникам, некоторые лучше понимают на контрасте, когда неожидано для себя замечают, кого они упустили. И умоляют вернуться обратно - часто это путь к гарантированному повышению, и договорится с ними по работе команды значительно проще после таких кейсов.

      Всё это к тому, что не всё в этом мире делается так однобоко. Нужно понимать, что однажды на месте этих самых "руководителей" окажешься ты сам.


      1. Lure_of_Chaos
        17.12.2021 18:09
        +1

        Всё это к тому, что не всё в этом мире делается так однобоко. Нужно понимать, что однажды на месте этих самых "руководителей" окажешься ты сам.

        Неожиданно, но... спасибо за предупреждение. Очень постараюсь так не делать.


    1. Carburn
      17.12.2021 12:12

      а если делать рефакторинг во время работы над задачей приносящей ценность клиенту?


      1. panzerfaust
        17.12.2021 13:48

        Прямой путь к постоянному регрессу. И с QA быстро отношения испортятся. Они взяли на проверку кейс А, а вы попутно нарефакторили еще и кейсы В и С, на которые ресурсы никто не выделял.


      1. Lure_of_Chaos
        17.12.2021 18:20

        Было в практике такое. Сразу вопросы в стиле "а чего так медленно?" со всеми санкциями.

        Откровенно говоря, однажды меня так уволили за "профнепригодность". Наняли как Java-разработчика, а посадили на Javascript (который тогда я ещё не знал, это сейчас я могу хвастаться умным словом фуллстек), дали задачу, который я делал одновременно с изучением и языка и фреймворка и всех подводных камней, потом постоянно требовали переделать, а через неделю "забыли", что я только учусь и что вместо одного я делал несколько вариантов и с аргументом "на двухчасовую фичу потратил неделю??" распрощались. Я даже сопротивляться не стал, поскольку с моей стороны также хватило (например, там не пользовались никакой версионной системой, а девелопили напрямую в тест - спасибо, не прод; или переводы делали прямо на клиенте гуглотренслейтом пока в гугле не забанили)

        Поэтому сразу видно, кто начальник ("исполнять!") и лидер. Поэтому важны честные диалоги, а не ухищрения (с любой из сторон)


  1. semibiotic
    16.12.2021 19:00
    +6

    Надо заметить, что в закрытых проектах ошибки те же, только их еще и нельзя увидеть ...


    1. Andrey2008 Автор
      16.12.2021 19:07
      +2

      Нельзя. Но это не значит, что возможность их видеть, так уж сильно влияет на качество.


      1. 0xd34df00d
        16.12.2021 21:19
        +3

        Возможность их увидеть влияет на то, выберете ли вы эту библиотеку или нет.


      1. Wesha
        17.12.2021 06:13
        +2

        Но это не значит, что возможность их видеть, так уж сильно влияет на качество.

        Это влияет на Ваше знание об этом качестве. И, соответственно, на Ваше знание о том, с чем Вам в процессе пользования продуктом придётся столкнуться — и, соответственно, на желание этим продуктом вообще пользоваться.

        Когда я (в процессе ремонта) узнал, что кронштейны жалюзи в купленной мной квартире прикреплены при помощи не шурупов, а термопластичного клея; прокладка в кране, который в теории должен перекрывать воду к умывальнику, не садится полностью в седло; а трубка, которая подаёт водопроводную воду в холодильник (для изготовления ледяных кубиков) вообще непонятно куда подсоединена и как перекрывается (но вода из неё продолжает течь), стены дома узнали много новых матерных слов.

        Та же фигня и с программными продуктами.


      1. Lure_of_Chaos
        17.12.2021 18:24

        Уточню: юридическая возможность, т.е. лицензия.

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


    1. aleks_pingvin
      16.12.2021 19:11
      +1

      Таким образом если взять одну "сферическую команду разработчиков в вакууме" и попросить сделать два схожих приложения, но одно проприетарно, а другое опенсоурсно, то их баги приводящие к критической уязвимости в проприетарном коде всплывут (если всплывут) очень не скоро, а в опенсоурсном - может найти любой желающий, но велик шанс не обращать на них внимание годами (как с log4j2), но при этом ушлый злоумышленик может о них знать и потихому эксплуатировать.


      1. mayorovp
        16.12.2021 19:30
        +2

        Не уверен что там (в log4j) вообще баг был. Кажется, исходно он как фича задумывался, пока его эксплуатировать не начали.


        1. sshikov
          16.12.2021 19:51
          +1

          А велика ли разница? Там язык, если угодно. На котором можно было написать выражение, и его результат будет вставлен в лог вместо выражения. Но выж понимаете, выражение которое вызывает некий (произвольный) класс, а особенно взятый непонятно откуда, это потенциальная дыра. Даже если не считать багом в коде отсутствие проверки (белый список и т.п.), то баг в спецификации тут точно имеет место.

          Потому что например в похожих API к примеру, можно написать "${expression}", но нельзя этот ${expression} интерпретировать просто так из переменной. Ну т.е. выражение — фича времени «компиляции» или времени конфигурирования, но в рантайме их формировать нельзя.


          1. borovinskiy
            16.12.2021 20:37
            +1

            А как узнать, "оттуда" класс вызван или не "оттуда"? В логгере-то? Который по дизайну должен быть суперуниверсальным.


            1. sshikov
              16.12.2021 20:51
              +2

              Речь вообще про класс JndiPlugin.

              Ну т.е. если у меня в конфиге log4j написано ${jndi:...}, то я ССЗБ, но я знаю, что я делаю, а если такое не написано (конфиги-то свои я могу проанализировать, надеюсь) — то в этих условиях он вызываться не должен вообще.

              Те редкие люди, которые его реально применяли, вполне могут и доработать свое приложение. А остальные — кто его в глаза не видел никогда, просто его вырубят, чтобы он ничего не делал, не лазал на внешние хосты непонятно зачем, и все такое.

              Логгер — он супер универсальный только в отрыве от конкретного приложения. В рамках же приложения вы вполне можете контролировать, что он будет логировать.


          1. mayorovp
            17.12.2021 10:34
            +1

            Разница в том, что фичу делали намеренно. Её же, блин, вообще можно параметром командной строки отключить!


            1. sshikov
              17.12.2021 10:38
              +1

              Ну конечно делали как фичу. Не считая того, что кто-то мог иметь в уме и другие варианты :) По умолчанию она включена. Опять же, я склонен считать, что баг в требованиях — нельзя было такую дырку делать, не продумав безопасность.


              1. mayorovp
                17.12.2021 10:52
                +1

                Вот-вот, баг именно в требованиях. Про это я и пишу.


                1. Lure_of_Chaos
                  17.12.2021 18:29

                  Думаю, баг в том, что не подумали, что в такое закрытое, как логи, можно протащить что-то извне. Да, сработал принцип "не доверяй внешним данным", да, можно было отключить, использовать проверки и песочницы, но по идее, в логи ничто не должно попадать "извне" и тем более не должно отдаваться наружу.

                  Честно говоря, мне всё ещё кажется несколько странным фильтровать и не выводить некоторые данные в лог, такие, как номера кредиток, заменяя их звездочками (для понимания поясню, например, замена регулярками)...


      1. toxicdream
        17.12.2021 12:28

        Проприетарный софт обычно продают. И если баги вылезают у клиента, то разработчиков дрючат, и соответственно над "выявленными" багами работают.

        Условно можно разделить работу над багами по следующим критериям: выявляемость и исправляемость.

        В проприетарном софте баги выявляются тестировщиками и пользователями, исправляются разработчиками в силу обязательств возникших при продаже.

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

        Баги будут в любом софте в силу человеческой природы. А вот от формы распространения софта отношение к багам уже отличается. Однако это различное "отношение" совсем никак не коррелирует с количеством "выявленных" и "исправленных" багов.


        1. aleks_pingvin
          17.12.2021 12:52
          +3

          проприетарный софт обычно продают. И если баги вылезают у клиента, то разработчиков дрючат, и соответственно над "выявленными" багами работают.

          Да если бы так... Зависит от SLA. Чаще же всего звучит "ваше обращение зарегистрировано, спасибо за обратную связь, всего вам доброго, досвидания". В лучшем случае еще добавят номер тикета который может висеть бесконечно долго.


          1. Lure_of_Chaos
            17.12.2021 18:32

            Благодаря LGPL и иже с ними мы можем форкнуть либу, исправить баги и пользоваться форком.

            Однако, следует различать "в теории можем" и "будут делать все". По-моему, пост именно об этом.


  1. vdudouyt
    16.12.2021 19:02

    >> 1000 глаз, которые не хотят проверять код открытых проектов

    Интересно, как бы их проверил@Andrey2008, будь бы их исходники коммерческой тайной за семью печатями.


    1. Andrey2008 Автор
      16.12.2021 19:07
      +5

      Ну вот проверил 9 лет назад. И что? :)


      1. Wesha
        17.12.2021 03:05

        А то, что пистон надо вставлять тому, кто решает, какому багу приоритет отдавать.


        1. MAXH0
          17.12.2021 06:31

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


      1. uuuuuuuu
        17.12.2021 17:09
        -3

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


        1. Andrey2008 Автор
          17.12.2021 17:16
          +1

          И действительно, что это я. Потенциальная уязвимость CWE ведь может стать уязвимостью CVE, а может ведь и не стать. Так что пофиг. :)

          Только не надо тогда ля-ля про качество открытого кода.


          1. uuuuuuuu
            17.12.2021 18:21
            -2

            Только не надо тогда ля-ля

            Какой вежливый собеседник.


          1. Lure_of_Chaos
            17.12.2021 18:34

            А влияет ли иерархия форков на качество? Как Вам кажется? (в том смысле, что, по идее, форкают для исправлений и улучшений)


            1. Andrey2008 Автор
              17.12.2021 18:45

              Не знаю ответа и предложить тоже затрудняюсь.


  1. KanuTaH
    16.12.2021 19:30
    +11

    По моему опыту, любые мейнтейнеры куда больше любят патчи, чем баги. Когда уже есть разумный патч, мейнтейнеры особо не сопротивляются его включению в основную ветку. Это я к чему - вместо открытия issue "а тут у вас memset" попробуйте предложить сразу исправление в виде pull request на GitHub или там патч в Gerrit. Мейнтейнеры открытых проектов работают над ними в свое свободное время за бесплатно, уважайте их труд.


    1. fougasse
      16.12.2021 19:47

      Очень смелое утверждение про время и бесплатность. Доказательств у вас, конечно же, есть достаточно?


      1. sshikov
        16.12.2021 19:54
        +2

        Очень, очень. Сильное обобщение, и скорее всего неверное.


      1. KanuTaH
        16.12.2021 20:04
        +5

        Есть определённая статистика, да.


      1. Wesha
        17.12.2021 07:13
        +3

        Ну вот я, например, мейнтейнер свободного проекта и делаю это бесплатно, в свободное время. И это не фигура речи.


      1. Lure_of_Chaos
        17.12.2021 18:36

        Хм, ну отчего же. Проверить и принять патч куда менее трудоёмко, чем самостоятельно выяснять и исправлять. Наверное, лучше, когда своё время и деньги потратит другой, и по "доброте душевной" предложит готовое решение, которое от вас не будет стоить почти ничего.


      1. Semy
        19.12.2021 00:26

        Есть личный опыт. Процентов 90 коллег по этому (международному) проекту были именно "в свое свободное время и за бесплатно". Остальные имели либо гранты, либо пожертвования, но все же имели основную работу, и только единицы были full-time.


    1. Bobovor
      16.12.2021 20:13
      -12

      Никогда не мог читать эту фразу иначе, как "уважайте меня за то что я делаю хрень".

      Нет.

      Терпеть, сожительствовать и принимать - да. Уважать - нет.
      Эта фраза пахнет оголтелым коммунизмом из капиталистических страшилок 50-60 годов, где есть некий вася, который ничего не может, но претендует на такие же блага (в данном случае уважение) как некий петя, который может и умеет.


      1. KanuTaH
        16.12.2021 20:18
        +10

        Если петя может и умеет, то что ж не делает? Пока от пети вместо дел одни претензии к васе, который что-то делает и дает пете пользоваться сделанным бесплатно и без ограничений.


        1. Bobovor
          16.12.2021 20:22
          -6

          Это строится на 2х допущениях.

          1. Вася делает то, что кому-то нужено.

          1. Петя этим пользуется.


          1. KanuTaH
            16.12.2021 20:27
            +13

            Samba - это весьма популярный проект, я бы сказал. Это как с OpenSSL - пользуются буквально все, а после истории с heartbleed оказалось что делают его три с половиной человека на $2K пожертвований в год, какая неожиданность. И рассказчики про вась с петями немедленно нарисовались, а как же.


            1. MAXH0
              16.12.2021 20:54

              Что поделать... За добро, конечно, большинство. Но зло лучше организовано...


            1. Mingun
              17.12.2021 20:27
              -2

              Интересно, а эти три с половиной человека пытались привлечь побольше народу? Ну хотя бы объявление вывесить на главной сайта и в Readme? Или как никто не ругал, так грудь колесом, а как пальцем тыкнули, так сразу я не я и вообще пилите сами?


    1. Mingun
      17.12.2021 20:22
      +1

      И тем не менее уже готовые PR даже всего в одну строчку висят годами, даже уже зааппрувленные людьми с правами мерджить (и это не единичный пример). Вот, кстати, завтра как раз годовщина, надо опять пингануть. Вы вот правильно сказали, что уважать можно за труд, только вот что-то этого труда-то и нет...


  1. vvadzim
    16.12.2021 20:05
    +17

    Основная проблема не в том, что люди проекты смертны, а в том что закрытые проекты внезапно смертны. Умирает фирма, или решает закрыть проект - и вы остаётесь с бинарниками. Хотя мне по молодости было прикольно с бинарными патчами играться. Договора на поддержку не спасают. С открытым проектом шансы хоть какие то, они как-то дольше дохнут. Инерция у них что ли больше.


    1. Vasyutka
      16.12.2021 23:05
      +7

      вот да. открытый код - вообще не про "твори добро по всей земле - да еще 1000 глаз вам в помощь". Это вообще про другое - уменьшение рисков "смерти" мейнтейнера, внедрение открытых решений в существующий бизнес с в общем-то простой целью заработать впоследствии на его саппорте и/или подписке. В общем что-то сродни пиратских копий аудиокассет/дисков в 90х - потом просто собирать с концертов. Не понятно почему у автора пригорает.


      1. Lure_of_Chaos
        17.12.2021 18:43
        +4

        Кстати, да, спасибо. Открытостью решается именно тупиковая в закрытом софте ситуация "собаки на сене", когда софт или умер (разрабы забросили, обанкротились и т.д.) или зомби(софт вроде бы под разрабами, но его не развиваю), но взять под своё крыло мешает лицензия. Конечно, далеко не факт, что это будет (отчего у ТС и пригорело), но хотя бы не запрещено.


        1. Mike-M
          18.12.2021 03:04

          Точно.
          Классический пример — Punto Switcher под крылом Яндекса.
          Последнее обновление — 07.02.2019.


          1. Mingun
            18.12.2021 13:01

            А зачем ему обновляться? Я даже не последнюю версию использую и обновляться не собираюсь, потому как в новых версиях только какого-то рекламного барахла добавили.


            Версия 4.4.2 от 13.03.2018
            сборка 334

            Работает, как часы


            1. Mike-M
              18.12.2021 14:43

              Как часы, говорите?

              1. Punto Switcher до сих пор не умеет переводить в правильную раскладку такие общепринятые слова как UEFI, .pst, FPS, LED, UI, firmware и еще нескольких дюжин.
              2. Нет возможности экспортировать список этих слов для оперативного импорта после переустановки программы или на другом ПК.
              3. Нет даже элементарной сортировки списка этих слов, чтобы исключить повторное внесение тех же элементов списка.
              4. Некоторые из этих слов не обрабатываются вообще, другие обрабатываются не во всех приложениях.
              5. Автозамена не всегда срабатывает в Word.
              6. После многодневного использования режима hibernate Punto Switcher начинает работать вообще непонятно как.

              В любом случае, проект не обновляющийся больше года, — мертвый проект. И место таким проектам, на мой взгляд, на открытых площадках типа GitHub.
              Наверняка найдутся желающие поддерживать, в целом, хорошую программу.

              Если Яндекс поступит так со своим Punto Switcher, то компания, думаю, ничего не потеряет. Наоборот, многие скажут «спасибо!», и уважение аудитории к компании от такого подарка только повысится.

              BarakAdama, просьба передать это ответственным за принятие решения лицам.


  1. 1fid
    16.12.2021 22:54
    +5

    Первая проблема, описанная в вашем письме, поправлена 5 лет назад https://github.com/samba-team/samba/commit/caff67082a22b4b5250eb73b09e57bb9ab99c346

    То есть 1000 глаз всё таки видят и даже правят баги, и опенсорс не так плох как вы описываете. Скорее дело в том, что ребята редко заглядывают в багзиллу.

    UPD а, так этот коммит и правит баг из багзиллы. Но другой баг, внесенный не вами. Выходит, что у ребят бардак в трекере, и ваш репорт просто-напросто потерялся.


  1. Koval97
    17.12.2021 06:07
    +1

    @Andrey2008 Не вы ли тут уже сотню раз объясняли, что в memset опасно передавать sizeof only, потому что оно считает размер первого элемента массива, а не всего массива. Попахивает, что разработчики по старой памяти из более высокоуровневых языков так пишут, а оно работает здесь немного с нюансом.

    Теперь я прекрасно понимаю, откуда у начальника на моей первой работе была привычка определять предкомпиляцией размеры массивов и буферов (defined buffer size). Полезная практика, когда нужно передать не количество элементов, а размер в байтах. Оно и понятно, всё таки он игры делал под Windows 95/98 и после на заре 2000-х.


  1. svr_91
    17.12.2021 10:06

    Вызовы этих memset компилятор удалит, и приватные данные будут продолжать находиться в памяти

    Видел гдето интересное обсуждение, а есть ли вообще смысл в "безопасной" очистке данных? Тоесть получается, что данные все равно какуюто часть времени пробыли открытыми, какая разница, удалят их потом или нет? Это с человеческой точки зрения есть разница между секундой и минутой (да и то не всегда), а с точки зрения компьютора в чем разница? Мне кажется, атаку можно придумать и на первый случай, когда ничего не очищается (снять в какойто момент времени дамп памяти и неспеша его просмотреть), так и на второй (снимать дампы памяти по чуть-чуть и смотреть на те данные, которые живут недолго). Или вообще поставить breakpoint на безопасный memset, и все пароли будут как на ладони :)


    1. kovdan01
      17.12.2021 10:21

      Не специалист, но сделаю предположение. Ваш процесс рано или поздно завершится, и его место в оперативной памяти сможет занять кто-то другой, и он сможет читать данные, оставшиеся "по наследству". От этого, думаю, и защищаются.


      1. mayorovp
        17.12.2021 10:35
        +1

        Ну нет, "по наследству" между процессами ничего не передаётся, ОС не позволяет.


        1. kovdan01
          17.12.2021 12:39

          Спасибо! Люди на форумах и в блогах действительно говорят, что и в Linux, и в Windows страницы памяти зануляются перед передачей другому процессу. Но я не смог найти никаких "официальных" подтверждений этому (скажем, статей на kernel.org или MSDN). Подскажите, пожалуйста, где можно найти системное изложение темы? Хочется иметь какое-то подобие документации, с которой можно сверяться и на которую можно ссылаться.


          1. mayorovp
            17.12.2021 12:45

            Это настолько общепринятое поведение, что я не уверен что оно его вовсе надо указывать. Но можно увидеть подтверждение, например, вот тут: https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc


      1. Wesha
        17.12.2021 11:04

        Совершенно верно. Когда компьютер были однозадачными, а данные ходили по Интернету незашифрованными, память никто не чистил. Были, в частности, функции malloc (memory allocate, "дайте мне памяти, какая бы ни была") и calloc (clear and allocate, "дайте мне памяти, заполненной нулями"), и вот в первом случае Вы и получали блок, заполненный тем, что в него клала предыдущая пользовавшаяся им программа. Это было время непуганых идиотов юзеров. А потом — червь Морриса, эксплоиты с переполнением стека, и всё заверте...


        1. Lure_of_Chaos
          17.12.2021 18:54

          Рискуя быть заминусованным, выскажу предположение, что с развитием абстракций (языков без прямого доступа к памяти, в т.ч. интерпретируемых, скриптовых), данное действие становится всё сложнее до невозможности.

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

          И это уж не говоря о требуемом изначальном уровне доступа. Я вспоминаю истерию по поводу Meltdown\Spectre, а реально много ли было бед из-за них? Возможно, я мало читаю, но не слышал.

          Отчего делаю вывод: пусть лучше мой софт будет уязвим для хакеров выше скрипткидди, но я сделаю его лучше (например, быстрее), чем я параноидально обмажусь всеми проверками, которые мне, возможно, ещё и свинью подложат.


          1. Semy
            19.12.2021 00:42

            данное действие становится всё сложнее до невозможности.

            Есть люди, которым это под силу. А значит, опастность существует и игнорироваться не должна.

            По поводу Meltdown\Spectre, часто очень сложно определить каким способом утекла некая информация (например, приватный ключ), если она не передавалась в открытом виде. Поэтому, тут тоже достаточно самой возможности, что бы начинать беспокоиться. Тем более, что рабочие экплоиты были продемонстрированы - это не какая то мифическая возможность.


    1. IkaR49
      17.12.2021 10:27
      +2

      Абсолютно любой замок можно вскрыть или сломать. А раз так, то зачем они вообще нужны? Вы готовы никогда не закрывать дверь своей квартиры?


      1. Lure_of_Chaos
        17.12.2021 18:58
        +1

        Кстати, практика подсказывает, что да, можно. Однако, никогда не знаешь, будет ли одномиллиардный шанс именно твой, когда кто-то зайдет в твой подъезд, зайдёт на твой этаж, дёрнет твою ручку и твоя квартира откроется, являя вкусную плазму, топовый ноут и $1000 прямо на тумбочке для жены, а то ещё и саму жену на "закуску"

        Так что всё же лучше закрывать. Хоть на 1 замок, не на 10, но чтоб войти было сложнее, чем просто нажать на ручку...


        1. IkaR49
          17.12.2021 19:45

          Как подсказывает практика, то зайдет к вам не случайный человек с улицы, а сосед-алкоголик.

          А количество замков уже зависит от того, что вы прячете за дверью, и как много человек об этом знает.


        1. Wesha
          17.12.2021 21:03

          Так что всё же лучше закрывать. Хоть на 1 замок, не на 10, но чтоб войти было сложнее, чем просто нажать на ручку...

          "Мне не надо бежать быстрее медведя, мне надо бежать быстрее тебя" (c)



  1. MinimumLaw
    17.12.2021 10:50
    -9

    @Andrey2008, при всем уважении к Вам и вашей компании, все же считаю необходимым напомнить тезис о том, что Хабр - не жалобная книга. Тем более, в ситуации с открытым ПО. Со стороны выглядит просто великолепно. Это вы 9 лет знаете о существовании ошибки, знаете пути их исправления, и... Кроме как жаловаться ничего не делаете.

    А по сути, @Lure_of_Chaos чуть выше вполне разумно высказался. Мне особо добавить нечего. Разве что посокрушаться. Давно собираюсь написать статью об эволиционном развитии программного кода и о том, что эволючионно почти всегда выживает тот, кто обеспечивает массовость, пусть и ценой короткой жизни. Отличное было выступление Михаила Никитина на "УПМ-7". Так и подбивает повторить, но применительно к коду. Даже ченовик давно лежит. Только вот меня постоянно упрекают в том, что демагог. И мои аналогии ничего не доказывают. Потому и двигается данная статья очень и очень медленно.

    По сути мы на одной стороне. Что PVS-Studio, что Rust, что MISRA и прочие стандарты... Все они про надежность и безопасность. Но увы. О безопасности и надежности вспоминают ровно в тот момент, когда под угрозой оказывается массовость воспроизводства и скорость вывода итогового на рынок. Или (опять же строго эволюционно) или в очень нишевых областях. Тех областях, которые не интрересны массовому рынку по причине очень малого питания. Мне повезло (???) работать в одной из таких областей. Но я прекрастно понимаю почему в других местах совершенно противоположный подход к качеству кода. Не важно открытого или закрытого.

    Подводя итог скажу лишь одно. Вы делаете очень важную работу публикуя типичные ошибки. Отдельно спасибо за оформленные баг-репорты к открытым проектам. Но точно не стоит писать статьи типа этой. Тут полный спектр всякого. От личной обиды (мы нашли и сказали, а нас игнорят) до ошибки выжившего (вы же проверяете и закрытый код и в курсе того, как там дела обстоят). А жизнь... Жизнь она всегда несправедлива...


    1. Andrey2008 Автор
      17.12.2021 11:22
      +6

      Эээ... это какое-то Ваше восприятие статьи :). Это не жалоба. Это фиксация примера, что открытость проекта сама по себе почти ничего не значит и борьба с вредным мифом. Личная обида? Вообще мимо. Я ржал, когда я понял, что за уведомление я получил :). Но раз испытал лёгкий шок, решил его зафиксировать в виде заметки.


      1. MinimumLaw
        17.12.2021 12:04
        +2

        Что делать. Не все одинаково прочитанное воспринимают.

        На самом деле ваш цикл статей очень хорош. Сколько потенциальных ошибок copy-paste было не допущено ровно потому что вы всегда с них начинаете! Я даже посчитать не возьмусь. А ведь именно разработчику их просто не видно. Мозг сам себя обманывает выдавая желаемое за действительное. И инструмент безусловно хорош.

        Что до мифа.... Ну не знаю. Каждый серьезный RCE в ядре Linux ставит под угрозу Android. Хотя, казалось бы Google, разработчики на зарплате в хорошем количестве и с хорошей зарплатой. Да не один год по времени уже. Можно было или вычистить или переписать. Я бы не взялся ни опровергать этот миф, ни вступаться за него. Открытый код уже неоднократно доказал свое право на существование. Как и закрытый. Не мне судить кто из них более качественный. Мое дело свой код качественно писать. И даже шире - свои изделия качественно проектировать. Ибо код - это только винтик в огромном механизме изделия, а чаще даже комплекса изделий.

        Потому ничего личного. С нетерпением жду следующую статью.


        1. Andrey2008 Автор
          17.12.2021 12:19
          +1

          Спасибо