Opensource и качество

Материал из YourcmcWiki
Перейти к: навигация, поиск
Автор

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

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


Opensource Свободное ПО и качество, или не плодите софт в неволе.

Доклад с конференции SQA Days-10, проходившей 2-3 декабря 2011 года. Всё, что я не успел рассказать на докладе — например, под конец пришлось ускориться, ибо время поджимало — можно прочитать здесь, а нажав «Показ Слайдов» — можно посмотреть саму презентацию. Такую радость обеспечивает наше расширение S5SlideShow. Также читайте про наши проекты http://wiki.4intra.net/MediaWiki4Intranet и http://wiki.4intra.net/Bugzilla4Intranet.

Содержание

Тезисы

Почему так часто оказывается, что закрытое ПО имеет различные проблемы, и их так сложно, или вовсе невозможно, исправить? Причина кроется в изначальной модели бизнеса и цели разработки, которой является не создание качественного продукта, а продажи и зарабатывание денег на потребителях. Потребителю ни в коем случае не доверяют, исходники закрываются (а то сопрут!!!), не дай бог, навешивается реклама, 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
  • Проблемы закрытого ПО
  • Свободное ПО и качество ↑↑↑

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

  • Бинарники и исходники
  • Постоянная работа с личными данными
  • Сильная завязка на платформы, форматы, протоколы
McSource.png Binaries.jpg

А также… ⌘⌘

Bug-feature.jpg
  • Часто — является уникальным IDA Logo.jpg
  • Сложность продукта ⇒ обязательное наличие БАГОВ!
  • Умирание без поддержки
  • Но в то же время простота сборки
  • …и нулевая стоимость копирования.


Программы окружили нас! ⌘⌘

AEM ECU.jpg

Даже если вы не работаете за компьютером, вы окружены :-)

  • Мобильные устройства
  • Вся бытовая техника
  • Самолёты, поезда
  • Автомобили (ECU, сигналки)
  • Продолжите список сами :)

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

Halyava2.jpg

Обычно думают так… ++ ⌘⌘

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

Часто забывают о… ⌘⌘

Richard stallman laptop 3.jpg
  • OpenSource Свободное ПО
  • Свободное Некоммерческое
  • Как появилось свободное ПО?
  • Зоопарк свободных лицензий
  • Связь открытости и качества (???)
  • Linux GNU/Linux

Малоизвестные факты

Richard stallman laptop 3.jpg

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

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

Многие не помнят, как появилось свободное ПО. Вернее, не помнят, что под минималистичными лицензиями оно существовало всегда в рамках университетских научных и академических разработок, а распространилось благодаря усилиям Ричарда Столлмана, созданию Фонда Свободного ПО, проекта GNU и Copyleft-лицензии GPL.

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

Наконец, часто свободу ПО рассматривают просто как философию, систему убеждений и идеалов, но при этом забывают о том, что она обычно способствует улучшению качества продукта, и не думают, почему так происходит.

А ещё, кстати, как говорит Столлман, многие неправильно произносят слово «GNU», и звучит оно в их устах, как «Linux». Дистрибутивы — не Linux, а GNU/Linux, ибо Linux — только ядро, а GNU — набор базовых системных программ. У GNU есть и своё ядро (кстати, микроядро!) GNU Hurd, но его никак не допилят :-)

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

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

Комментарии

Закрытое (собственническое, proprietary) ПО — прямой перенос стандартной, капиталистической, собственнической модели ведения бизнеса — «производитель-потребитель» на программное обеспечение. Достаточно неприятно то, что многие воспринимают это как норму, а многие не знают, что бывает иначе.

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

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

Ближайшая аналогия — гарантийные обязательства. В гарантийке обязательно окажется какой-нибудь хитрый пункт и продукт у вас не примут :-) если не окажется сразу, продукт сначала отправится на экспертизу, которая будет длится ровно максимальный срок, установленный законами; если не окажется и после этого, продукт, наверное, всё-таки примут, но будут ремонтировать несколько месяцев (а в случае с устройством вы ещё и потеряете все данные, которые на нём были). Это к тому, что на свои обязательства очень легко «кладут» не только производители ПО.

Удивительно, но меня вообще поражает, насколько производители повёрнуты к пользователю не тем местом. Пример — текст лицензии, показываемый при установке. Ё-моё. Включите вы в начало краткое, в пару абзацев, разъяснение смысла лицензии! Ведь насколько это просто! Полный-то текст всё равно читать не будет никто! А так хоть смысл донесёте. Дальше: почему при просмотре купленного DVD-диска я должен просмотреть кучу сраной рекламы? Я её вообще видеть не желаю, я деньги вам плачу. Однако же нет — она туда включается обязательно.

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

Потом внезапно оказывается, что программу, копии которой как бы нужно покупать, очень легко скопировать, что вообще-то немудрено — копирование является естественной функцией. Выдумываются изощрённые способы защиты, но в конечном итоге ясно, что либо вы контролируете компьютер и можете делать всё что угодно с любыми данными и программами, хранящимися на нём, либо появляется что-то, что имеет контроль над вами. О таких попытках контроля наших с вами компьютеров всегда рассказывает главный идеолог и создатель движения за свободное ПО — Ричард Столлман. Идеи DRM’а, для которых требуется такой контроль — угрожают свободному ПО.

Удивляет также то, насколько люди не ценят свободу ПО по сравнению со свободой в реальном мире. В реальном мире люди откажутся от большинства благ в пользу свободы, а в мире ПО, видимо, «гром» ещё не грянул и поэтому всем пофигу.

Пока что, к счастью, всё развивается по первому сценарию — все защиты от копирования успешно взламываются. Отсюда и нехороший термин «пиратство». Пиратство подразумевает корабль, абордажные крючья, и, конечно же, море-окиян. Нелицензионное распространение софта столь же обоснованно можно назвать изнасилованием (ц) кто-то. Мне нравится, как по этому поводу говорит Столлман: «На вопрос, как вы относитесь к пиратству, я отвечаю, что грабить корабли плохо. Когда после этого меня спрашивают о том, как я отношусь к музыкальному пиратству, я говорю, что судя по тому, что я читал в книгах, пираты использовали ружья, а не музыкальные инструменты, поэтому никакого музыкального пиратства не существует». Собственно, термин «пиратство» действительно странен, так как пираты не имели свойства раздавать что-то людям — это скорее делал Робин Гуд.

Отсюда и недоверие к потребителю. Мало того, что он «пиратит», так он ещё и создаёт проблемы своего тупостью — звонит в поддержку, задаёт идиотские вопросы, ничего не понимает… А то, что вы сами делаете его таким — это ничего? Ведь в нашем общества мечта продажника — человек, который зашёл, увидел и купил что-то, не думая. Это недоверие — лишний стимул «избушке» повернуться к пользователю сами знаете каким местом.

Одним из последних трендов, кроме того, является SaaS — Software as a Service. Любопытно, но если рассматривать это именно как ПО — это худший вид закрытого ПО, когда вы не контролируете вообще ничего — ПО вам никто даже не даёт потрогать. Вы только отправляете входные данные и получаете результат. Все данные попадают в руки другой компании; а например, если она американская, она их может выдать ФБР даже без судебного постановления.

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

И ещё немного про DRM

Вот за что «пиратам» точно нельзя сказать спасибо — так за то, что они популяризовали Шиндовш в Этой Стране (c). Это не единственный пример «бесплатной первой дозы», официальный вариант — это бесплатные копии для школ и университетов. Если человек вырастет и ничего не увидит, кроме несчастной винды, он на ней так и останется.

Попытки выдумать новые варианты защиты (DRM — Digital Rights Management) не прекращаются, но всё больше становится понятно, что защита эффективна, только если компьютер властвует над пользователем, а не наоборот. Например, из последнего — новое творение мелкомягких включает программу наклейки «Шиндовш 8 компатибле», в которую почему-то, во-первых, попал стандарт UEFI (идиотская мини-операционка вместо BIOS’а), а во-вторых, попало требование возможности UEFI Secure Boot без дополнительных разъяснений о возможности его отключения или замены ключей загрузки. Ну вы уже поняли, Secure Boot — это та же тивоизация, только перенесённая на компьютер :-) попытка превратить твой, анонимус, компьютер в быдло-игровую-консоль.

Все эти разработки подкрепляются попытками подмены морали, в которые могут поверить непосвещённые. Пользователю говорят:

  • «Ты пират» — это включает в себя ассоциацию с тем, что ты грабишь, убиваешь и вообще «грязный бандид». Говорится во вполне корыстных целях — чтобы пользователю было стыдно сделать естественное действие (поделиться с другом). Хорошее замечание читал где-то на хабре:
    Средневековые пираты просто младенцы на фоне богатств, захваченных рейдерами. Однако никто никогда не называл этих людей современными пиратами. Потому что они имели достаточно мозгов чтобы думать над имиджем и достаточно денег, чтобы покупать идеологов и журналистов. Разве похож Ричард Гир в роли Эдварда Льюиса — рейдера из фильма «Красотка» на грязного бандида?
  • «Вы стали жертвой нелицензионного программного обеспечения». Три ха-ха. Не мы стали, а вы :)
  • «Это для вашей защиты». В такой реализации защищённости пользователю это не прибавит, так как он не решает, что запускать, а что не запускать — за него решает Большой Брат. Зато, например, прибавится защита от тех, кто не поделился с M$ баблом на сертификат для драйвера (500$ в год).

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

KPZ.jpg

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

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

Свободное ПО

Свободное ПО — это ПО, которое уважает ваши свободы. Как говорит FSF и Столлман, их 4:

  • The freedom to run the program, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

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

4 свободы:

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

Что такое Open-Source? %% ⌘⌘

OSI logo.png

«Не хотим рассматривать „свободу ПО“ с моральной точки зрения!»

Появилось, чтобы не использовать термин «Free» *

Open Source Definition ⌘⌘

Более запутанное определение; 10 пунктов.

  • Запрет дискриминации: технологий, людей, продуктов, другого ПО, сфер применения.
  • Свободное повторное распространение в составе дистрибутива! без нужды доп. лицензирования.
    • Не путать с просто свободным распространением
  • Доступность исходников вместе с (*) бинарями.
  • Модификация, сборка и распространение на тех же условиях.

Лицензии, признанные OSI, но не FSF

Следующие лицензии — Open-Source, но не свободные, по крайней мере не признанные таковыми Free Software Foundation. Легко заметить, что большинство из них очень малоизвестные, поэтому есть подозрение, что определение Open Source не так уж и хорошо.

Вообще в целом идея у OSI (в 1999 году) была такая — чтобы добиться большего распространения свободного ПО в корпоративной среде, сделать следующее:

  1. Уйти от слова «free», как от чего-то, пугающего корпоративщиков, которые несправедливо думали — раз бесплатно, значит говно;
  2. Ликвидировать путаницу с «freeware» ≠ «free software», введя новый термин, не равный ни тому, ни другому;
  3. Подзабить на моральную сторону и сделать акцент на преимуществах открытой модели разработки, и отразить это в своих принципах.

Однако вскоре п.1 стал неактуален, так как качество свободного ПО признали очень многие. П.2, хоть и сам внёс немножко путаницы («open source ≠ free software») остался полезен тем, что по словам «opensource программа для того-то» гораздо проще найти правильную программу в Google, чем по словам «free …» — по последнему запросу найдётся ещё и куча в 99 % случаях говённого Freeware и Shareware софта.

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

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

Итак, лицензии, признанные OSI, но не FSF — это:

  • Adaptive Public License 1.0
  • The Attribution Assurance License
  • Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1)
  • CUA Office Public License (CUA-OPL-1.0)
  • The X.Net, Inc. License
  • Fair License
  • Frameworx License 1.0
  • Historical Permission Notice and Disclaimer (HPND)
  • MirOS License
  • Multics License
  • NAUMEN Public License
  • Nethack General Public License (NGPL)
  • NTP License
  • Non-Profit Open Software License version 3.0 (NPOSL-3.0)
  • OCLC Research Public License 2.0 License (OCLC-2.0)
  • Open Group Test Suite License (OGTSL)
  • CNRI portion of the multi-part Python License
  • RealNetworks Public Source License Version 1.0 (RPSL-1.0)
  • Reciprocal Public License 1.5 (RPL-1.5)
  • Ricoh Source Code Public License (RSCPL)
  • Simple Public License (SimPL-2.0)
  • Sybase Open Source Licence (Watcom-1.0)
  • Vovida Software License v. 1.0 (VSL-1.0)
  • wxWindows Library Licence

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

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

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

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

BadVirusGPL.jpg WhiteFluffyBSD.jpg

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

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

Burgui.png
СПО было всегда (MIT, PDP-10, 1970—1980)

Потом Буржуи :-) закрыли Lisp-машины

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

GPL появилась именно, чтобы сохранить свободу!

Объяснение здесь простое: свободное ПО с минималистическими permissive лицензиями было всегда — в рамках университетских разработок в MIT, Беркли и т. п. В 1970-х годах в MIT даже была целая собственная свободная UNIX-совместимая операционная система для компьютеров PDP-10. Но быстро устаревать компьютеры начали уже тогда, и к 1980-м годам институту пришлось покупать новое железо, а с ним уже продавалось и ПО. Соответственно, с этого момента институту уже пришлось выполнять лицензионные ограничения.

Одновременно некоторые сотрудники лаборатории, в которой работал над LISP-машинами и Ричард Столлман, ушли из университета, организовали свою компанию и выкупили у MIT права на все разработки в этой области, сделав их из свободных закрытыми. Это и было изначальным стимулом для создания лицензии, которая должна сохранять свободу — GPL.

Так что те, кто говорят, что лицензии BSD/FreeBSD/MIT/X11/Apache — кошер, а GPL — страшный вирус, который нигде не нужно использовать, очень и очень неправы. Если бы не было 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

Лицензии Creative Commons

CC — семейство лицензий, в основном удобных для не-программных продуктов, по причине использования более общей терминологии. Но это вовсе не значит, что использовать их для этого совсем нельзя, например, под CC-BY-SA любят распространять Flash-MP3 плееры.

CC-BY, или «Creative Commons Attribution» — permissive-лицензия, требующая при создании производных творений лишь сохранения авторства.

Приписки «NC» и «ND» означают «некоммерческая» и «без производных» соответственно. То есть, NC запрещает коммерческое использование, а ND запрещает создание работ на основе данной. Соответственно, любая из этих приписок делает лицензию несвободной. Но применение им есть — CC-BY-ND, например — хорошая лицензия для «мнений» (for works of opinion and judgment) — например, для записей на вашем сайте или лицензий, придуманных вами.

CC-BY-SA — самая популярная лицензия семейства. Является копилефтом (SA = ShareAlike) — производные творения должны также распространяться под CC-BY-SA. Большая часть содержимого Википедии распространяется на условиях этой лицензии. Она всё ещё не использует программную терминологию и поэтому может (и должна) в первую очередь использоваться для непрограммных продуктов.

CC-0 — не лицензия в прямом смысле этого слова, а отказ от подобной в пользу мирового сообщества, то есть, это Public Domain договор, хороший и проработанный, и содержащий краткую «лицензию» на случай, если законодательство не позволяет отказываться от прав. Если вы хотите сделать работу Public Domain — рекомендуется использовать именно CC-0.

Некоторый плюс лицензий CC в том, они поддерживаются в России организацией Викимедиа РУ. Более подробно можно почитать на статье rupedia:Creative Commons.

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

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

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

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

Багфикс: GPLv3.

Патенты %% ⌘⌘

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

TrollFace.svg

Почему патенты на ПО есть зло

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

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

Пример — те же мелкомягкие, затроллив производителей Android-телефонов идиотским патентом на идиотский хак FAT LFN (размазывание длинного имени файла по набору 32-байтных direntry), заставил многих отчислять где-то по 25 $ с каждого телефона. Итоговая сумма, которую они зарабатывают на этом троллинге, пока что значительно превышает доходы от Вин Phone 7.

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

Примеры таких «патентов» приведены ниже:

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 расковыряло прошивку настолько, что была создана не только уйма полезных патчей (изменений в ПО телефона), но даже способ загрузки приложений в родном для процессора коде! («эльфов», от ELF) Что, по сути, превращало обычный телефон в отличный и удобный смартфон. Народ, кстати, сделал и поддержку MP3 на x65, отсутствие которой в своё время больно ударило по репутации фирмы. А реальные смартфоны в то время были либо на убогом Symbian, либо на ещё более убогом Windows Mobile (Symbian хотя бы мог жить без вечных хард-ресетов, а винда — нет). Например, на S75v52 доступно 386 патчей и 111 эльфов. А сколько бы было доработок, если бы руководство компании смогло поменять свои устаревшие взгляды и платформа была открыта?..

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

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

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

Проблемы свободы ПО ⌘⌘

  • Тивоизация, патенты. Фикс: GPLv3.
  • SaaS. Фикс: AGPL(3).
  • Скрипты — несвободное ПО без вашего ведома
    • Обфускация == исходник? Фикс: GPLv3, MPL, Apache.
    • компоновка? не компоновка? Фикс: LGPL(3), MPL, Apache.

Проблемы свободы ПО — разъяснение

С SaaS всё понятно. Разрабатывая что-то свободное, что вероятно кто-то доработает и будет использовать исключительно на своём сервере, обслуживая запросы других людей — помните, что доработки он может и не открыть. Для таких продуктов полезно использовать AGPL (3-ей версии).

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

С ними проблемы две: во-первых, обфусцированный скрипт — это исходник? GPLv2 ничего не говорит на этот счёт, а вот в GPL 3-ей версии, а также MPL и Apache явно прописано, что исходник — это «предпочтительная для модификации форма работы»; обфусцированная форма — точно не предпочтительная, соответственно, она и не является исходником.

Во-вторых, как вообще определяются «границы» приложения, если оно полностью написано на скриптовом языке, особенно, если это какой-нибудь JavaScript? Мало того — может ли GPL’ный скрипт выполняться в интерпретаторе, имеющем несовместимую с GPL лицензию? Из-за этих вопросов трактовки Firefox, например, лицензируется как под MPL (1.1), так и под GPL. Решение — использовать для javascript’ов как минимум LGPL, а как максимум — MPL (файловый копилефт) или Permissive-лицензию типа Apache или NewBSD/FreeBSD.

Все эти проблемы присутствуют в GPLv2 и похожих на неё лицензиях (например, EUPL, CeCILL) и решаются лицензиями семейства GPLv3. Вот и ответ на вопрос — почему желательно использовать именно 3-и версии.

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

  • CeCILL, EUPL: GPLv2 + Европейские законы
  • BSD, PHP: Рекламные баги (Fix: FreeBSD, X11, Apache)
  • Guile: GPL + компоновка
  • BDB: копилефт типа GPL
  • MPL: не баг, а фича — файловый копилефт
  • CDDL: специально несовместима с GPL
  • Clear BSD: явно не дают прав на патенты
  • Старые APSL: центральный контроль

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

Во-первых, рекламные баги. Самый известный пример — баг оригинальной лицензии BSD, которая говорила, что всё, что включает в себя ПО, распространяющееся под BSD-лицензией, должно где-то упоминать, что оно содержит «ПО, разработанное университетом Беркли». Дальше лицензию копипастили все, кому было не лень, меняя «университет Беркли» на название своей организации. В итоге, например, в NetBSD 1997-го года выпуска пришлось упоминать аж 75 разных организаций.

Note.svg Никогда не называйте permissive-лицензии «BSD-style» лицензиями, потому что так можно ввести кого-нибудь в заблуждение и породить новый рекламный баг.

Исправление для этого — 3-пунктовая BSD, 2-пунктовая FreeBSD-лицензия, или аналогичный, но ещё более укороченный вариант — лицензия ISC (применяемая, например, по умолчанию в новых частях OpenBSD). 3-ий пункт, удалённый во FreeBSD/ISC лицензиях — это запрет использования имя <организации> или других контрибьюторов в рекламе производных продуктов.

Ещё один пример — лицензия PHP, которая заставляет включать «php» в названия всех расширений.

CeCILL — лицензии, очень похожие на GPLv2, LGPLv2, BSD, но переписанные французскими юристами и адаптированные к французскому и европейскому вообще праву. Конкретика здесь — в области гарантий, области действия, и неупоминания «соответствующих законов».

Есть лицензии типа Guile: «GPL + разрешение линковаться с проприетарщиной» — люди не вкурили LGPL. Есть лицензии типа BDB, вместо которых можно было бы смело использовать GPL, ибо смысл тот же — свободно распространяться должно всё, что использует BDB.

MPL 1.1, CDDL: «хитрые ограничения», из-за которых та же фаерфоксина выпускается под MPL+GPL+LGPL.

Общая суть MPL — «Копилефт на уровне отдельных файлов». То есть, внесённые в MPL’ный файл изменения должны распространяться под MPL’ем, но MPL’ные файлы можно комбинировать в «Более крупном произведении» («Larger work») с файлами под другими лицензиями (если, конечно, это не противоречит самим этим лицензиям). Кроме того, MPL 1.1 разрешает перелицензировать бинарные сборки. Собственно говоря, из-за этих багов MPL 1.1 сам по себе и несовместим с GPL и требует двойного лицензирования, чтобы быть совместимым.

MPL в основном удобно применять для JavaScript'ов (и, возможно, других ).

Однако, недавно вышла новая версия MPL 2.0:

  • Теперь она «по умолчанию совместима» с GPL 2.0+, LGPL 2.1+, AGPL 3.0+ — то есть, если автором специально не отмечено обратное (для этого нужно писать, что «Incompatible with secondary license»). Раньше для этого требовалось явное двойное или тройное лицензирование (как в Firefox: GPL, LGPL, MPL).
  • Упрощено определение «исходников»: «the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor’s choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge».
    В FAQ Mozilla утверждает, что это хорошо, так как позволяет гибко трактовать определение и включать не только перечисленный набор дополнительных файлов, а именно то, что нужно включать в каждом конкретном случае. Может быть, это и не хорошо, потому что мало ли кто как это оттрактует… А проблема открытия конфигурации и скриптов сборки есть — например, Acer, в соответствии с GPLv2, опубликовал исходники ядра для своего телефона Liquid, но без конфига, и чтобы их собрать, конфиг нужно изобретать заново. Лицензия Apache 2, кстати, содержит аналогичное, но чуть более точное, определение исходников: «предпочтительная для доработки форма, включая (но не ограничивая) исходными кодами приложения, документации, конфигурации».

CDDL же был специально основан на MPL 1.1, в частности, чтобы быть несовместимым с GPL. Никто от этого не выиграл, только геморроя прибавилось — например, были долгие срачи на тему ФС ZFS.

Clear BSD: в лицензии явно прописано, что не дают прав на патенты. Есть и такое. Вероятно, использовать эту лицензию значит подставлять филейные части тела патентным троллям.

Старые APSL (Apple Public Software License) — вообще несвободные. Ибо: имеют центральный контроль (все доработки надо отправлять ябблам), возможность отзыва лицензии теми же ябблами и запрет личного пользования доработанного ПО.

Кошерные лицензии ⌘⌘

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

Другие популярные ⌘⌘

  • MIT/X11/FreeBSD/ISC: Минималистичная Permissive.
  • MPL 2.0: Файловый копилефт by Mozilla.
  • Всё остальное — от лукавого!

Stand Up For Your Freedom ⌘⌘

Почему свобода в жизни считается такой важной, а в ПО нет?

Поддерживайте,
  изучайте,
    используйте,
      создавайте свободное ПО!

Это работа на перспективу!

Свободное ПО и бизнес %% ⌘⌘

Ошибочно мыслятся врагами! ⌘⌘

А это не так!

  1. СПО выгодно компаниям!
  2. 75 % кода ядра Linux пишется компаниями.
    Red Hat, IBM, Novell, Intel…
  3. Да и считать пользователей врагами — ошибка!

Выгода от СПО ⌘⌘

  • Не для монополистов с закрытым продуктом ☠☠☠
  • Велосипеды ↓↓ Крутые вещи ↑↑
  • Пользователь — ваш друг!
  • Защита от монополистов и прочих пи…
  • Стоимость используемого ПО
  • Качество инструментов разработки ↑↑↑

Разъяснение

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

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

Note.svg СПО действительно чуть-чуть соперничает разве что с «капиталистическими принципами», создание общественного достояния считается «лучше», чем некоторые способы зарабатывание денег. Это что-то из области коммунизма-социализма :)

СПО выгодно компаниям. Конечно, кроме тех, которые со своим закрытым продуктом владеют монополией на заданном сегменте рынка. Плюсов от использования СПО много, но в первую очередь оно позволяет гораздо быстрее и с меньшими затратами создавать крутые вещи из кучи готового и небольшого собственного вклада. Тот же Android использует очень много свободных сторонних библиотек и инструментов и, вероятно, не был бы возможен без их существования — затраты на реализацию всего того же с нуля или лицензирования у множества компаний, вероятно, были бы огромны, и на рынке смартфонов были бы монополисты. Да и iPhone и другие продукты Apple, в общем-то, тоже использует свободное ПО, и тоже вносят в него существенный вклад. Пример — свободный (под permissive лицензией) компилятор LLVM, который сейчас активно разрабатывается.

И это ещё не всё. Важнейшим свойством СПО является то, что оно позволяет компаниям считать пользователей своими друзьями, а не просто потребителями или врагами, как это часто происходит сейчас, повернуться к ним лицом (а не …), получать обратную связь и вклад в работу. СПО — это как раз то, что невозможно «украсть». Вот хочешь, хочешь — а не сопрёшь! Считать обычных людей своими врагами — это ошибка, потому что «их» несоизмеримо больше, чем «вас». А в мире СПО пользователи и разработчики зачастую совпадают. И даже если они разрабатывают свободный софт, конкурирующий с вашим, всё равно — считать их своими врагами значит настраивать мир против себя.

Производство, использование и работа со свободным ПО может являться и хорошей защитой от «акул капитализма» с их имперскими замашками и нехорошими методами конкуренции. К сожалению, ничто пока что не способно защитить от патентных троллей в тех странах, где они есть. Но обезопасить себя от мучительной смерти в случае, если Большой Вендор сделает свой закрытый аналог вашего продукта, вы частично можете, потому что у вас есть конкурентное преимущество — ваш продукт свободный, а их нет. Ваш продукт получит широкую базу пользователей, а им придётся загонять людей насильно. Причём вы заблуждаетесь, если думаете, что тот же Мелкософт — ваш союзник. Он ваш союзник, только если вы сами — Мелкософт. Простой пример этому — Borland со своими визуальными средами разработки, успешно убитый C#-ом и Windows Forms. Создавать средства разработки под закрытую платформу — занятие неблагодарное, потому что владелец этой платформы может легко вытеснить вас с этого рынка, и вы никак этому не сможете помешать…

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

Короче говоря, у компаний есть инициатива, а у сообщества есть ресурсы. Сочетание может получиться весьма термоядерное, что нам сейчас демонстрирует Google.

Большой пример вклада компаний в свободный продукт — это ядро Linux, примерно 75 % вклада в которое сейчас делают разработчики из различных компаний, и делают не «по приколу», а потому, что Linux выгоден для бизнеса. TOP-10 компаний, осуществивших вклад в ядро Linux в районе середины 2.6-ых ядер:

  • Red Hat: 12,3 %
  • IBM: 7,6 %
  • Novell: 7,6 %
  • Intel: 5,3 %
  • Independent consultant: 2,5 %
  • Oracle: 2,4 %
  • Linux Foundation: 1,6 %
  • SGI: 1,6 %
  • Parallels: 1,3 %
  • Renesas Technology: 1,3 %

Модели бизнеса %% ⌘⌘

Заказная ⌘⌘

Каждый проект создаётся на заказ.

  • 50 % экспорта софта из России

Сервисная ⌘⌘

Продаются дополнительные услуги — обучение, поддержка…

  • Red Hat, Novell, Canonical, MySQL
  • Firefox & Google

Гибридная ⌘⌘

Free + Non-Free

Parallels Virtuozzo, RHEL, VirtualBox, MySQL, OpenDarwin/Mac OS X, Zend Server…

Облачная ⌘⌘

Cloud.svg

Продаём работу ПО в своём облаке серверов.

Citrix, SugarCRM, Amazon EC2.

Продажа устройств ⌘⌘

ПО свободно. Продаются устройства.

GalaxyNexus.png Sparkfun.gif

Фонды и пожертвования ⌘⌘

Фонд спонсирует разработку. Кто-то спонсирует фонд.

FSF-Logo.svg Apache Software Foundation Logo.svg Wikimedia-logo.png Wikimedia

Kickstarter logo.png — 1 500 000 $ на Wasteland 2!

Ещё? %% ⌘⌘

Придумайте свою! :-)

Подробно о моделях бизнеса

Сначала по поводу обычного, закрытого, бизнеса. У них одна бизнес-модель:

«Гони бабло и вали отсюда. Не работает? Вали отсюда. Хочешь деньги назад? Читай лицензию и вали отсюда. Хочешь посмотреть что оно делает? Вали отсюда».

В противовес этому, в мире свободного ПО моделей ведения бизнеса много :-)

Заказная модель бизнеса

Каждый проект является специфическим и создаётся под конкретного клиента.

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

Заказная разработка — это ни в коем случае не искусственная мера, а жизненная необходимость — крупные компании всегда имеют обширный набор сформировавшихся процессов, плохо ложащихся на универсальный софт. По статистике, 50 % ПО, продаваемого за рубеж даже из России, разрабатывается на заказ. Из Индии и т. п., я думаю, больше :-)

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

Достаточно почитать про SAP на Lurkmore и посмотреть демотиваторы :-)

Алгоритм внедрения SAP:

  1. Запросите у совета директоров произвольную, но большую сумму денег. (Вариант: $300 миллионов.)
  2. Отдайте половину денег консультантам и попросите их подобрать подходящий для вашей компании пакет ERP. Консультанты проведут шестимесячное обследование вашего бизнеса и в итоге рекомендуют SAP, партнером которого по случайному совпадению они являются.
  3. Сформируйте команду из представителей всех управленческих служб и непрерывно проводите с ними совещания.
  4. Перестройте все бизнес-процессы так, чтобы они соответствовали заложенной в программу модели.
  5. Отдайте консультантам вторую половину денег.
  6. Проинсталлируйте программу.
  7. Непрерывно обучайте пользователей.
  8. Три раза плюньте через левое плечо.
  9. Запустите программу.
  10. Если предприятие все еще держится на плаву, немедленно переходите к шагу 1, потому что вам пора делать апгрейд.
  11.  ????? (сноска: вы никогда не доберетесь до этого пункта!)
  12. PROFIT!!!

Сервисная модель бизнеса

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

То есть, продаётся не «воздух» (не копии ПО), а работа сотрудников.

Примеры:

  • Red Hat, Novell, Canonical — корпоративная поддержка дистрибутивов GNU/Linux. На Novellе, между прочим, сейчас работает Лондонская биржа.
  • MySQL AB, а теперь Oracle, также предлагает поддержку.
  • Поддержка предлагается и к СУБД Ingres.
  • Что Mozilla Foundation, что Opera Software ASA, берут деньги с гугла за поисковые запросы, от них пришедшие. Opera, правда, не свободная, и даже не открытая.

Гибридная модель бизнеса

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

Что характерно, есть и закрытый софт, имеющий бесплатную версию — например, интерактивный дизассемблер IDA. Версия с номером на 0.5 меньшим последней у них бесплатна. Поверьте мне, её функций вам хватит точно так же, ибо их там просто безумное множество :-)

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

Примеры:

  • Компания Parallels разрабатывает свободный проект OpenVZ, но продаёт Virtuozzo и другие системы управления хостингом. Virtuozzo используется почти на всех хостингах, предлагающих услугу VDS (виртуальный выделенный сервер).
  • VirtualBox свободен, но пакет расширений бесплатен только для домашнего использования.
  • MySQL свободен, но есть платная Enterprise-версия, имеющая из коробки соответствующие полезные функции.
  • У Apple есть проект OpenDarwin, в то время как Mac OS X продаётся.
  • Red Hat также имеет платную корпоративную версию — RHEL (Red Hat Enterprise Linux), и несколько других платных продуктов, работающих под Linux.
  • Zend предлагает как открытые, так и закрытые версии Zend Server’а.
  • Ещё вариант — Flash-видеоплееры, например, Flowplayer, из которых за деньги разрешается убирать авторскую символику и делать свои «брендированные» версии. По умолчанию убирать символику нельзя и это не нарушение GPLv3, ибо она представляет собой метки об авторстве (Flowplayer Free License FAQ).

Облачная модель

ПО, как правило, сложное, устанавливается в «облаке» серверов, за пользование ими взимается плата.

Учитывая то, что «в облако» обычно ставится именно технически сложное ПО, его тоже можно смело открывать — чтобы кто-то что-то мог «спереть», ему нужно воссоздать всю инфраструктуру, а она далеко не простая. В то же время сообщество поможет добавить нужные фичи и будет лучше к вам относиться, что позволит даже конкурировать с продуктами другой, более крупной, компании… Которая сделает аналогичное облако, но с закрытым ПО :-)

Примеры — Citrix, SugarCRM, Amazon EC2.

Продажа устройств

Само ПО открыто и свободно. Продаются устройства, работающие под его управлением.

Здесь за примерами ходить не надо не то что далеко, а вообще никуда — Android-смартфона сейчас нет только у собаки, а Android — свободное ПО, распространяется под лицензией Apache.

Правда, Android частично можно отнести и к гибридной модели, и к сервисной. К гибридной — потому что кроме самой системы есть набор несвободных Google’овских приложений (Android Market, Gmail и т. п.), стоящих денег; за их использование производители отчисляют Google лицензионную плату с каждого устройства. К сервисной — потому что немаловажная фича Android-смартфонов — тесная интеграция с гугловскими сервисами.

Ну, есть и ещё одно небольшое замечание — исходники 3-ей версии Андроида так и не были открыты — лицензия Apache не запрещает закрытое производное ПО. Но, к счастью, Гугл снова «торт» и открыл Android 4.0.

Если хотите увидеть примеры помельче, тоже пожалуйста: Sparkfun. Компания разрабатывает мелкую любительскую электронику, и в общем-то всё ПО, которое они к ней пишут, вполне свободно.

Фонды и пожертвования

Создаётся некоммерческая организация — Фонд. Она спонсирует разработку различных свободных проектов. Те, кому это выгодно, спонсируют сам Фонд.

Примеры:

  • Free Software Foundation (привееет, Столлман!)
  • Apache Software Foundation. То, что веб-сервер Apache установлен на подавляющем большинстве веб-сайтов, думаю, знают все.
  • Wikimedia Foundation. Википедию тоже, не поверите, знают все. А я, кстати, занимаюсь доработкой MediaWiki для CUSTIS, и отправляю доработки обратно авторам из викимедии.
  • Python Software Foundation

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

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

Раз мы хотим поднимать качество ПО, значит, с ним есть какие-то проблемы! Некоторые из них уже перечислены выше, в разделе о бизнесе. Это были:

  • Дурное отношение закрытых компаний к пользователям, пользователь — не друг, а потребитель, который и навредить может, и не понимает нифига.
  • Потенциальная необходимость переписывать различные вещи заново либо лицензировать у других таких же проприетарщиков :) что потенциально приводит к увеличению объёма тестирования или
  • Отсутствие преимуществ перед более сильными компаниями, если они вдруг задумают убить ваш продукт. Допустим, кем считал Borland мелкомягких? Своим союзником? :) Если да, то они сильно ошибались, потому что именно МС с их C# и WinForms убил их среды разработки.
  • Тупо использование неудобных инструментов, которые ещё и платные (например, TFS по сравнению с нормальными системами контроля версий). Соответственно, ориентация на закрытую среду, имеющую свои, зачастую идиотские, проблемы.

Пример: на этой же конференции SQADays был доклад про Manageability, про то, что это, мол, новый тренд — писать приложения, которые логгируют в хитрых форматах в десяток странных мест, начиная от Event Log и заканчивая реестром (окончательная жесть!!! а то я думаю, чой-то в реестре такая помойка всегда), а писать текстовые логи — плохой стиль. А-фи-геть. Как раз винда с её десятком инструментов для логгирования известна тем, что найти ошибку часто нереально, а тексты ошибок могут быть неинформативны вообще. А понятные текстовые логи (/var/log) и конфиги (/etc) и наличие удобных базовых инструментов работы с текстовыми файлами — это огромное преимущество UNIX-систем. Найти неизвестную ошибку под Nix’ами почти всегда гораздо проще, чем под несчастной виндой.

Что характерно, есть и виды логов, для которых бинарные БД-подобные форматы могут быть и полезны — всякая статистика и тому подобное, то есть данные, которые нужно часто просматривать с поиском и в различных срезах. Но это отдельная задача — система сбора СТАТИСТИКИ, а не логгирования.

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

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

Раз мы хотим качество, значит, есть проблемы?

Срубить денег vs создать полезное

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

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

Ещё одно отличие от других сфер: сесть и начать творить любой человек может в любой момент. И вот не надо говорить, что для этого нужно иметь программистское образование, пример — это Кон Коливас, лет 8 занимавшийся проблемой отзывчивости Linux’а на настольных компьютерах и реализовавший BFS-планировщик. Риторический вопрос — даст вам кто-нибудь разрабатывать свой планировщик для закрытой винды? Да вам даже никто не даст посмотреть на реализацию стандартного.

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

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

Отношение к пользователям %% ⌘⌘

...и С пользователями

User.svg

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

BlackBox.svg

Юзер не должен знать об устройстве системы

(глупый, сломает, потеряет, украдёт, не заплатит…)

А польза от него одна — деньги!

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

⇒ Система непрозрачна, by design !

MuddyGlass.jpg

Свободное ПО ⌘⌘

  • Система прозрачна.
  • Система не ограничивает пользователя.
  • Пользователь — потенциальный contributor.
  • Открытость к взаимодействию (публичный трекер, вики, мэйллист)…

Отношения закрытого ПО и пользователей

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

Например: разработка и отладка в непрозрачной системе требует специальных инструментов, которые тоже можно продавать. Очень простой пример: UNIX-программисты часто пишут программы, используя только текстовый редактор (я сам являюсь таковым). Для Windows-разработчиков это обычно кажется безумием — разрабатывать без IDE, без средств визуальной вёрстки, без каких-нибудь «средств развёртывания», без специальных средств для просмотра логов (к слову сказать, таких есть не одно и не два, и все обычно неудобны :-))… А ведь это никакое не безумие — просто нам так более удобно, потому что система прозрачна и есть набор базовых UNIX-утилит, позволяющих в одну строчку делать то, что в винде требует кучи действий.

В непрозрачную систему также легче встроить и дополнительные ограничения для пользователя. Непрозрачную систему сложнее проанализировать и понять, что на самом деле там внутри полный тупняк и продавать ЭТО за 25$ они вообще не имеют права. Непрозрачная система скорее всего использует собственные, закрытые стандарты связи и форматы хранения данных, что усиливает «vendor-lock». Простейший пример — карточки SDXC, в которых используется проприетарная файловая система exFAT. А ведь это (закрытую ФС) пропихнули в стандарт.

Короче говоря: принципы прозрачности противоречат принципам закрытости программного обеспечения.

Ещё одна проблема — в закрытости процесса разработки от пользователей.

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

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

Причём этим страдает тот же Гугл со своими закрытыми сервисами типа Blogspot’а — там довольно легко попасть под банхаммер по подозрению в спаме, если вставлять в посты много ссылок (даже значащих). Дальше вас блокируют и дают, что ли, 20 дней на подачу заявки на разблокирование, за статусом которой проследить никак нельзя; если 20 дней пройдёт — блог просто удалят; а при повторной подаче заявки вы просто будете перемещены в конец очереди, что вообще издевательство! Можно выйти на форум техподдержки, где тоже всем всё пофигу, Стас всё-таки вышел ещё дальше — на разработчиков, и довольное лысое хлебало с аватарки сообщило ему, что «да, бывают false positives». На следующем уровне его таки разблокировали, «но осадок остался».

Другой пример — Opera. Публичного багтрекера у них нет, можно отправить баг, но нельзя смотреть, чего с ним делают. Если попытаться добиться ответа в комментах к постам заряженного веществами Desktop Team, вам разве что вынесут предупреждение модераторы, если вы вдруг повторите коммент в двух постах. Ответа же не последует. Команда сосредоточена на разработке новых фич, зачастую совершенно идиотских (Unite), а баги при этом встречаются весьма серьёзные, живущие подолгу и во всех сборках.

Если посмотреть под винду, там это вообще на каждом шагу. Например, сколько существует коммерческих установщиков — не счесть. И все обвешаны хер пойми чем, какими-то своими свистелки-перделки… Потом появляется свободный NSIS и всех уделывает своей простотой.

Кроме того, как уже было упомянуто, это вообще общее свойство производителей — старание выполнять свои обязательства в минимальном объёме (например, гарантийные).

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

А что же в СПО?

В прозрачности, по-моему, и кроется причина такой популярности GNU/Linux/FreeBSD и прочих UNIX-систем на серверах. Потому что если «тупой» пользователь может и не встать на грабли, заботливо разложенные производителем закрытого ПО со всех сторон от стандартного использования, то на серверах тусуются админы и программисты, разрабатывают и разворачивают там много разных программ, и всё это требует лёгкости понимания, чего же там у неё внутри! Кроме того:

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

Репутация ⌘⌘

  • «Мы делаем людям полезное!»
  • «Смотрите, какие у нас крутые разработчики! Наймите нас!»
  • «Наш продукт безопасен — убедитесь сами!»
  • Количество и качество пользовательской базы
  • СПО — именно о качестве, а не о том, чтобы что-то быстро разработать и продать

Репутация — разъяснение

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

Во-вторых, плюсуется сразу и репутация — люди хорошо относятся к тем, кто делает «добро».

«Наш продукт безопасен — убедитесь сами!»: вариантом этого является довольно частый приём, когда компания объявляет немаленькие награды за обнаружение уязвимостей, и их закрывает. Пример — хотя бы Google Chrome. Там один парень конкретно «мочит» — отправил несколько уязвимостей, 25000 $ в кармане :) ещё примеры — Dovecot, да и Firefox тот же.

Сюда же относится и отсуствие вашем продукте ваших закладок — они легко обнаруживаются большим количество глаз. Опять-таки повторимся — для выполнения этого принципа сообщество должно быть. Если его нет — свобода только на бумаге, а не «в головах». Принципы СПО без сообщества не выполняются.

Бесплатные ресурсы ⌘⌘

  • Бесплатные тестеры
    • Закон Линуса
    • Самое лучшее тестирование — тестирование для себя
  • Бесплатные патчеры (даже если патч ещё не принят)
  • Бесплатные программисты ...???
  • Обучение своих, и выбор технологий
  • Защита от «умирания»

Бесплатные… кто?

Note.svg Замечание: поддержка свободного продукта сообществом — это именно тема качества, а не того, чтобы что-то быстро разработать и продать.

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

«Законом Линуса» называют принцип «при достаточном количестве глаз баги всплывают на поверхность». На продукт смотрит большое сообщество, часть этих людей оказываются специалистами, и вместе они быстро находят проблемы.

То есть, основной бесплатный ресурс, который вы получаете при поддержке сообщества — это бесплатные тестировщики.

Следующий ресурс — это, очевидно, бесплатные программисты, но с замечанием — чтобы они реализовывали большие фичи, их может оказаться нужно мотивировать. Пример мотивации — хотя бы GSoC (Google Summer of Code), в процессе которого люди что обучаются, что реализуют новый полезный функционал.

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

Но даже пока вы не примете какой-то полезный патч, люди смогут найти и применить его сами — вы получаете некоторую «страховку от багов».

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

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

Security Via Obscurity ⌘⌘

А также Adware, Spyware и прочие закладки и контроль.

  • Реклама (которую, видимо, уже не осуждают?)
  • Шпионские модули
  • Отрубание совместимости
  • Stuxnet & Иранские Ядерные Центрифуги

Безопасность закрытого ПО

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

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

Поразительно, что, даже несмотря на кучу фейлов, люди всё равно продолжают вставать на эти грабли, а некоторые на них ещё и прыгают! Причём за примерами далеко ходить не надо. Например, GSM-шифр A5/1 сначала держался в секрете, потом, естественно, утёк, оказался хилым и сейчас мобильники можно слушать оборудованием за $1500.

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

Ещё один хороший пример, получивший широкую огласку — это вирус Stuxnet, нацеленный на создание проблем в работе иранских центрифуг по обогащению урана. Центрифуги работают под управлением промышленных контроллеров Siemens, а это штука вообще забавная — в мануале есть такие слова, как «не следует менять пароль по умолчанию, потому что это может привести к проблемам». Но это вроде как бы и ладно — к глобальным сетям такие контроллеры подключаются очень редко. Но вот на иранский объект вирус внедрить получилось — время от времени там появлялась GPRS-связь. И, кстати, вирус имел 2 действительные цифровые подписи — это к вопросу о том, почему стандартная схема «доверия», центром которого является Большой Дядя, очень хреновая. Вирус явно разрабатывался спецслужбами то ли Израиля, то ли США, весил в районе мегабайта и был очень хитрым:

  • Нацеливался только на компьютеры, имеющие в окружении нужный контроллер.
  • При обнаружении перехватывал оба потока данных — и от контроллера к АРМ, и обратный — и долгое время просто мониторил эти параметры.
  • Мог обновляться через Интернет, если таковой внезапно возникал.
  • Мог сливать на сторону перехваченные данные.
  • Самое хитрое — в какой-то момент мог подменять управляющие команды такими, которые заведомо навредят системе, и одновременно подменять обратный поток параметров мониторинга, чтобы выглядело так, как будто всё в порядке.

Вирус-то выловили, но вот наделать дел он, похоже, успел, хотя сами иранцы и говорили, будто бы всё в порядке.

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

Почему в закрытом ПО есть эти проблемы? ⌘⌘

Потому что никто не видит, что внутри!

И всем пофиг на тех, кто снаружи :)

…плюс монополизм, vendor-lock, партнёрство сговор…

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

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

CodeGrabbers.jpg

(а мобильник?..)

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

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

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

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

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

На картинке выше изображены примеры устройства под названием «кодграббер» — «мануфактурный алгоритмический кодграббер». Это устройство в корпусе обычного брелка сигнализации может практически мгновенно взламывать большую часть распространённых сигнализаций, продаётся в интернете и стоит от 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 реле его не поймет из-за шума генератора.

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

Пыщь, пыщь, трололо? %% ⌘⌘

TrollFace.svg

Виталий Филиппов, CUSTIS
Mymailru.gif
http://wiki.4intra.net/
http://yourcmc.ru/wiki/Opensource_и_качество

Прозвучавшие вопросы

  • Вопрос, который характеризует то, что люди действительно часто путаются в терминах «Свободное ПО» и «Open-Source»:
     — Что-то вы путаете эти термины, а ведь есть примеры СПО с закрытыми исходниками!
     — Какие примеры?
     — Ну FAR например
     — А у него свободная лицензия?
     — Бесплатная для некоммерческого использования!
    Ответ: платная для коммерческого использования лицензия — несвободная!
  • Большая дискуссия об Андроиде — о том, что он мол несвободный, то что в телефоне — не Андроид. Нет, Андроид-то как раз свободный (Apache — свободная лицензия!), но в телефоне кроме него действительно есть закрытые части — прошивка радиомодуля, GSM-стек, блобы с фирмварью для touchpad’а. То, что сейчас в большинстве устройств присутствует закрытое ПО — это отдельная тема и отдельная проблема. ИМХО, я не понимаю, в чём проблема полностью открыть драйвер touchpad’а. Это только вопрос идеологии руководства соответствующей компании.
  • Скрытые стоимости владения СПО. Обычно смысл такой — оно имеет менее «дружелюбные» к пользователю интерфейсы, и если вы ваще ни в чём разбираться не хотите, надо либо заказывать поддержку, либо иметь в компании умных людей, которые могут разобраться. Моё мнение такое: а что, если вам потребуются более умные люди для работы с СПО, потому что вначале нужно чему-то научиться, это что, минус? Ведь вы в итоге вложите деньги не в какого-то «дядю», а в своих разработчиков, которые могут (или смогут в будущем) решать более крутые задачи.
  • «Качество СПО, с которым часты всё-таки проблемы». Ответа два: во-первых, оно ещё не так распространено, частично из-за боязни людей начать. Было бы лучше распространено — и качество, о котором вы говорите, могло бы быть и выше. А во-вторых, проблемы бывают, но их можно решить, в отличие от закрытого продукта, с которым при обнаружении проблем у вас есть только два варианта — использовать как есть или не использовать вообще.

Дополнительные заметки

Нужно ещё рассказать о том, что за свободным ПО на самом деле часто стоят организации. Примеров тьма!

  • JBoss / Hibernate
  • Tuxera / ntfs-3g
  • Куча разных / Linux
  • Zend / PHP, Zend Framework
  • Sensio Labs / Symfony
  • Canonical / куча всего вокруг убунты
  • Facebook / HipHop, XHProf, утилиты и патчи к MySQL
  • Trolltech → Nokia → Digia / Qt