Opensource и качество — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м (Вирус — не вирус %% ⌘⌘)
Строка 119: Строка 119:
 
Частое заблуждение:
 
Частое заблуждение:
  
[[File:BadVirusGPL.jpg|300px]] [[File:WhiteFluffyBSD.jpg|300px]]
+
[[File:BadVirusGPL.jpg|250px]] [[File:WhiteFluffyBSD.jpg|300px]]
  
<small>И я уж молчу о том, как боятся AGPL</small>
+
...И я уж молчу о том, как боятся AGPL.
  
 
== Все забыли о появлении FSF и GPL? ⌘⌘ ==
 
== Все забыли о появлении FSF и GPL? ⌘⌘ ==

Версия 21:17, 2 декабря 2011

Автор

Виталий Филиппов
Дополнительный нижний колонтитул

Opensource и качество, или не плодите софт в неволе

Варианты названия:

  • Opensource и качество, или почему проприетарщина уныла
  • Opensource и качество, или «я в неволе не размножаюсь»
  • Opensource и качество, или софт в неволе не плодится!
  • Opensource Свободное ПО и качество, или не плодите софт в неволе.

Содержание

Тезисы

Почему так часто оказывается, что закрытое ПО имеет различные проблемы, и их так сложно, или вовсе невозможно, исправить? Причина кроется в изначальной модели бизнеса и цели разработки, которой является не создание качественного продукта, а продажи и зарабатывание денег на потребителях. Потребителю ни в коем случае не доверяют, исходники закрываются (а то сопрут!!!), не дай бог, навешивается реклама, DRM и руткиты, публичный багтрекер, конечно же, отсутствует, служба техподдержки инструктируется отвечать по шаблону, а в блогах тусуются позитивные заряженные веществами евангелисты, от которых ничего не добьёшься. Результат — ни решить проблемы, ни повлиять на дальнейшую жизнь проекта.

А теперь призыв — посмотрите в сторону OpenSource! Это же бесплатное решение многих проблем с качеством вашего продукта, а заодно, например, и многих ваших же проблем с качеством инструментов! Конечно, OpenSource тоже не должен пониматься как в карго-культе — «открыли исходники и качество резко возросло» — открытость должна быть в головах, а не на бумаге.

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

Информация о докладчике

Виталий Филиппов, ведущий веб-разработчик в компании CUSTIS. Также выступал на конференциях Highload-2009 (блиц-доклад), SECR-2009, РИТ-2010 (два блица: раз, два), ADD-2010, ADD-2011, DevConf-2011, WhaleRider-2011.

OpenSource
и качество, или не плодите софт в неволе %% ⌘⌘

Виталий Филиппов, CUSTIS

ПО? Качество? О чём это мы? ⌘⌘

  • О ПО, какое оно? Особенности, закрытое, открытое.
  • Типичное представление об OpenSource СПО.
  • Зоопарк свободных лицензий Elephant-red.svg
  • Свободное ПО и бизнес. Handshake icon.svg
  • Проблемы закрытого ПО
  • Свободное ПО и качество ↑↑↑

ПО - продукт особенный ⌘⌘

  • Бинарники и исходники
  • Постоянная работа с личными данными
  • Сильная завязка на платформы, форматы, протоколы
  • Необходимость поддержки
  • Часто — уникальность продукта
  • Сложность продукта ⇒ обязательное наличие БАГОВ!
  • И в то же время — простота сборки…
  • …и нулевая стоимость копирования.

Программы окружают нас ⌘⌘

  • Мобильные устройства
  • Авионика
  • Автомобили (ECU, сигналки)

Закрытое ПО ⌘⌘

  • Модель «производитель-потребитель»
  • «Лицензирование»
    • Отсюда — термин «пиратство». Однако пиратство подразумевает корабль, абордажные крючья, и, конечно же, море-окиян. Нелицензионное распространение софта столь же обоснованно можно назвать изнасилованием. (ц) кто-то
  • Закрытые лицензии: Вам Запрещено Всё
  • Отсюда следствия:
    • Недоверие к потребителю; потребитель тупой! (** а то что вы сами хотите чтобы он был тупой — ничего? мечта продажника: человек, который зашёл, увидел и купил, не думая)
    • Изощрённые способы защиты и монетизации
  • «Рыночная экономика», и почему она часто не работает
  • СЕРВИСЫ: худший (но честный) вид закрытого ПО

Типичное представление %% ⌘⌘

Halyava2.jpg

По возрастанию знания: ⌘⌘

  • Linux, Android
  • «Не для простых смертных»
  • Исходники, копилефт
  • RMS, FSF, вирус — не вирус

Но многое малоизвестно: ⌘⌘

  • OpenSource Свободное ПО
  • Свободное Некоммерческое
  • Как появилось свободное ПО?
  • Зоопарк свободных лицензий
  • Связь открытости и качества (???)

Что такое свобода? ⌘⌘

4 свободы:

  1. Использовать
  2. Изучать и модифицировать (требует исходники)
  3. Распространять
  4. Распространять модифицированное

НЕсвободные лицензии ⌘⌘

"Эта змея была выращена в неволе"

BredInCaptivity.jpg

НЕсвободные лицензии ⌘⌘

Shared Source
Приоткрыто «на посмотреть»
Freeware
«Free as beer». Можно распространять вирус :)
Shareware
Можно распространять, но нельзя свободно использовать.
Proprietary
«Bred in captivity»

Свободные лицензии ++ ⌘⌘

  • Гарантируют пользователю 4 свободы.
  • Public Domain: отказ от прав ** — CC0, Unlicense
  • Permissive: без доп. ограничений — MIT/Apache/BSD и т. п.
  • Weak Copyleft: запрет смены лицензии, кроме компоновки — LGPL, CeCILL-C
  • Strong Copyleft: запрет смены лицензии — GPL, CeCILL
  • Есть ещё сильнее — Affero GPL

Вирус — не вирус %% ⌘⌘

Частое заблуждение:

BadVirusGPL.jpg WhiteFluffyBSD.jpg

...И я уж молчу о том, как боятся AGPL.

Все забыли о появлении FSF и GPL? ⌘⌘

Burgui.png
MIT
PDP-10
Lisp-машины
FSF, 1985

Если GPL-вирус, то закрытые исходники вообще не размножаются (ц)

Семейство Creative Commons ⌘⌘

CC-BY permissive
CC-BY-NC некоммерческая ⇒ несвободная
CC-BY-ND без производных ⇒ несвободная
CC-BY-NC-ND NC+ND
CC-BY-SA хороший copyleft не для софта
CC-0 хороший Public Domain

И всё бы хорошо… %% ⌘⌘

…Но людская подлость нашла баги в этих свободах!

Баги в свободах ⌘⌘

  • TiVo
    • Кстати, не покупайте Motorola и Sony Ericsson!
  • Патенты
    • К счастью, не у нас
  • Законы, запрещающие некоторое ПО

Фикс: GPLv3.

Патенты %% ⌘⌘

И патентные тролли.

TrollFace.svg

M$ -> Barnes&Noble ⌘⌘

  • 6,339,780 расположение иконки статуса загрузки в зоне браузера, отображающей контент
  • 5,579,517 и 5,758,352 совместимость имён файлов, используемых текущей операционной системой и её устаревшими версиями
  • 5,652,913 хранение факторов доступа ввода/вывода в структуре данных общего пользования
  • 6,791,536 и 6,897,853 симуляция ввода от манипулятора "мышь"
  • 5,778,372 постепенная загрузка браузером изображений, включённых в электронный документ
  • 5,889,522 класс для создания виджетов со вкладками (средствами операционной системы)
  • 6,891,551 использование указателей для изменения размеров области выделения при выделении текста
  • 6,957,233 добавление заметок к нередактируемым документам

TiVo

Фирма TiVo «попала» и теперь чётко ассоциируется не с какими-то непонятными ТВ-приставками, а с несвободой программной обеспечения — блокированием загрузчиков. И хотя на самом деле блокирование придумали не они, применили к Linux’у его они одними из первых. Смысл в том, что исходники свободно распространяются, их разрешено модифицировать и собирать… Но толку от этого никакого нет, потому что в само устройство прошит ключик, которым если не подписать свою сборку, девайс откажется её запускать.

Загрузчики же любили блокировать производители мобильных телефонов и процессоров для мобильных телефонов. У кого был Siemens? Там были процы Qualcomm без аппаратной защиты памяти, и некий ключ, требуемый для разблокировки загрузчика — «S-KEY», который получался через лазанье по флешу (аппаратной защиты памяти-то нет). Также разблокировать можно было через использование Test Point — точки на системной плате телефона, подключённой к ноге конфигурации загрузки процессора. При замыкании её на массу процессор позволял загружаться не с внутренней памяти, а с помощью загрузчика, загружаемого по последовательному интерфейсу. Народные умельцы делали и то, и другое — до сих пор живы Сименс Клуб и база патчей и ELF-приложений http://patches.kibab.com/.

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

Для тех, кто не знает — Siemens, к которому применялись созданные сообществом доработки в виде «патчей» (изменений, вносимых в прошивку телефона) и «эльфов» (программ для телефона в родном формате, а не на Java) превращался в удобный смартфон, в своё время делавший почти всех, ибо смартфоны тогда были либо на убогом Symbian, либо на ещё более убогом Windows Mobile (Symbian хотя бы мог жить без вечных хард-ресетов, а винда — нет). Например, на S75v52 доступно 386 патчей и 111 эльфов. А что было бы, если бы руководство компании смогло поменять свои устаревшие взгляды и платформа была открыта?

Блокирование загрузчиков же продолжается и по сей день, хотя разные компании делают его в разной степени. У большинства даже заблокированные загрузчики всё равно разблокируются программно. Но есть и устройства, защита которых так и не взломана — среди них телефоны Motorola и некоторые Sony Ericsson. Хотя, может быть, моторола, будучи купленной гуглом, изменится к лучшему?

Note.svg Лично призываю всех бойкотировать телефоны и планшеты Motorola и Sony Ericsson! Учитывая, что они и по характеристикам далеко не лучшие, это не будет большой жертвой :)

HTC, например, наконец-то вообще объявила, что больше не будет блокировать загрузчики на Android-устройствах.

Ещё баги ⌘⌘

  • SaaS. Фикс: AGPLv3.
  • JavaScript. Фикс: распространять свободно.
  • Скрипты в целом. Фикс: LGPLv3.

Баги в лицензиях ⌘⌘

  • Связанные с конкретным законодательством.
    • Пример - хотя бы мы, Россия :) но и Европа тоже.
    • CeCILL: GPLv2, адаптированный к Европе и Франции.
  • Рекламные баги: BSD, PHP. Fix: FreeBSD, X11, Apache
  • «GPL + разрешение компоновки»
  • MPL, CDDL: «хитрые ограничения»
  • Clear BSD: явно не дают прав на патенты
  • Старые APSL (вообще несвободные)

Баги в лицензиях — разъяснение

  • Рекламные баги: BSD (Berkeley Inc) — в NetBSD 1997 было 75 штук, PHP («php» во всех названиях). Фиксы: FreeBSD, X11, Apache.
  • CeCILL: GPLv2, переписанная французскими юристами и адаптированная к французскому и европейскому вообще праву. Конкретика здесь — в области гарантий, области действия, и неупоминания «соответствующих законов». Есть небольшое подозрение, что и к нашим законам лицензия могла бы быть более применима, но вот незадача, для использования в русских судах лицензию нужно писать на русском :)
  • Есть лицензии «GPL + разрешили линковаться с проприетарщиной» — люди не вкурили LGPL.
  • MPL, CDDL: «хитрые ограничения», из-за которых та же фаерфоксина выпускает под MPL+GPL+LGPL. А именно, если вы поправите, то они могут использовать это в своих проприетарных «Larger Works» (ну нетскейп же); + разрешает перелицензировать бинари.
  • Clear BSD: явно прописано, что не дают прав на патенты.
  • Старые APSL: вообще несвободные. Центральный контроль, возможность отзыва, запрет личного пользования.

«Хорошие» лицензии ⌘⌘

  • ПО: AGPLv3, GPLv3, LGPLv3, Apache v2.
  • Public Domain: CC0.
  • Медиа: CC-BY-SA.
  • Лицензии для мнений/решений/лицензий (for works of opinion and judgment): CC-BY-ND.

OpenSource и бизнес

Свободное ПО и качество

Цель закрытого ПО — срубить денег. Цель свободного ПО — создать полезный продукт.

Не надо думать, что единственной целью создания закрытого ПО всегда является исключительно получение прибыли на продаже лицензий. Многие закрытые программы точно так же изначально создаются любителями своего дела и тоже с целью создания полезного продукта, на котором кроме того ещё и МОЖНО заработать. Проблема в том, что успешные компании, производящие ПО, с ростом всё более и более бюрократизируются, а неуспешные — просто умирают или продаются и забирают с собой в могилу продукт. (Примеры!! Oracle/Sun, Google/толпа проектов.) А бюрократизация приводит к усложнению огранизации, процессов и обратной связи, росту количества менеджеров и росту издержек, уходу создателей от разработки или вообще из компании, потере интереса разработчиков до среднестатистического, за который платят, а следовательно — падению их производительности, иссяканию новых идей, подмене изначальной цели (создать нечто полезное, на чём можно и заработать) только желанием заработать и постепенному скатыванию в говно. Кстати, всякие Agile-методологии, по сути, частично призваны именно бороться с бюрократизацией.

Нет, всё это, опять-таки не значит, что любая закрытая программа обязательно скатится в говно. Это значит, что удержаться от скатывания в говно закрытому софту труднее, чем свободному. Говно — это «асимптотически равновесное состояние» закрытого софта :)

Отличие от других сфер: сесть и начать творить можно в любой момент. Кон Коливас.

Это всё не значит, что если ПО свободное, то лучшего качества, чем несвободное. Но по крайней мере, если вы вдруг обнаружите недостатки качества свободного ПО, вы хотя бы можете их исправить. А в случае закрытого — у вас даже нет шанса. «Система, которая не может сломаться, плоха тем, что её невозможно починить, если она всё-таки сломается». :)

Проблемы закрытого ПО

  • Монополия, сговор
  • Отсутствие обратной связи
  • Нечестная конкуренция (+ патенты)
  • Продукт держится на инициативе производителя
  • Необходимость переписывания и перелицензирования кучи всякого г***а
  • «Тупые юзеры»
  • Adware, Spyware и прочие закладки
    • Реклама (которую, видимо, уже не осуждают?)
    • Шпионские модули
    • Отрубание совместимости
    • Stuxnet & Иранские Ядерные Центрифуги
  • Security Via Obscurity
  • Программисты пишут не потому что им нравится, а потому, что их заставляют
  • Платность :-)
  • Проблемы обмена опытом

Меня это не касается! %% ⌘⌘

У вас есть машина?

CodeGrabbers.jpg

С сигналками всё плачевно %% ⌘⌘

Вы думаете, там есть криптография? Заблуждаетесь :)

  • У большинства — статический диалог O_o
  • 2-й уровень — Common PRNG
  • Если и не, то есть «Service Mode»
  • «А у меня Black Bug» (?)

Сигналки — разъяснение

Закрытая разработка программного обеспечения поощряет принцип «Security Through Obscrurity», который известен уже очень давно, но почему-то продолжает создавать всем проблемы. По-русски принцип называется «безопасность через сокрытие» и смысл его состоит в том, что если никто не знает, как оно работает, то никто, вероятно, не сможет это взломать. Короче говоря, «ключ под ковриком» — безопасно, потому что никто не знает, где он лежит. Но при этом достаточно один раз подсмотреть, как вы достаёте ключ, чтобы скомпрометировать безопасность всей двери, не говоря уже о том, что взломщик в первую очередь посмотрит именно под коврик :)

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

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

Что-что? «А у меня Black Bug»? Да, он относительно продвинутый, с меткой, беспроводными сложнообнаруживаемыми реле «hook-up», «wait-up» и динамическим диалогом («система посылает случайное число, которое метка должна преобразовать в соответствии с определенным нелинейным алгоритмом и отправить обратно»). Но, во-первых, у старых релюх тот же статический диалог, во-вторых, неизвестно, насколько криптостоек динамический...

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

Пример способа взлома Black Bug — прочитано на просторах интернета.

Отходим от машины, метка выходит из зоны приёма, ББ смотрит, что все дверки закрыты и ставит машину в охрану.

Автовладелец идёт спать, снимает пиджак с меткой, вешает его в шкаф….

Угонщиков двое. Один около двери квартиры, второй около машины. У обоих в руках чемоданы (из комплекса 608 и 702 грабберов). Чемоданы включаются. Чемодан угонщика у квартиры начинает принимать посылки присутствия метки и транслировать их на расстояние до 4-х км на второй чемодан (если радиус действия ключа НЕ исчисляется сантиметрами. Так что если хотите прочитать его код, сначала дерните ключ у владельца). Чемодан угонщика у машины воспринимает сигнал и воспроизводит его в эфир на частоте работы брелок-Black Bug (433,92 Мг). Black Bug видит, что метка в эфире и снимает машину с охраны.

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

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

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

После открытия двери, и нажатии на педаль тормоза карточка опрашивается снова. Не увидев метку, Black Bug посылает код на блокировку в штатную проводку. Hook-Up реле его не поймет из-за шума генератора.

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

Как таки поднять качество

По сути, все эти проблемы FOSS помогает решить!

  • foss — именно о качестве, а не о том, чтобы что-то быстро разработать и продать
  • Открытые инструменты разработки
  • Открытость нужна в головах, а не на бумаге, и foss ей способствует
  • Количество и качество пользовательской базы
  • Бесплатные тестеры
    • Самое лучшее тестирование — это тестирования для себя
  • Иногда бесплатные программисты
    • Ну или патчеры. Даже если вы патч не примете, его могут найти и зафиксить что-то, на что у вас пока не хватило времени
  • Обучение собственных программистов взаимодействием с внешним сообществом
  • Сообщество поможет выбрать правильные технологии (которые не сдохнут)
  • Независимость от вендоров
  • Меньшая вероятность попадания в продукт ВАШИХ закладок — лучшая репутация продукта
  • Тупо деньги — их лучше заплатить людям, чем «дяде». Даже если понадобятся чуть более умные люди, вы всё равно выиграете (умные люди, это ж хорошо).
  • Проблема форка: технически лучше всегда за ними следить.

Картинки

NewTux.svg

Alan Cox.jpg

Alan Cox Red.jpg