Изменения

Перейти к: навигация, поиск

Opensource и качество

26 678 байтов добавлено, 13:38, 3 декабря 2011
м
Нет описания правки
<slideshow title="" style="freesoftware" scaled="true" font="Calibri, Segoe Print, cursive" headingmark="⌘⌘" centermark="%%" incmark="++" subfooter="Opensource и качество, или не плодите софт в неволе" footer="" />
Варианты названия: * <sbig>Opensource и качество, или почему проприетарщина уныла</s>* <s>Opensource и качество, или «я в неволе не размножаюсь»</s>* <s>Opensource и качество, или софт в неволе не плодится!</s>* <s>Opensource</s> Свободное ПО и качество, или не плодите софт в неволе.</big>
==== Тезисы ====
{{----}}
 
=== Программы окружили нас! ⌘⌘ ===
После этого внезапно оказывается, что программу, копии которой как бы нужно покупать, очень легко скопировать, что вообще-то немудрено — копирование является естественной функцией. Выдумываются изощрённые способы защиты, но в конечном итоге ясно, что либо вы контролируете компьютер и можете делать всё что угодно с любыми данными и программами, хранящимися на нём, либо появляется что-то, что имеет контроль над вами. О таких попытках контроля наших с вами компьютеров всегда рассказывает главный идеолог и создатель движения за свободное ПО — Ричард Столлман. Идеи DRM’а, для которых требуется такой контроль — угрожают свободному ПО.
Пока что, к счастью, всё развивается по первому сценарию — все защиты от копирования успешно взламываются. Отсюда и Отсюда и нехороший термин «пиратство». Пиратство подразумевает корабль, абордажные крючья, и, конечно же, море-окиян. Нелицензионное распространение софта столь же обоснованно можно назвать изнасилованием (ц) кто-то.
Отсюда и недоверие к потребителю. Мало того, что он «пиратит», так он ещё и создаёт проблемы своего тупостью — звонит в поддержку, задаёт идиотские вопросы, ничего не понимает… А то, что вы сами делаете его таким — это ничего? Ведь в нашем общества мечта продажника — человек, который зашёл, увидел и купил что-то, не думая. Это недоверие — лишний стимул «избушке» повернуться к пользователю сами знаете каким местом.
; 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 свободы:
CC-0 | {{blue|хороший Public Domain}}
</tab>
 
=== Лицензии [[rupedia:Creative Commons|Creative Commons]] ===
 
CC — семейство лицензий, в основном удобных для не-программных продуктов, по причине использования более общей терминологии.
 
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]].
=== И всё бы хорошо… %% ⌘⌘ ===
[[File:TrollFace.svg|300px]]
 
=== Почему патенты на ПО есть зло ===
 
В первую очередь потому, что 99,99 % патентов на ПО тривиальны в современном мире, но при этом выданы на долгие по современным меркам сроки. Патенты задумывались как средство защиты новых участников рынка, изобретателей, создающих новые полезные фишки, от уже завоевавших рынок участников. Также они ставили своей целью, чтобы компании не хоронили свои технологии в своём цеху, а начинали их открывать, так как они всё равно под защитой.
 
Сейчас же патенты используются в основном а) крупными компаниями, чтобы терроризировать новых игроков рынка и б) патентными троллями — компаниями, не разрабатывающими ничего вообще, а только держащими набор патентов, которые, вероятно, реализует кто-нибудь из реальных разработчиков. Это похоже на деятельность киберсквоттеров, которые занимали домены, названные как готовые торговые марки, чтобы потом перепродать их самим компаниями гораздо дороже.
 
Пример — те же мелкомягкие, затроллив производителей Android-телефонов идиотским патентом на идиотский хак [[rupedia:FAT#LFN-записи|FAT LFN]] (размазывание длинного имени файла по набору 32-байтных direntry), заставил многих отчислять где-то по 25 $ с каждого телефона. Итоговая сумма, которую они зарабатывают на этом троллинге, пока что значительно превышает доходы от Вин Phone 7.
 
Что забавно, даже американские судьи-копирасты понимают, что патенты на ПО то ли уже зашли в тупик, то ли вот-вот зайдут, и есть шансы, что даже они их отменят.
 
Примеры таких «патентов» приведены ниже:
=== M$ -> Barnes&Noble ⌘⌘ ===
==== Сервисная ⌘⌘ ====
{{green|''Продаются дополнительные услуги — услуги — обучение, поддержка…''}}
* Red Hat, Novell, Canonical, MySQL
{{green|''Фонд спонсирует разработку. Кто-то спонсирует фонд.''}}
[[File:FSF-Logo.svg|200px]] [[File:Apache Software Foundation Logo.svg|200px]] [[File:Wikimedia-logo.png|60px]] &nbsp;<big>Wikimedia</big>
==== Ещё? %% ⌘⌘ ====
== Свободное ПО и качество ==
 
Раз мы хотим поднимать качество ПО, значит, с ним есть какие-то проблемы! Некоторые из них уже перечислены выше, в разделе о бизнесе. Это были:
* Дурное отношение закрытых компаний к пользователям, пользователь — не друг, а потребитель, который и навредить может, и не понимает нифига.
* Потенциальная необходимость переписывать различные вещи заново либо лицензировать у других таких же проприетарщиков :) что потенциально приводит к увеличению объёма тестирования или
* Отсутствие преимуществ перед более сильными компаниями, если они вдруг задумают убить ваш продукт. Допустим, кем считал Borland мелкомягких? Своим союзником? :) Если да, то они сильно ошибались, потому что именно МС с их C# и WinForms убил их среды разработки.
* Тупо использование неудобных инструментов, которые ещё и платные (например, TFS по сравнению с нормальными системами контроля версий). Соответственно, ориентация на закрытую среду, имеющую свои, зачастую идиотские, проблемы.
 
Пример: на этой же конференции SQADays был доклад про Manageability, про то, что это, мол, новый тренд — писать приложения, которые логгируют в хитрых форматах в десяток странных мест, начиная от Event Log и заканчивая реестром (окончательная жесть!!! а то я думаю, чой-то в реестре такая помойка всегда), а писать текстовые логи — плохой стиль. А-фи-геть. Как раз винда с её десятком инструментов для логгирования известна тем, что найти ошибку часто нереально, а тексты ошибок могут быть неинформативны ''вообще''. А понятные текстовые логи (/var/log) и конфиги (/etc) и наличие удобных базовых инструментов работы с текстовыми файлами — это огромное преимущество UNIX-систем. Найти неизвестную ошибку под Nix’ами почти всегда гораздо проще, чем под несчастной виндой.
 
Что характерно, есть и виды логов, для которых бинарные БД-подобные форматы могут быть и полезны — всякая статистика и тому подобное, то есть данные, которые нужно часто просматривать с поиском и в различных срезах. Но это отдельная задача — система сбора СТАТИСТИКИ, а не логгирования.
=== Свободное ПО и качество {{green|&uarr;&uarr;}} ⌘⌘ ===
Нет, всё это, опять-таки не значит, что любая закрытая программа обязательно скатится в говно. Это значит, что удержаться от скатывания в говно закрытому софту труднее, чем свободному. Говно — это «асимптотически равновесное состояние» закрытого софта :)
Отличие Ещё одно отличие от других сфер: сесть и начать творить можно любой человек может в любой момент. И вот не надо говорить, что для этого нужно иметь программистское образование, пример — это [[wikipedia:Con Kolivas|Кон Коливас]], лет 8 занимавшийся проблемой отзывчивости Linux’а на настольных компьютерах и реализовавший [[rupedia:Brain Fuck Scheduler|BFS]]-планировщик. Риторический вопрос — даст вам кто-нибудь разрабатывать планировщик для закрытой винды? Да вам даже никто не даст посмотреть на его реализацию.
Это всё не значит, что если ПО свободное, оно сразу лучшего качества, чем несвободное. Но по крайней мере, если вы вдруг обнаружите недостатки качества свободного ПО, вы хотя бы ''можете'' их исправить. А в случае закрытого — ''у вас даже нет шанса''. «Система, которая не может сломаться, плоха тем, что её невозможно починить, если она всё-таки сломается». :)
=== Отношения с пользователями: {{green|СПО}} ⌘⌘ ===
* {{blue|Открытость }} нужна , в головах, а не на бумаге, и СПО ей способствует!}}
* Пользователь — ваш друг.
* <s style="color:red">Тупые юзеры</s> исчезают.
* Публичный багтрекер, вики, мэйллист — лёгкость Feedback’а.
* Симбиоз с сообществом.
 
=== Отношения с пользователем — разъяснение ===
 
Как часта ситуация, когда для техподдержки составляется жёсткий регламент, по которому они должны отвечать? В чём же дело? Очевидно, в том, что там частенько работают гоблины. Студенты, не имеющие опыта никакого вообще, просто люди с улицы, но в общем, не эльфы в любом случае.
 
Так что когда вы обнаруживаете ошибки в закрытом софте, максимум, что вы можете сделать — это пожаловаться техподдержке, которая скажет «мы создали инцидент, до свидания», и потом ждать — вдруг поправят? Можно пойти дальше, найти разработчиков и пожаловаться напрямую им, но и у них может быть всё зарегламентировано — с какой стати они будут выполнять чьи-то непонятные пожелания?
 
Причём этим страдает тот же Гугл со своими закрытыми сервисами типа Blogspot’а — там довольно легко попасть под банхаммер по подозрению в спаме, если вставлять в посты много ссылок (даже значащих). Дальше вас блокируют и дают, что ли, 20 дней на подачу заявки на разблокирование, за статусом которой проследить никак нельзя; если 20 дней пройдёт — блог просто удалят; а при повторной подаче заявки вы просто будете ''перемещены в конец очереди'', что вообще издевательство! Можно выйти на форум техподдержки, где тоже всем всё пофигу, [http://stas-fomin.blogspot.com Стас] всё-таки вышел ещё дальше — на разработчиков, и довольное лысое хлебало с аватарки сообщило ему, что «да, бывают false positives». На следующем уровне его таки разблокировали, «но осадок остался».
 
Другой пример — Opera. Публичного багтрекера у них нет, можно отправить баг, но нельзя смотреть, чего с ним делают. Если попытаться добиться ответа в комментах к [http://my.opera.com/desktopteam/blog/ постам заряженного веществами Desktop Team], вам разве что вынесут предупреждение модераторы, если вы вдруг повторите коммент в двух постах. Ответа же не последует. Команда сосредоточена на разработке новых фич, зачастую совершенно идиотских (Unite), а баги при этом встречаются [http://yourcmc.ru/wiki/%D0%91%D0%BB%D0%BE%D0%B3:%D0%92%D0%B8%D1%82%D0%B0%D0%BB%D0%B8%D0%B9_%D0%A4%D0%B8%D0%BB%D0%B8%D0%BF%D0%BF%D0%BE%D0%B2/2011-11-14_Opera_-_%D0%B7%D0%B0%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B3%D0%BE%D0%B2%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BC%D0%B5%D1%82%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%85%D0%B0%D0%B1%D1%80%D0%B5 весьма серьёзные], живущие подолгу и во всех сборках.
 
Кроме того, как уже было упомянуто, это вообще общее свойство производителей — старание выполнять свои обязательства в минимальном объёме (например, гарантийные).
 
Короче говоря — здесь проблема в том, что закрытая избушка к лесу-то обычно лицом, а к пользователю-то… другим местом.
 
{{blue|В противовес этому, в открытой модели разработки:}}
* Копию украсть нельзя или не нужно большинству пользователей, так как есть свободная версия
* Пользователи имеют стимул разбираться в том, как оно работает, обучаться, переставать быть «тупыми юзерами» и отправлять гораздо более грамотный фидбэк
* Вы даёте полезный продукт сообществу, а сообщество даёт вам свой вклад в его развитие и тестирование, а также репутацию — сотрудничество получается взаимовыгодное, то бишь симбиоз :)
=== Репутация ⌘⌘ ===
* «Мы делаем людям полезное»
* В {{green|вашем}} продукте нет {{green|ваших}} закладокНаш продукт безопасен — убедитесь сами!
* Количество и качество пользовательской базы
* СПО — именно о качестве, а не о том, чтобы что-то быстро разработать и продать
* Открытые инструменты разработки=== Репутация — разъяснение === Ну, во-первых, если вы на слуху в сообществе со своим свободным продуктам, пользователям при небольшом усилии очень легко начать его использовать бесплатно, что сразу даёт ''большой прирост пользовательской базы''. Как уже было отмечено выше, прирост этот ещё и качественный, состоит из лучших специалистов, чем средний «быдлоюзер». Во-вторых, плюсуется сразу и репутация — люди хорошо относятся к тем, кто делает «добро». ''«Наш продукт безопасен — убедитесь сами!»'': вариантом этого является довольно частый приём, когда компания объявляет немаленькие награды за обнаружение уязвимостей, и их закрывает. Пример — хотя бы Google Chrome. Там один парень конкретно «мочит» — отправил несколько уязвимостей, 25000 $ в кармане :) ещё примеры — [http://dovecot.org/security.html Dovecot], да и [http://www.mozilla.org/security/bug-bounty.html Firefox тот же]. Сюда же относится и отсуствие {{green|вашем}} продукте {{green|ваших}} закладок — они легко обнаруживаются большим количество глаз. Опять-таки повторимся — для выполнения этого принципа сообщество должно ''быть''. Если его нет — свобода только на бумаге, а не «в головах». Принципы СПО без сообщества не выполняются.
=== Бесплатные ресурсы ⌘⌘ ===
* Обучение своих, и выбор технологий
* Защита от «умирания»
 
=== Бесплатные… кто? ===
 
{{note}} Замечание: поддержка свободного продукта сообществом — это именно тема качества, а не того, чтобы что-то быстро разработать и продать.
 
Ибо у сообщества есть огромные «бесплатные» ресурсы для тестирования и обнаружения проблем, но обычно не хватает инициативы для быстрой реализации чего-то с нуля. А самое лучшее тестирование — это тестирования для себя, то есть когда вы являетесь и тестером, и пользователем. Идеально, если вы при этом ещё и программист — тогда ошибку даже можно сразу исправить.
 
«Законом Линуса» называют принцип «при достаточном количестве глаз баги всплывают на поверхность». На продукт смотрит большое сообщество, часть этих людей оказываются специалистами, и вместе они быстро находят проблемы.
 
То есть, основной бесплатный ресурс, который вы получаете при поддержке сообщества — это бесплатные тестировщики.
 
Следующий ресурс — это, очевидно, бесплатные программисты, но с замечанием — чтобы они реализовывали большие фичи, их может оказаться нужно мотивировать. Пример мотивации — хотя бы GSoC (Google Summer of Code), в процессе которого люди что обучаются, что реализуют новый полезный функционал.
 
Патчи же, исправляющие ошибки, люди пишут часто и отправляют с лёгкостью. О чём тут главное помнить: это ваши пользователи, и они хотят вам помочь. Не нужно отправлять их на все 4 стороны с патчем! Они ведь уже помогли вам (как сумели), не нужно им хамить в ответ! Если даже патч кривой, постарайтесь рассмотреть сам функционал, в нём реализованный, и переписать его так, как надо. Люди любят поддержку и внесение своего вклада в известные продукты, и обязательно отблагодарят вас в будущем новыми патчами и доработками :-)
 
О чём ещё можно сказать? Об ''обучении своих сотрудников с помощью внешнего сообщества''. Не думайте, что все самые умные люди сосредоточены в вашей компании :-) снаружи таких тоже немало, и у них есть, чему учиться. Обучение, кстати, имеет смысл в более общем смысле, чем обучение ''только на своём'' сообществе — здесь имеется ввиду вообще полезность того, что ваши сотрудники принимают активно участие в жизни сообществ свободных проектов.
 
Ну, и последнее — это некоторая «защита от умирания продукта», которую вы получаете, имея сообщество. Например, вы можете закончить оказывать услуги поддержки устаревшего продукта, разработка которого вам более неинтересна, а продукт «отпустить» на свободу — пусть поддержкой занимается сообщество или вообще другая фирма. Закрытое ПО такой возможности не имеет — при окончании поддержки пользователи вынуждены в любом случае отказываться от программы, так как расковырять её сами они не могут.
=== Security Via Obscurity ⌘⌘ ===
* Отрубание совместимости
* Stuxnet & Иранские Ядерные Центрифуги
 
=== <s>Безопасность</s> закрытого ПО ===
 
А точнее, {{red|НЕ}}безопасность! Никто не знает, что скрывается внутри, и никто потенциально полезный не может проверить, нет ли там каких-нибудь уязвимостей, не говоря уже о закладках и шпионских модулях.
 
Ибо закрытая разработка программного обеспечения поощряет принцип «Security Through Obscrurity», который известен уже очень давно, но почему-то продолжает создавать всем проблемы. По-русски принцип называется «безопасность через сокрытие» и смысл его состоит в том, что если никто не знает, как оно работает, то никто, вероятно, не сможет это взломать. Короче говоря, «ключ под ковриком» — безопасно, потому что никто не знает, где он лежит. Но при этом достаточно один раз подсмотреть, как вы достаёте ключ, чтобы скомпрометировать безопасность всей двери, не говоря уже о том, что взломщик в первую очередь посмотрит именно под коврик :)
 
Поразительно, что, даже несмотря на кучу фейлов, люди всё равно продолжают вставать на эти грабли, а некоторые на них ещё и прыгают! Причём за примерами далеко ходить не надо. Например, GSM-шифр [[wikipedia:A5/1|A5/1]] сначала держался в секрете, потом, естественно, утёк, оказался хилым и сейчас мобильники можно слушать оборудованием за $1500.
 
На самом деле, проблема даже шире, потому что в сфере информационных технологий границы государств практически отсутствуют, и вместе со всеми плюсами через них также проникает монополия, что может легко привести даже к угрозам национальной безопасности.
 
Ещё один хороший пример, получивший широкую огласку — это вирус [[rupedia:Stuxnet|Stuxnet]], нацеленный на создание проблем в работе иранских центрифуг по обогащению урана. Центрифуги работают под управлением промышленных контроллеров Siemens, а это штука вообще забавная — в мануале есть такие слова, как «не следует менять пароль по умолчанию, потому что это может привести к проблемам». Но это вроде как бы и ладно — к глобальным сетям такие контроллеры подключаются очень редко. Но вот на иранский объект вирус внедрить получилось — время от времени там появлялась GPRS-связь. И, кстати, вирус имел 2 действительные цифровые подписи — это к вопросу о том, почему стандартная схема «доверия», центром которого является Большой Дядя, очень хреновая. Вирус явно разрабатывался спецслужбами то ли Израиля, то ли США, весил в районе мегабайта и был очень хитрым:
* Нацеливался только на компьютеры, имеющие в окружении нужный контроллер.
* При обнаружении перехватывал оба потока данных — и от контроллера к АРМ, и обратный — и долгое время просто мониторил эти параметры.
* Мог обновляться через Интернет, если таковой внезапно возникал.
* Мог сливать на сторону перехваченные данные.
* Самое хитрое — в какой-то момент мог подменять управляющие команды такими, которые заведомо навредят системе, и одновременно подменять обратный поток параметров мониторинга, чтобы выглядело так, как будто всё в порядке.
 
Вирус-то выловили, но вот наделать дел он, похоже, успел, хотя сами иранцы и говорили, будто бы всё в порядке.
 
Как всегда — хотите примеры помельче? Пожалуйста: автоматическое обновление вашей винды позволяет мелкомягким разработать какое-нибудь обновление специально для вашего компьютера, а вы ничего не заметите и установите его. Второй вариант: в офис приходят маски-шоу, и все шиндовш-машины быстренько отдают по сети реестр :)
=== Почему в закрытом ПО есть эти проблемы? ⌘⌘ ===
Ответ простой: {{red|Монополия. До отдельных пользователей никому нет делаи Сговор}}.
=== Меня это не касается! %% ⌘⌘ ===
=== Сигналки — разъяснение ===
Закрытая разработка программного обеспечения поощряет принцип «Security Through Obscrurity», который известен уже очень давно, но почему-то продолжает создавать всем проблемы. По-русски принцип называется «безопасность через сокрытие» и смысл его состоит в том, что если никто не знает, как оно работает, то никто, вероятно, не сможет это взломать. Короче говоря, «ключ под ковриком» — безопасно, потому что никто не знает, где он лежит. Но при этом достаточно один раз подсмотреть, как вы достаёте ключ, чтобы скомпрометировать безопасность всей двери, не говоря уже о том, что взломщик в первую очередь посмотрит именно под коврик :) Поразительно, что, даже несмотря на кучу фейлов, люди всё равно продолжают вставать на эти грабли, а некоторые на них ещё и прыгают! Причём за примерами далеко ходить не надо. Например, GSM-шифр [[wikipedia:A5/1|A5/1]] сначала держался в секрете, потом, естественно, утёк, оказался хилым и сейчас мобильники можно слушать оборудованием за $1500. Ещё более весёлый пример — пример Security Via Obscurity — отсутствующая безопасность большинства автосигнализаций и даже многих иммобилайзеров. Если вы думаете, что для открытия вашей машины применяется хорошо криптографически защищённый диалог между брелком и машиной, вы очень сильно ошибаетесь :)
На картинке выше изображены примеры устройства под названием «кодграббер» — «мануфактурный алгоритмический кодграббер». Это устройство в корпусе обычного брелка сигнализации может практически мгновенно взламывать большую часть распространённых сигнализаций, продаётся в интернете и стоит от 80 до 150 тысяч рублей. Мануфактурный значит, что для взлома частично используются коды, полученные в результате утечек мастер-кодов с завода-изготовителя. Но что там утечки — у большинства сигнализаций статический диалог — перехватил, повторил и дело в шляпе.
Что-что? «А у меня Black Bug»? Да, он относительно продвинутый, с меткой, беспроводными сложнообнаруживаемыми реле «hook-up», «wait-up» и динамическим диалогом («система посылает случайное число, которое метка должна преобразовать в соответствии с определенным нелинейным алгоритмом и отправить обратно»). Но, во-первых, у старых релюх тот же статический диалог, во-вторых, неизвестно, насколько криптостоек динамический…

Навигация