Качество кода Open Source впервые превзошло качество кода проприетарных проектов на C/C++

    Вчера организация The Linux Foundation объявила о запуске проекта Core Infrastructure Initiative (CII) для финансовой поддержки бедствующих Open Source проектов вроде OpenSSL, который в последние годы жил на пожертвования $2000 в год.

    В официальном пресс-релизе The Linux Foundation подчёркивает, что необходимость финансовой поддержке совершенно не связана с низким качеством кода OSS, совсем наоборот. Свободное ПО превосходит проприетарный софт по качеству кода и по безопасности. В подтверждение этого The Linux Foundation сослалась на последнее исследование Coverity Open Scan, результаты которого опубликованы 15 апреля, через неделю после публикации информации о баге Heartbleed.

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

    В этой ситуации важно понимать, что качество кода СПО действительно объективно превосходит качество кода проприетарного софта. Условно говоря, если бы код OpenSSL не был открыт, мы могли вообще никогда не узнать об этой уязвимости.

    Компания Coverity постоянно проводит статичный анализ кода проприетарных и Open Source проектов по заказу Министерства внутренней безопасности США. Эта работа считается общепризнанным стандартом оценки качества кода.

    Последний отчёт 2013 Coverity Scan Open Source Report составлен на основе анализа 750 млн строк кода из 741 проекта Open Source на C/C++, в том числе NetBSD, FreeBSD, LibreOffice и Linux, а также анонимной выборки из проприетарного корпоративного ПО на том же C/C++.



    Главный вывод — впервые за восемь лет проведения таких исследований качество кода свободных проектов на C/C++ превысило качество кода проприетарных проектов. При том, что стандартом высокого качества считается не более 1 ошибки на 1000 строк кода, программное обеспечение Coverity определило в открытых проектах 0,59 ошибки на 1000 строк, а в проприетарных — 0,72.



    «Open Source превзошёл по качеству проприетарное ПО в проектах всех размеров, что ещё раз подчёркивает твёрдую приверженность открытого сообщества к тестированию при разработке», — сказано в пресс-релизе Coverity.

    Возвращаясь к инициативе CII, The Linux Foundation объясняет, что проблема не в низком качестве Open Source, в возросшей сложности ПО в последние годы, необходимости поддерживать всё больше платформ. Нужны дополнительные ресурсы и поэтому, вот почему они привлекают финансирование.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 55

      +31
      Честно говоря, не сильно бы верил этой статистике. В том смысле, что я крайне сомневаюсь, что:
      1) у проприетарного софта такой низкий процент ошибок;
      2) качество кода и архитектура проприетарного софта приближается к открытому ПО.

      Большинство проприетарного кода, виденного мною, было полным говном. Потому как бизнес диктует писать быстро, просто, а новые фишки вешать абы как на то, что уже есть. Естественно, крупные компании типа Google, Яндекс, Facebook, etc. могут позволить себе основательно подойти к написанию ПО, но у них и денег хватает, и OpenSource'а хватает.

      А OpenSource — это проекты, которые люди спокойной пишут в свою удовольствие, стараясь все качественно продумать. И проверяется в конечном итоге этот софт куда большим числом разносторонних специалистов, чем какая-нибудь золотая софтина в небольшой компании.
        +8
        Немного конкретизируем. Много ли опенсурсных GUI проектов, разрабатываемых чисто энтузиастами вы знаете, которые могут похвастаться качеством, юзабилити и стабильностью? Я много сталкивался с опенсорс GUI, но как правило юзабилити и продуманность лучше у коммерческого софта, чем у аналогов опенсорсных, поскольку программисты без участия дизайнеров и архитекторов интерфейса не очень хорошо умеют решать вопросы дизайна и юзабилити.

        В общем опенсорс мне лично больше нравится в части серверного ПО, а с GUI опенсорсом что-то так себе ситуация.

        Поэтому не весь опенсорс одинаково полезен, но конечно есть масса примеров, когда опенсурс GUI продукт был лучше коммерческих аналогов. Ещё раз упомяну — про серверное ПО я тут не говорю.
          +1
          > Много ли опенсурсных GUI проектов

          Кстати, замечательная постановка вопроса. Цимес в том что как раз большая часть свободного софта не имеет GUI, и это замечательно, потому что в то время как в коммерческом ПО GUI очень часто притягивается за уши (кто же купит программу без скриншота?) и получается либо окно с кнопкой (которое приходится обвешивать всякой ерундой иначе скучно), либо пульт управления боингом с десятком вкладок, с CLI работается на порядок эффективнее — нужные опции мгновенно ищутся в man или --help, а то что сложно запомнить скриптуется один раз на всю жизнь. Да и в любом случае скриптуется, собирается в конвееры, работает из cron, по ssh и т.д.

          > вы знаете, которые могут похвастаться качеством, юзабилити и стабильностью?

          Ну про стабильность можно даже не заикаться, качество — интегральная характеристика под которой не совсем понятно что в данном случае понимается, а вот юзабилити про которую идёт речь выше — штука очень субъективная. Многим будут удобнее интерфейсы написанные разработчиками под себя, а не под широкую аудиторию. Поэтому лично для меня ответ на ваш вопрос — «все, что я знаю, могут похвастаться».

          > без участия дизайнеров и архитекторов интерфейса

          Не нужно забывать насколько сомнительные решения зачастую получаются с их учатием. HIG, ribbon, плитки win8, некоторые макосевские решения, продолжать можно долго.
            +11
            Ну вот мне бы хотелось иметь нормальный Офис (Микрософтский на порядки лучше). Нет его. Нормальный графический редактор (Фотошоп божественно далёк от Гимпа). Его тоже нет.
              +2
              Для моих скромных нужд, что гимп, что ЛО — гораздо удобнее. Собственно, даже под макосью их использую.
                +2
                Я его тоже под Макосью использую, но это ужас, а не офисный пакет, кривой, косой, непродуманный. Мне есть с чем сравнивать, я и с Офисом и с ЛО (и его предшественниками) работаю более 10 лет.
                  0
                  А назовите тогда прямой и продуманный.

                  Перешел на OpenOffice, ибо находил (и нахожу) его куда более удобным, чем офисный пакет от MS. А вот с LibreOffice так и не подружился: вроде то же самое, но какие-то косяки (в моем восприятии) всплывают тут и там.
                    0
                    А назовите тогда прямой и продуманный.

                    Вам же написали, что «Микрософтский на порядки лучше».
                –1
                Вот насчет Гимпа — если вы не являетесь профессиональным дизайнером — вы не правы. Мне он помогает делать все, вплоть до приличного цветоделения (конечно, при использовании плагинов). RAW от большинства моделей современных камер тоже поддерживается плагинами на ура. Удобство работы — это исключительно вопрос привычки. Лично у меня не было курсов по фотошопу, от того я не ощущаю интерфейс гимпа убогим. Наоборот: в нем мне все логично и понятно.
                Насчет офиса — недавно проскакивал пост по поводу того, что это тоже вопрос привычки. Однако, в данном вопросе лично я не силен, и потому дискутировать не буду.

                P.S. И да, нынче майкрософтовский офис стоит недорого, от того на ноутбук жены я его с удовольствием купил, дабы не смущать ее аналитический разум — для нее это инструмент, а не татами для борьбы с ним.
                  +2
                  У меня тоже не было курсов по Фотошопу. Я пользуюсь тем и другим. Гимп — простите, тихий ужас. Отстаёт по всем параметрам — функционалу, удобству интерфейса. В Гимпе нередка ситуация, когда контролы диалога не помещаются в окне и его приходится растягивать — куда это годится?
                    +2
                    Не буду с вами спорить. Однако, я не могу себе позволить фотошоп. Он мне не принесет прибыли, даже косвенной. А гимп — очень даже, потому мне его функционала вполне хватает.
                    Насчет дизайнерских факапов типа диалогов недостаточного размера соглашусь — да, бывает. Однако работать лично мне не мешает.
                      0
                      Скорее, я говорил про то, что OpenSource сегодня вполне можно использовать в нормальной работе, пусть и с некоторым дискомфортом для некоторых. TCO для «домашнего офиса» не имеет себе равных, а юзабилити медленно но верно движется к лучшему. Скажем, года до 2006 я не мог себе в целом позволить любой из существующих на тот момент дистрибутивов, как настольную систему. Последние лет 6 — мне неудобно в интерфейсе windows (XP, 7, 8, 8.1). Мне кажется, что это вполне себе показатель прогресса.
                      0
                      Adobe позволила бесплатно скачать лицензионный Photoshop CS2.
                      www.adobe.com/cfusion/entitlement/index.cfm?e=cs2_downloads
                      0
                      > если вы не являетесь профессиональным дизайнером — вы не правы
                      А если являетесь?
                        0
                        Спросите у профессионала :) я не могу решать за него.
                          +1
                          Как можно рассуждать о профессиональном инструменте не будучи профессионалом?
                            –2
                            Насколько я понимаю, GIMP является OpenSource. Упоминаний о «профессиональном инструменте» я в его описании не нашел.
                              0
                              Фотошоп является профессиональным инструментом для ряда профессий. Незаменимым инструментом.
                                –1
                                Не собираюсь с вами спорить. Я описывал точку зрения любителя, о чем и указал в посте, использовав словосочетание «если вы не являетесь профессиональным дизайнером». Хотя лично мой опыт (в различных сферах, отнюдь не только ПО) показывает, что термин «незаменимый» как правило, означает «аналог неизвестен» либо «слишком дорог» либо «не имеет полного функционала». В данном случае мы имеем третий вариант, однако полный функционал нужен отнюдь не каждому.
                      +1
                      Думаю проекты такого рода очень трудоемки в плане кучи мелочей, которые, к тому же, мало интересны программисту. Тем не менее Blender можно привести в качестве примера.
                  • UFO just landed and posted this here
                      0
                      >Я много сталкивался с опенсорс GUI, но как правило юзабилити и продуманность лучше у коммерческого софта, чем у аналогов опенсорсных, поскольку программисты без участия дизайнеров и архитекторов интерфейса не очень хорошо умеют решать вопросы дизайна и юзабилити

                      Вы странным образом отождествляете «опенсорс» и «без участия дизайнеров и архитекторов».

                      А вот расскажите нам про «юзабилити и продуманность», скажем, браузеров. Очень даже хороший пример GUI приложения. Причем приложения куда более востребованного, чем офис или пакет для профессиональной графики. Как там дела у проприетарных браузеров? ;)
                        0
                        Браузеры — плохой пример. Я специально указал на случай браузеров:
                        … но конечно есть масса примеров, когда опенсурс GUI продукт был лучше коммерческих аналогов.

                        Браузеры кстати вообще странный продукт, т.к. абсолютно не понимаю, на чём зарабатывают разработчики.

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

                        По сути закрытые браузеры — это Opera и IE, но они бесплатны (IE бесплатен для windows и не доступен для других платформ, поэтому можно говорить о бесплатности), так же как и самые более популярные опенсурсные chrome и его подвиды, firefox.

                        Сhrome (и подвиды) и firefox лично мне больше нравится, чем Опера и IE. Получается качество opensource продуктов в данном случае и по моему мнению лучше качества закрытых браузеров. Хочу обратить внимание, что это только моё личное мнение и хотелось бы без холивара.
                          –1
                          У ие сейчас все довольно неплохо. Больше пропитанных не знаю.
                        +6
                        Ну лично по себе замечал и это отчасти психологический эффект. Когда пишешь код, который ни кто потом не будет смотреть и который откомпилируется в бинарник, расслабляешься. А вот когда делаешь что-то опенсорс, сразу представляется множество глаз, которые изучают твой код и некоторые просто качают головой, а некоторые вообще делают facepalm. Это дисциплинирует и заставляет все тщательно продумывать и перепроверять перед коммитом.
                          0
                          Code review, тестирование? Нет?
                          –2
                          Шедевральная статья. Весь мир пытается хоть как то починить результаты отличного качества OpenSSL чертыхается и патчит сервера, приложения и оборудование.

                          А в это время товарищ Джим Землин как директор Linux Foundation звонит крупнейшим вендорам включая Microsoft и VMware и слёзно просит дать денег на аудит безупречного кода OpenSSL. Все ведь знаю что этот код явно лучше проприетарщины всякой ибо «писали его обезьяны».

                          www.xakep.ru/post/62334/default.asp

                          www.cnet.com/news/tech-titans-join-forces-to-stop-the-next-heartbleed/

                          Это какая то ослепительная победа, просить денег у проприетарщиков чтобы починить свободный код, который если верить рассказам должно было починить сообщество. Он ведь открытый код? Но почему то с 2009 года никто его не починил. Явно видно что Coverty и Британские ученые никак не связаны. :)

                            0
                            А я думал ссылку сбросить, а вы уже тут :D
                              +2
                              Во-первых, по-вашему, если качество кода openssl плохое (что, кстати никогда секретом не было), означает, что у всего опенсорса качество тоже плохое? Как частный случай влияет на общую картину?
                              Во-вторых, что, по-вашему, является сообществом и почему в него не могут входить корпорации?
                                –3
                                Если товарищи не смогли с 2009 года исправить маленький но архиважный и критичный компонент которым является OpenSSL то с чего вы решили что с остальным кодом дело обстоит сколько нибудь лучше?
                                  +2
                                  А почему этот баг лично вы не смогли исправить? Можно ли из этого сделать вывод, что качество кода в MS не лучше?
                                    0
                                    А с чего вы решили что это моя задача исправлять код OpenSSL? Мне за это зарплату не платят.

                                    Как вам пришла в голову мысль что у MS качество кода хуже потому что сотрудник MS не исправил код OpenSSL?

                                    Где же сообщество из миллионов глаз которое должно всё поправить?
                                      0
                                      > А с чего вы решили что это моя задача исправлять код OpenSSL?

                                      Ну вы же считаете, что аудит и написание кода OpenSSL — это задача всех программистов, а не только команды его разработчиков.

                                      > Как вам пришла в голову мысль что у MS качество кода хуже потому что сотрудник MS не исправил код OpenSSL?

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

                                      > Где же сообщество из миллионов глаз которое должно всё поправить?

                                      Кому должно? Кто вам обещание давал, что ни один баг не проскочит? И кто, по-вашему, входит в сообщество?
                                    +7
                                    Сначала на OpenNet, теперь и тут.
                                    1. Принципиально невозможно исправить ошибку, о которой не знаешь.
                                    2. С чего вы взяли, что качество кода OpenSSL — плохое? Вы этот вывод сделали на основании одной-единственной уязвимости?

                                    Незачем истерить.
                                      –1
                                      Жаль вы не читаете ничего перед тем как комментировать. Специально для вас я приводил ссылку. Real men never click?

                                      www.peereboom.us/assl/assl/html/openssl.html

                                      > С чего вы взяли, что качество кода OpenSSL — плохое? Вы этот вывод сделали на основании одной-единственной уязвимости

                                      С 2009 года о проблемах кода OpenSSL говорят на каждом углу. Всем уши прожужжали на конференциях.

                                      Завели твиттер с ежедневными образцами ужасающего кода OpenSSL.

                                      twitter.com/OpenSSLFact

                                      А воз и ныне там. Такие как вы считают что качество кода OpenSSL не плохое. Потому и имеем в OpenSSL 0.x — 43 уязвимости, а в OpenSSL 1.x уже 30.

                                      > Принципиально невозможно исправить ошибку, о которой не знаешь

                                      Откройте для себя аудит кода. Может после того как Microsoft и остальные оплатили аудит кода OpenSSL большинство ошибок будет найдено и исправлено.
                                        +1
                                        Поясните свой комментарий

                                        > Если товарищи не смогли с 2009 года исправить маленький но архиважный и критичный компонент которым является OpenSSL то с чего вы решили что с остальным кодом дело обстоит сколько нибудь лучше?

                                        Вы считаете, что команда openssl пишет весь открытый код в мире? Или что находить и исправлять дыры в openssl — святая обязанность всех программистов из других opensource проектов?
                                • UFO just landed and posted this here
                                +8
                                Слово «качество» имеет много значений применительно к ПО, в данном случае речь лишь о количестве «ошибок» найденых системой «static code analysis» от Coverity.
                                  +1
                                  Если такая формулировка, зачем же разделять качество на количество ошибок и остальные показатели? Вроде в заголовке громко заявлено о качестве. Правильней говорить, кто как относится к качеству. Для кого-то качественный код — код не содержащий ошибки, для кого-то совокупность кода и ресурсов, удобная для использования. Для кого-то сочетание безошибочного кода, качество ресурсов и продуманности. Если речь в посте о другом, давайте так и писать «Количество ошибок в коде Open Source впервые стало ниже проприетарных проектов на C/C++».
                                  +4
                                  Есть мнение, что эффект наблюдается за счёт тенденциозности выборки.
                                  Американских сексотов скорее всего волнует довольно специфический софт, используемый в системах связи и, в меньшей степени, электронного документооборота.
                                  Ядра Линукс и *BSD, некоторые GNUсные тулзы, вероятно всякие апачи с астерисками — это из опенсорсного, ну и плюс их платные аналоги.
                                  Опенсорсные проекты компилируются и, главное, юзаются на чём попало. У проприетарных прог список поддерживаемых платформ, как правило, на порядки скромнее.
                                  Естественно, почти миллиард строк кода проверялся машинно, статическим анализатором коверити. Который вылавливает довольно специфические классы ошибок, в частности, ругается на Undefined Behaviour. Ну, банальный пример — int vs size_t или там размер int и void*.
                                  Так вот, как раз написание кода под зоопарк платформ первым делом отучает полагаться на то, что UB сработает неким ожидаемым образом.
                                  Подозреваю, что существенная часть выявленных «дефектов» в проприетарном софте как раз отсюда.
                                  При этом формально всё верно, так как часто это действительно серьезные дефекты, в том числе потенциально ведущие к дырам в безопасности (ну, например, адресная арифметика в int на 64-битных системах может позволить злоумышленнику залезть в неположенную область памяти через переполнение).
                                  Но делать глобальные выводы о качестве… Код в таких проектах пишут одни и те же люди, сначала за деньги на работе, потом дома для души и «как надо». С чего бы качество серьезно отличалось?

                                    +2
                                    > сначала за деньги на работе, потом дома для души и «как надо». С чего бы качество серьезно отличалось?

                                    Есть основания полагать что именно с этого.
                                      +1
                                      >Код в таких проектах пишут одни и те же люди, сначала за деньги на работе, потом дома для души и «как надо». С чего бы качество серьезно отличалось?

                                      С того, что когда «дома, для души и как надо», то над тобой не стоит эффективный менеджер, который твердит «да хрен с ним, лепи как есть, в следующем релизе исправим, у нас сроки горят!». Ну а следующий релиз, как известно, никогда не наступает, на смену нынешнему приходит следующий нынешний.
                                      +1
                                      а я бы не сильно верил этой статистике не только и не столько потому, что видел много говнокода и в проприаритарных и в открытых проектах. (в одном очень популярном открытом продукте несколько лет шло выставление битового флага сложением). Ревью делается по заказу правительства, а значит ревьювят не все подряд, где куче говнокода, а то, что используется, или может использоваться провительственными учереждениями: ос, офис, безопасность — там другие требования к коду.
                                        +2
                                        Попробую пояснить в отношении Coverity, так как сам являюсь пользователем и коммерческой и бесплатной версий.

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

                                        Что касается бесплатной версии, то это продукт Coverity Scan. Любой открытый проект на C/C++ или Java может у них зарегистрироваться и проводить анализ.

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

                                        Итого, по моему мнению, выборка всё же репрезентативна. От ошибок не застрахован никто, но в проприетарщине количество костылей на тыщу строк всё же повыше будет. Ибо «давай-давай». Вспомните какие дырищи находят в винде, думаю, кол-во уязвимых систем сопоставимо с таковым у openssl, но так громко не кричат, попривыкли-с.
                                          0
                                          >Ибо «давай-давай».
                                          Никогда не понимал этот довод.

                                          Будто open-source не пишут в таких же условиях? Значительная часть его пишется теми же фирмами, что и проприаритарное ПО.

                                          «Свободное» ПО пишут либо за деньги и там «давай-дайвай», либо в свободное от заработка время. Там может и качественно, но явно медленнее.

                                          Насколько действительно репрезентативна выборка судить не берусь, но сомнения остались
                                        –1
                                        а я бы не сильно верил этой статистике не только и не столько потому, что видел много говнокода и в проприаритарных и в открытых проектах. (в одном очень популярном открытом продукте несколько лет шло выставление битового флага сложением). Ревью делается по заказу правительства, а значит ревьювят не все подряд, где куче говнокода, а то, что используется, или может использоваться провительственными учереждениями: ос, офис, безопасность — там другие требования к коду.
                                          +9
                                          Жесть, говно ваше офф приложение хабра :( Извините за непреднамеренный спам.
                                          0
                                          а я бы не сильно верил этой статистике не только и не столько потому, что видел много говнокода и в проприаритарных и в открытых проектах. (в одном очень популярном открытом продукте несколько лет шло выставление битового флага сложением). Ревью делается по заказу правительства, а значит ревьювят не все подряд, где куче говнокода, а то, что используется, или может использоваться провительственными учереждениями: ос, офис, безопасность — там другие требования к коду.
                                            +7
                                            на другой коммент отвечал, это все оффициальное приложение хабра.
                                              –2
                                              Надеюсь, когда-нибудь движение OpenSource поймёт, что юзабельность кода на 80% зависит от качества документации, и только на 20% от качества самого кода. Соответственно, и времени на разработку/поддержку документации надо выделять уж никак не меньше, чем на создание и рефакторинг самого кода.
                                                0
                                                Код — уже документация :)
                                                  0
                                                  Вот пока OpenSource-программисты будут так думать, пользоваться результатами их трудов будут исключительно программисты. Пользователи же, которые код прочесть просто так не могут, покажут средний палец и уйдут на проприетарный продукт, что собственно и происходит в реальности.
                                                    0
                                                    И что здесь плохого? Количество пользователей — не самоцель, самоцель — эффективность и возможности софта. От количества пользователей эти характеристики никак не повысятся. Это сильно утрировано, но мысль должна быть понятна.
                                                      0
                                                      Идиотизм.
                                                      А ради кого тогда пишется софт, если не ради пользователей? Ради того, чтобы почесать свое эго?
                                                        +1
                                                        Пишется программистами для себя и таких же программистов :-)

                                              Only users with full accounts can post comments. Log in, please.