Линукс: Цикълът на тестване

(Обещах в предишния запис да отворя една тема специално за да се карат в коментари под него привърженици на различните ОС колкото си искат. Това не е този запис. Него ще напиша малко по-нататък.)

Красимир Гаджоков изказа в коментар под предишния запис тезата, че фирмените софтуери преминават много по-сериозно тестване от свободните, и затова са по-сигурни. Аз обаче не съм съгласен с него. Според мен механизмите за тестване на свободния софтуер не само дават повече възможности, но потенциално и по-добри резултати. Те обаче са различни от механизмите на “собственическия” софтуер – за да можеш да извлечеш от тях по-добрите резултати, трябва да ги познаваш. Затова и смятам да ги опиша в този запис, и да ги сравня със собственическите.

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

Така е на теория. На практика обаче нещата са по-различни.

Като начало, не съществуват експерти, способни да създадат тестове, които да открият всички или дори почти всички възможни грешки в една програма. За изчистването на точно определен тип грешки например е възможно да се създадат автоматизирани тестове (за някои грешки е по-лесно, за други – по-трудно). Ако програмата е много ограничена като възможности, и има точно определена, добре изучена математически функция, създаването на тестове за всякакви нейни грешки също принципно е възможно. С увеличаване на сложността на програмата обаче сложността на изчистването й от грешки расте експоненциално: типична проста програмка за чат вече е някъде около границата, след която пълното изчистване от грешки вече струва повече, отколкото е икономически смислено да се инвестира.

Затова всяко едно тестване на по-сложни програми задължително включва специалисти, които търсят грешките лично, чрез работа с програмата. Тази работа обаче изисква време, и сложността й също расте с растежа на програмата, но експоненциално. Отделно, почистването на открита грешка не винаги е тривиално. Затова дори най-добрите компании поставят мениджърски срокове за процеса на чистене на грешки. Неизчистените просто си остават в софтуера, и в добрия случай биват коригирани чрез безплатни ъпгрейд-версии, ъпдейтове и/или сървиспакове.

Търсенето на грешки в “собственически” софтуер обикновено е в близо 100% вътрешнокорпоративна дейност; отстраняването им е в 100% вътрешнокорпоративна дейност. Кодът е търговска тайна, така че няма възможност да го преглеждат, още повече пък коригират, външни лица. Малка част от процеса на чистене на грешки се състои в рапорти, получени от външни лица; голямата част е затворена вътре във фирмата, тоест разчита единствено на нейните ресурси (и по-точно на неголяма част от тях). Това обективно създава условия, особено при по-големи софтуери:

– те да бъдат пускани на пазара в не особено изтествано състояние
– и след пускането им на пазара премахването на грешките да не върви по-бързо
– корекциите на грешките да идват късно и бавно, заради по-малкия ресурс зад тях.

Въпреки тези недостатъци, фирмите често произвеждат прилично стабилен софтуер, за сметка на налагани от ръководството високи изисквания и добре отработени методики за писане на код, и осигуряване на преминаването на един минимум изтестване. Класически пример е “желязната” OS/2 – операционна система не само почти без бъгове, но и почти неуязвима за атаки. (Уви, успешно загробена от безумно некадърния й маркетингов екип. Да бяха хванали IBM няколко клошари от улицата, щяха да се справят по-добре…) Друг що-годе приличен пример са продуктите на… Майкрософт. (Ние често ги ругаем колко са зле, но като се има предвид обемът им, всъщност не са никак зле.)

Как стоят нещата при свободния софтуер?

Принципно свободният софтуер не е обвързан с една определена задължителна методика за чистене на грешки. Има обаче методика, която се е наложила като добре работеща в неговите условия. По-долу описвам нея. Известна е като “Release Early, Release Often”.

При тази методика версии на софтуера се пускат често, примерно веднъж на около три месеца за по-малки програми, и на около шест за големи софтуерни пакети. (Фиксиран период често няма – версията се прави за “когато стане готова”.) Версията се пуска след сравнително по-малко изтестване, отколкото при “собственическите” програми. Идеята е, че след като потребителите получават нещата свободно, е редно и те да допринесат в някаква степен за продукта – като го тестват.

Наглед това хич не говори добре за свободния софтуер. На практика обаче нещата пак са по-различни.

Като начало, доста свободни софтуери, особено по-големи, напоследък прилагат преди пускане интензивни батерии тестове, напълно сравними с тези на комерсиалните софтуери. Така че това, което излиза от тях, още в началото си е на нивото на типичен комерсиален софтуер – в нашия случай, критерият ни за “изтестваност”. (А и всеки техен потребител може да ги прекара през подобни батерии от тестове; много често това се прави, при сериозно финансиране, от фирми, които преценяват дали този софтуер е годен за тяхна вътрешна употреба.)

Свободният софтуер се придружава от пълна достъпност на изходния код. Огромен брой професионалисти, както любопитни програмисти, така и експерти по сигурност, могат да ги преглеждат лесно и юридически легално. Това подсигурява на софтуера голям peer review – изпитаният и доказан механизъм за откриване и изчистване на проблеми от всякакъв интелектуален продукт. (Много дисциплини, например науката, не признава едно откритие, ако то не е преминало широк peer review.) Също така, ако авторите на софтуера не са направили нещо полезно, било поради недосетливост, било поради нежелание, всеки има право да го доправи (и обикновено има и достатъчно желаещи). Това допълнително повишава сигурността по начин, който е недостъпен при собственическия софтуер.

За целите на някои потребители – военни, служби за борба с организираната престъпност, и т.н. – пълната достъпност на изходния код е, или при тяхната специфика би трябвало да е задължително условие. Направените от тях прегледи на свободния софтуер са полезни и за всички останали потребители.

Пускането в обръщение на поредната версия свободен софтуер е само началото на истинското й тестване, дори когато той се пише изцяло от фирми. Потребителите му докладват за всякакви проблеми, които са срещнали, авторите предимно ги чистят “наготово”. Достъпният изходен код води до това, че често потребители с програмистки умения дори дават готови корекции. Също, понеже тестването е при потребителите, то улавя почти всички грешки, които е реално програмата да даде при употреба – тестват я тези, които ще я употребяват. Резултатът е голяма степен на покриване на възможните грешки.

Официалната “бързо пусната” поредна версия бива максимално бързо последвана и от “бъгфикс” подверсии, чиято единствена новост е почистването на грешки. Всяка от тях е все по-изчистена от предишните. Обикновено в края на живота си, преди излизането на следващата нова версия (което значи обикновено три до шест месеца), версията е почти напълно изчистена от грешки.

Много продукти дори поддържат по две или повече активни версии едновременно: “стара”, стабилна, “нова”, включваща нови качества, и евентуално междинни. Чистенето на грешките върви паралелно; с узряването “новата” става “стара”, и т.н. Потребителят може да си избира оптималния за него баланс между нови качества и стабилност.

(Всъщност, в комерсиалния софтуер положението е точно същото. Много специалисти например препоръчват на фирми с високи изисквания към работния софтуер да не преминават на нова версия на Уиндоус, преди да излезе за нея един, по възможност дори два сървиспака. Истинското предимство на свободния софтуер тук е, че той казва открито на потребителите си какво е реалното положение с тази или онази версия, и им дава възможност да си изберат информирано оптималното за тях. Иначе нещата са сравними.)

Различните дилъри и интегратори на свободен софтуер се съобразяват с тази негова особеност в различна степен. Най-добро съобразяване с нея съм намерил в Дебиан (който именно и позволи да блесне силата й). По всяко време той поддържа три поддистрибуции с различна новост и изтестваност на софтуера в тях. Така наречената stable най-често съдържа софтуер на по две-три години, но е почти напълно изчистена от грешки: по всяко едно време в типичния stable има около стотина известни бъга, което е нищо на фона на около 20 000-те пакета в него – един бъг на двеста програми… Unstable пък залага на това да съдържа най-нов софтуер, но гаранциите й за изтестваност са по-малки. (Обикновено използвам нея – виждал съм бъгави софтуери, а понякога дори счупени пакетни зависимости. Но като цяло също е сравнима като стабилност с новоизлязла версия на Уиндоус.)

В най-голяма степен нарушават тази система интегратори, които пускат стабилни версии на базата на най-нови софтуери. По критериите на повечето потребители например Убунту или Федора например са ОК, но аз не бих ги сложил на сървър, на който искам да разчитам (поне докато имам като алтернатива Дебиан stable – ще е осезаемо по-стар, но го слагаш и забравяш без угризения на съвестта). Съответно, системите им може да са или да не са стабилни, но са правени не чрез използване на силата на тази методика, а в борба с нея. (Добре де, Убунту LTS след първата си година също вече са до голяма степен изчистени.)

Затова и при подбиране на свободен софтуер е важно методологията му за чистене на грешки да се познава, и потребителят да се съобразява с нея. Ако първият му приоритет е стабилността, не е разумно да се нахвърля на най-нова версия на софтуера. Ако пък е новостта, няма нужда да се мъчи със стабилна, но стара версия. И в двата случая ще ругае софтуера, а грешката ще е негова. Поправи ли си я, ще бъде доволен.

В крайна сметка: свободният софтуер, поне по-често използваните програми, преминава не по-малко, а повече и по-качествено тестване от собственическия. Методиката му за тестване обаче е различна от тази на собственическия; за правилен подбор на софтуер е нужно тя да бъде познавана.

Допитване

Наскоро писах нещичко на тема Линукс. Получи се доста дълга, и като цяло изненадващо цивилизована дискусия.

Която ме накара да се замисля над нещо леко странично.

Прави ми впечатление, че Уиндоус е предпочитан от хора, които не познават Линукс. Хора, които познават Линукс, в големия си процент предпочитат него, дори ако познават Уиндоус още по-добре.

Колко голям е този процент? Трудно ми е да кажа – наблюденията ми са върху малко повече от стотина души, а това е доста малко. Личното ми впечатление е, че става дума за около 90% при десктопа и за около 99% при сървърите.

Това обаче са лични впечатления на един човек. Напълно е възможно да са криви. Затова ми се иска да направя нещо като допитване по въпроса.

Ако вие сте човек, който владее Линукс достатъчно добре, или имате такъв познат, моля ви, драснете един коментар какво предпочитате (или какво предпочита познатият ви), като десктоп и/или като сървър. Идеално би било, ако споменете и защо. А ако драснете и за коя точно дистрибуция на Линукс става дума, ще е супер. Ще ми е полезна и информация доколко владеете Уиндоус, в сравнение с Линукс.

Критерият за достатъчно добро познаване за целта на това допитване е:

– десктоп: умение да работи с офис-пакет на нея, умение да използват специализирани програми в професионалната си област, или хобито си (ако използват такива). Умение да инсталира и настрои системата (мрежа и пр.) са плюс. 🙂
– сървър: умение да инсталира, настрои и администрира безпроблемно уеб сървър, файлов сървър и/или друг сървър от такава класа.

Въпросът е какво предпочитате. Ако по някаква причина сте принудени да работите на друго, то не се брои.

Тролски коментари ще бъдат трити без право на обжалване.

Филми

Наскоро попаднах на новина, че ще се снима филм, в който Робин Уилямс ще играе… Сюзън Бойл.

Посмях се. И си помислих, че сигурно филмът ще е бая гледан.

Ако обаче нещата опират до гледане (а в комерсиален свят опират до него), Ели даде идея за филм, който вероятно ще бъде още по-гледан.

Със Сюзан Бойл в ролята на Робин Уилямс.

Меграхи, изпитанието и правдата

Ако някой е пропуснал – Меграхи е либиецът, който преди осем години беше осъден в Шотландия за взривяването на самолет с повече от двеста души на борда над Локърби. На доживотен затвор.

А преди няколко дни беше освободен. По хуманитарни съображения.

Меграхи и до момента твърди, че е невинен. Нямам представа дали е истина. По-склонен съм да предположа, че не е, но нямам как да съм 100% сигурен.

Веднага след освобождаването много британци обвиниха шотландския министър на правосъдието (който е взел решението), че позори паметта на жертвите. Между тях имаше роднини на загиналите в атентата.

Намесиха се и други държави. САЩ дори настояха за разследване на министъра. И обявиха, че Англия е продала възмездието за жертвите си срещу договори за петрол.

Други хора, включително много британци, подкрепиха освобождаването. И сред тях имаше роднини на загиналите в атентата. Подкрепиха го и други държави, и го обявиха за акт за човечност.

Мисля си – аз на какво мнение съм?

БГ спам

Не вярвам да изненадам някого, ако кажа, че спамът ме дразни. Особено обаче ме дразни българският спам – най-вече заради усещането за безнаказаност на изпращачите си. Съответно, не е имало случай да получа български спам и да не взема поне минимални мерки.

Личният ми сайт се хоства на сървърите на фирмата, в която работя, заедно с още няколко десетки други домейна. Така че първата и задължителна стъпка, която предприемам, е моментално да пренасоча всичката поща от този домейн към акаунт, който е “склад за спам”.

Ползата от това е двойна. От една страна, и аз, и фирмата ми, и клиентите ми за хостинг вече не получават нищо от този спамер. (Оплакали се досега не е имало, а ако проима, ще ги пратя с чиста съвест при арменския поп. Който иска спам, да си вземе акаунт другаде. Моите усилия са в обратната посока.)

От друга страна, така полученият спам е от полза. Няколко пъти на ден SpamAssassin-а изчита автоматично спам-склада, и се учи от него. На нашите сървъри няма да му се наложи да познава тези спамове, но при инсталиране на нови пощенски сървъри за клиенти взимам направо готовата база от моите. Така че пазя от спамерите и клиентите, които ми поръчват сървъри.

(Отделно от това, всичкият минал през мен спам – е-майл, лог-референтен, блог-коментарен и уики-спам – се събира в база данни. Вероятно някой ден ще пусна като услуга възможност той да бъде теглен и ползван за обучаване на антиспамове. Когато смогна. Пак тогава сигурно ще пусна и възможност спамът да се обработва, да се съставят черни списъци на спам-пращащи адреси, на спамвертизирани сайтове и IP хостинги, и т.н.)

Идеалът

“Българският народ има само един идеал: да се обогати. Заради това, пази се да не му попречиш и затваряй си очите пред кражбите. Помилвай някак си незабелязано крадците, особено тези на държавни суми и дръж списъка им затворен в твоето бюро. Когато тоя списък се увеличи, да бъде в процент 10% от населението, то ти си спасен. Знай, че царете се крепят от разбойниците, но те са жертва често на разбойниците, когато не са ги щедро възнаградили”

1918 г., цар Фердинанд, към наследника си Борис.

(Курсивът на предпоследното изречение е мой. От друг коментар не виждам смисъл.)

Честито, мистър Клайн!

Наскоро попаднах на следната история:

След като стъпил на Луната и произнесъл прочутата си фраза за малката стъпка за човека и голямата за човечеството, Нийл Армстронг добавил полугласно: “Честито, мистър Клайн!”. В първия момент от Хюстън не обърнали внимание.

След един голям подскок, стъпвайки отново, Армстронг отново изръсил: “Честито, мистър Клайн!”. Тук вече шефът на дежурния екип наострил уши. От една страна, в такъв момент астронавтите са под невероятно напрежение, и е нормално да го разтоварват както им падне. От друга страна, ако някой от тях не издържи на напрежението, мисията е в страшен риск. Затова и шефът на екипа сръчкал дежурния психолог и попитал: “Кой е мистър Клайн, Нийл?”

Армстронг вероятно се усетил и отговорил: “Спокойно, Хюстън, просто вентилирам натоварването.” Психологът обаче документирал случая. Когато Армстронг се върнал, психолозите го попитали пак същото. Прибавило се и дежурното подозрение на контраразузнавачите. Година-две астронавтът отбивал въпросите, докато не разбрал – или ще даде обяснение, или ще си влачи въпросителната доживот. И разказал за какво става дума.

Още на пет години малкият Нийл по цял ден разглеждал научно-фантастични комикси, и в квартала му се носела слава на отнесен фантазьор. Един ден, докато играел с брат си бейзбол, топката им паднала в двора на съседите. Когато се промъкнал да я вземе, Нийл чул през отворения прозорец госпожа Клайн да крещи: “Орален секс ли? Знаеш ли кога ще видиш орален секс? Когато съседското хлапе кацне на Луната!…”

Като прочетох историята се посмях от сърце.

След това се замислих.

Съмнявам се след повече от трийсет години г-н Клайн още да си е искал орален секс – особено пък от г-жа Клайн. Но ме впечатлява (ако е истина) колко злопаметен е бил Нийл. И си мисля, че сигурно чутото е имало немалък принос в стремежа му да стане астронавт, и да стъпи на Луната.

Милиони деца си мечтаят за това. Почти всичките стават продавачи, юристи или банкови чиновници, или дори пожарникари или полицаи. На Луната стъпват единици. Но и те са достатъчни, за да си струва да има човек уважение и към невероятните мечти. Ясно е, че няма как всеки да стъпи на Луната – но в един момент някой успява, колкото и невероятно да изглежда това. Така че е добре да вярваме в мечтите, или поне да проявяваме към тях уважение.

За да не дойде някой ден г-н Клайн да си поиска обещаното.

GPL

Има ли свобода, която трябва да бъде отнета някъде, за да бъде това място истински свободно?

Има.

Свободата да отнемаш свободата на другите.

Линукс, лъжите и истините

Перфектни операционни системи няма. Всяка си има предимствата и недостатъците, силните и слабите страни. Имат ги и Уиндоус, и Линукс. Не е проблем човек да отдава на всяка от тях дължимото.

Сериозен проблем обаче е как да определи дължимото, ако не е ИТ професионалист с доста опит и в двете системи. Интернет е пълен с умишлени лъжи около тази или онази операционна система. Лъжи, които целят да я обявят за идеална, или – по-често – да я очернят.

Лъжи и в двете посоки се срещат около всяка ОС. Произходът им е най-различен. Всяка ОС си има своите фенове, които я хвалят без мярка, и чернят конкурентите й без мярка. Комерсиалните ОС също много често си имат платени екипи, които го вършат. И често за неспециалиста е трудно да каже кое е вярно – истината няма за цел да бъде убедителна, за разлика от лъжата.

Днешното време, умните и интелигиентни хора… и нормалната държава

Цитат от изказване на бившия зам-директор на ДАНС Иван Драшков (скланян сега за шеф на митниците, ако не ме лъже паметта?) пред БТВ (през блога на Пейо):

“В днешно време българското общество много добре знае, че шансът някой да бъде на контрол по телефона е много голям, и интелигентните и умните хора, когато не искат нещо да се разбере в обществото, те просто не го говорят по телефона”.

С други думи, в българското общество нормалното е телефоните да се подслушват. До степен умните и интелигиентни хора да се съобразяват с това. Трябва да свикнем, и да го приемем.

Да виждате някаква разлика от соц-обществото, примерно при бай Тошо?

Ако не, оти ручахме жабетата?

И дали и примерно американското, немското, френското, английското, шведското, японското и пр. общества много добре знаят същото, и интелигиентните и умните хора в тях се съобразяват? В трилърите и фантастичните филми – да, но в реалния свят?

Ако случайно при тях положението е различно, какво иде да каже това?…

Дали случайно не е, че училището на живота не е като кварталното?

Защото ако в кварталното училище не си научиш урока, примерно за лудия и зелника, пак ще минеш в по-горен клас. В училището на живота не само няма да минеш, но и ако не научиш урока повечко време, въобще ще отпаднеш от образователната програма.

В петте признака на Делян го нямаше това – шеф на митниците да стане човек, който продължава да смята, че подслушването на телефоните е нормално положение, което трябва да приемем. Аз обаче няма да го приема. И ще отбележа още една черна точка за новото ни, май непредставимо старомодно правителство. А на управляваните ще припомня хубавата стара пословица, че денят се познава от заранта.

… Пейо хубаво го е казал – без коментар. Съжалявам, не можах да се въздържа.