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

Материал из YourcmcWiki
Перейти к: навигация, поиск
м (Меня это не касается! %%)
м
Строка 1: Строка 1:
<slideshow title="" style="freesoftware" scaled="true" font="Calibri, Segoe Print, cursive" headingmark="⌘⌘" centermark="%%" subfooter="Opensource и качество, или не плодите софт в неволе" footer="" />
+
<slideshow title="" style="freesoftware" scaled="true" font="Calibri, Segoe Print, cursive" headingmark="⌘⌘" centermark="%%" incmark="++" subfooter="Opensource и качество, или не плодите софт в неволе" footer="" />
  
 
Варианты названия:
 
Варианты названия:
Строка 55: Строка 55:
 
* СЕРВИСЫ: худший (но честный) вид закрытого ПО
 
* СЕРВИСЫ: худший (но честный) вид закрытого ПО
  
== FOSS: Типичное представление %% ⌘⌘ ==
+
== Типичное представление %% ⌘⌘ ==
  
 
[[File:Halyava2.jpg]]
 
[[File:Halyava2.jpg]]
Строка 86: Строка 86:
 
</ol>
 
</ol>
  
== Свободные лицензии ⌘⌘ ==
+
== {{red|НЕ}}свободные лицензии ⌘⌘ ==
 +
 
 +
[[File:Bred in captivity.jpg|300px|right]]
 +
; Shared Source: {{red|При}}открыто "на посмотреть"
 +
; Freeware: "Free as beer". Можно распространять вирус :)
 +
; Shareware: Можно распространять, но нельзя свободно использовать.
 +
; Proprietary: "Bred in captivity"
 +
 
 +
== Свободные лицензии ++ ⌘⌘ ==
  
 
Гарантируют пользователю 4 свободы.
 
Гарантируют пользователю 4 свободы.
  
* Public Domain (отказ от прав {{red|**}})
+
* Public Domain: отказ от прав {{red|**}} - CC0, Unlicense)
* Permissive (без доп. ограничений)
+
* Permissive: без доп. ограничений - MIT/Apache/BSD и т.п.
* Weak Copyleft (запрет смены лицензии, кроме компоновки)
+
* Weak Copyleft: запрет смены лицензии, кроме компоновки - LGPL, CeCILL-L
* Strong Copyleft (запрет смены лицензии)
+
* Strong Copyleft: запрет смены лицензии - GPL, CeCILL
 +
* Есть ещё сильнее - {{blue|Affero GPL}}
  
== Популярные несвободные ⌘⌘ ==
+
== Вирус - не вирус %% ⌘⌘ ==
  
* Shared Source
+
Частое заблуждение:
* Freeware
+
* Shareware
+
* Proprietary
+
  
Тут возможны любые ограничения. :)
+
[[File:BadVirusGPL.jpg|300px]] [[File:WhiteFluffyBSD.jpg|300px]]
 +
 
 +
<small>И я уж молчу о том, как боятся AGPL</small>
 +
 
 +
== Все забыли о появлении FSF и GPL? ⌘⌘ ==
 +
 
 +
[[File:Burgui.png|300px|left]] MIT<br />PDP-10<br />Lisp-машины<br />FSF, 1985
 +
 
 +
Если GPL-вирус, то закрытые исходники вообще не размножаются (ц)
  
 
== Семейство Creative Commons ⌘⌘ ==
 
== Семейство Creative Commons ⌘⌘ ==
  
* CC-BY
+
<tab sep="bar">
* CC-BY-NC
+
CC-BY | {{blue|permissive}}
* CC-BY-ND
+
CC-BY-NC | {{red|некоммерческая}} &rArr; несвободная
* CC-BY-NC-ND
+
CC-BY-ND | {{red|без производных}} &rArr; несвободная
* CC-BY-SA
+
CC-BY-NC-ND | {{red|NC+ND}}
* CC-0
+
CC-BY-SA | {{blue|хороший copyleft}} {{red|не для софта}}
 +
CC-0 | {{blue|хороший Public Domain}}
 +
</tab>
  
 
== И всё бы хорошо… %% ⌘⌘ ==
 
== И всё бы хорошо… %% ⌘⌘ ==
Строка 120: Строка 136:
  
 
* TiVo
 
* TiVo
 +
** Кстати, не покупайте Motorola и Sony Ericsson!
 
* Патенты
 
* Патенты
* Законы, запрещающие некоторый софт
+
** {{blue|К счастью, не у нас}}
 +
* Законы, запрещающие некоторое ПО
  
 
Фикс: GPLv3.
 
Фикс: GPLv3.
 +
 +
== TiVo ==
 +
 +
Фирма TiVo "попала" и теперь чётко ассоциируется не с какими-то непонятными ТВ-приставками, а с несвободой программной обеспечения -  блокированием загрузчиков. И хотя на самом деле блокирование придумали не они, применили к Linux'у его они одними из первых. Смысл в том, что исходники свободно распространяются, их разрешено модифицировать и собирать... Но толку от этого никакого нет, потому что в само устройство прошит ключик, которым если не подписать свою сборку, девайс откажется её запускать.
 +
 +
Загрузчики же любили блокировать производители мобильных телефонов и ''процессоров'' для мобильных телефонов. У кого был Siemens? Там были процы Qualcomm без аппаратной защиты памяти, и некий ключ, требуемый для разблокировки загрузчика - "S-KEY", который получался через лазанье по флешу (аппаратной защиты памяти-то нет). Также разблокировать можно было через использование Test Point - точки на системной плате телефона, подключённой к ноге конфигурации загрузки процессора. При замыкании её на массу процессор позволял загружаться не с внутренней памяти, а с помощью загрузчика, загружаемого по последовательному интерфейсу. Народные умельцы делали и то, и другое - до сих пор живы [http://www.siemens-club.org/ Сименс Клуб] и база патчей и ELF-приложений http://patches.kibab.com/.
 +
 +
Телефоны Siemens - это вообще отличный пример того, что можно сделать с программным обеспечением даже '''без''' свободной лицензии и доступа к исходникам. По сравнению с другими телефонами. А что бы было, если бы он был? Может быть, производитель столь удобных и популярных в своё время телефонов до сих пор бы не умер?..
 +
 +
Блокирование же продолжается и по сей день, хотя разные компании делают его в разной степени. У большинства даже заблокированные загрузчики всё равно разблокируются программно. У остальных, вероятно, аппаратно. HTC, например, наконец-то вообще объявила, что больше не будет блокировать загрузчики на Android-устройствах.
  
 
== Ещё баги ⌘⌘ ==
 
== Ещё баги ⌘⌘ ==
  
* Сервисы. Фикс: AGPLv3.
+
* SaaS. Фикс: AGPLv3.
 
* JavaScript. Фикс: распространять свободно.
 
* JavaScript. Фикс: распространять свободно.
 
* Скрипты в целом. Фикс: LGPLv3.
 
* Скрипты в целом. Фикс: LGPLv3.
Строка 162: Строка 190:
 
Цель закрытого ПО — срубить денег. Цель свободного ПО — создать полезный продукт.
 
Цель закрытого ПО — срубить денег. Цель свободного ПО — создать полезный продукт.
  
Не надо думать, что единственной целью создания закрытого ПО всегда является исключительно получение прибыли на продаже лицензий. Многие закрытые программы точно так же изначально создаются любителями своего дела и тоже с целью создания полезного продукта, на котором кроме того ещё и МОЖНО заработать. Проблема в том, что успешные компании, производящие ПО, с ростом всё более и более бюрократизируются, а неуспешные — просто умирают или продаются и забирают с собой в могилу продукт. (Примеры!! Oracle/Sun, Google/толпа проектов.) А бюрократизация приводит к усложнению огранизации, процессов и обратной связи, росту количества менеджеров и росту издержек, уходу создателей от разработки или вообще из компании, потере интереса разработчиков до среднестатистического, за который платят, а следовательно — падению их производительности, иссяканию новых идей, подмене изначальной цели (создать нечто полезное, на чём можно и заработать) только желанием заработать и постепенному скатыванию в говно.
+
Не надо думать, что единственной целью создания закрытого ПО всегда является исключительно получение прибыли на продаже лицензий. Многие закрытые программы точно так же изначально создаются любителями своего дела и тоже с целью создания полезного продукта, на котором кроме того ещё и МОЖНО заработать. Проблема в том, что успешные компании, производящие ПО, с ростом всё более и более бюрократизируются, а неуспешные — просто умирают или продаются и забирают с собой в могилу продукт. (Примеры!! Oracle/Sun, Google/толпа проектов.) А бюрократизация приводит к усложнению огранизации, процессов и обратной связи, росту количества менеджеров и росту издержек, уходу создателей от разработки или вообще из компании, потере интереса разработчиков до среднестатистического, за который платят, а следовательно — падению их производительности, иссяканию новых идей, подмене изначальной цели (создать нечто полезное, на чём можно и заработать) только желанием заработать и постепенному скатыванию в говно. Кстати, всякие Agile-методологии, по сути, частично призваны именно бороться с бюрократизацией.
  
 
Нет, всё это, опять-таки не значит, что любая закрытая программа обязательно скатится в говно. Это значит, что удержаться от скатывания в говно закрытому софту труднее, чем свободному. Говно — это «асимптотически равновесное состояние» закрытого софта :)
 
Нет, всё это, опять-таки не значит, что любая закрытая программа обязательно скатится в говно. Это значит, что удержаться от скатывания в говно закрытому софту труднее, чем свободному. Говно — это «асимптотически равновесное состояние» закрытого софта :)
Строка 210: Строка 238:
 
* Количество и качество пользовательской базы
 
* Количество и качество пользовательской базы
 
* Бесплатные тестеры
 
* Бесплатные тестеры
 +
** Самое лучшее тестирование - это тестирования для себя
 
* Иногда бесплатные программисты
 
* Иногда бесплатные программисты
 
** Ну или патчеры. Даже если вы патч не примете, его могут найти и зафиксить что-то, на что у вас пока не хватило времени
 
** Ну или патчеры. Даже если вы патч не примете, его могут найти и зафиксить что-то, на что у вас пока не хватило времени

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

Автор

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

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
  • Opensource и бизнес. Handshake icon.svg
  • Проблемы закрытого ПО
  • Opensource и качество ↑↑↑

Особенности ПО как продукта ⌘⌘

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

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

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

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

Halyava2.jpg

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

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

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

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

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

4 свободы:

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

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

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

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

Гарантируют пользователю 4 свободы.

  • Public Domain: отказ от прав ** - CC0, Unlicense)
  • Permissive: без доп. ограничений - MIT/Apache/BSD и т.п.
  • Weak Copyleft: запрет смены лицензии, кроме компоновки - LGPL, CeCILL-L
  • 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.

TiVo

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

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

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

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

Ещё баги ⌘⌘

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

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

  • Рекламные баги: BSD, PHP. Fix: FreeBSD, X11, Apache
  • CeCILL: французский GPL.
  • «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" (?)

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

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

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

Картинки

NewTux.svg

Alan Cox.jpg

Alan Cox Red.jpg