350 0.145 3.233.242.216 Home / Open to edit Edit mode New page < > 116 Random page All pages File system Database Purge cPanel phpMyAdmin $_SERVER Help go to WEB pd Hide Exit
14:06:58 часа на 3 август 2011 Visited: 16143, Today: 0
От няколко години програмите, които публикувам са само с отворен код и вече ми се иска с тази статия да разкажа за наблюденията, които имам върху протичането на работата по подобни програми.
Ако все още не знаете какво означава "отворен код", вижте статията в Wikipedia "Софтуер с отворен код" или статията на Радостин Раднев "Софтуерът и софтуерната индустрия". Ако Ви се чете нещо наистина изчерпателно за работа по програми с отворен код, но на английски, вижте Producing Open Source Software
Най-важното при програмите с отворен код е, че те се правят, или поне би трябвало да се правят, от много доброволци, сплотени от идеята, че програмата, която създават е полезна за тях лично, а и за много други хора, които само я ползват, но не помагат пряко за направата й. Работата по програма с отворен код до голяма степен прилича на доброволната работа по други обществено полезни инициативи, например: опазването на околната среда, почистването на пространството пред блока, помагането на стари хора, болни, деца, останали без родители и т.н. В значителната си част такива дейности се изпълняват от институции, на които държавната система плаща, но никой не може да отрече, че полезни резултати дава и незаплащания от никого труд на доброволци. Аналогията със софтуера е, че както има комерсиален софтуер, създаден за да печелят фирмите от него, така има и свободен софтуер, създаден просто за полза на всички. Заради тази прилика по-нататък ще казвам "отворен проект" вместо "програма с отворен код", а и, още повече, мисля, че поуките и обобщенията, направени след наблюдения върху работата по програми с отворен код до голяма степен биха били полезни и за всички хора, предлагащи за реализиране идеи с обществена значимост, за които не може да се осигури търговско финансиране.
Отворените проекти са форма на един вид особена, отворена култура - култура на откритост и споделяне, култура на общуване. Отворените проекти издигат като ценност знанието, разкриването на всички тайни с цел развитието на всички хора, в противовес на поддържането на секретност в името на печалбата на знаещите в ущърб на незнаещите. Отворената култура е култура на уважение към всеки и даване възможност за развитие на всеки.
Точната дума, с която трябва да се нарича човек, представител на отворената култура е ХАКЕР. Моля, забравете негативната, но за съжаление разпространила се представа, че хакерите са криминални типове, които се занимават само с проникване в чужди компютри и кражби. Последните е по-точно да се наричат КРАКЕРИ. Прочетете "Как да стана хакер", за да разберете разликата.
Кога един отворен проект е успешен?
Според мен, когато този проект удовлетворява хората, които по един или друг начин се докосват до него, когато удовлетворява всички: както потребителите, така и разработчиците си и когато поради своята удовлетвореност тези хора продължават както да го ползват, така и да го подобряват.
Има много количествени показатели, по които може да се оценява успехът на един отворен проект:
Високи стойности на тези показатели, взети заедно, биха означавали, че е налична активност около проекта, както от страна на потребители, така и от страна на разработчици. Мисля, че именно наличието на висока активност около даден проект, е добър критерий за успех.
Ще се опитам да разкажа за изводите, до които съм стигнал, за това от какво зависи активността около даден проект и какви са възможностите за нейното повишаване.
От гледната точка на разработчик ще наблегна на това, какво следва да се прави, за да се привличат разработчици или други помагачи към даден проект. Както ще видите, около един отворен проект има голямо разнообразие от дейности. От възникването на идеята за нов проект до успешното му реализиране трябва да се извършат много неща, съобразени с различни фактори. Малко вероятно е един човек да притежава способността да направи всички необходими стъпки по-най правилния начин, а дори и да има такъв човек, едва ли той би имал желание или време да свърши сам цялата работа и при това напълно безвъзмездно. Ето защо привличането на участници и помагачи за различните дейности е много важно за постигането на успешен отворен проект.
Активността на потребителите може да се измери с показатели като: брой посещения на страниците на програмата; брой изтегляния; брой изпратени коментари, предложения или запитвания.
Активността на потребителите по всяка вероятност най-силно зависи от качествата на програмата. Всеки потребител предпочита програмата, която използва, да е лесна за разучаване, лесна за използване и да върши бързо това, което потребителят очаква от нея, и, разбира се, още: да е надеждна, да не прекъсва с неразбираеми съобщения за грешки (да няма бъгове). Когато една програма показва такива качества, потребителите я теглят и използват. Впрочем, това са качества, каквито се изискват от всеки софтуер и те са краен резултат от правилното протичане на технологичния процес на създаване на софтуера. Как се прави софтуер с високо качество, е малко страничен въпрос спрямо това, което искам да споделя, затова няма да го разглеждам пряко, но въпросите, които ще засегна, имат за цел и това - създаване на качествен софтуер, който всеки би предпочитал да използва.
Важно за успешното развитие на един отворен проект е активността на потребителите да не се свежда само до анонимно използване на софтуера, но да се изрази в търсене на контакт с разработчиците, хубаво е потребителите да подават адекватна обратна информация за поведението на софтуера в конкретни условия на използване, да съобщават веднага за открити бъгове, да дават предложения за подобрения и т.н. Това е така, защото особено при малките отворени проекти с един или най-много двама-трима разработчици едва ли има определена отделна роля за някой от разработчиците да провежда тестване на софтуера по специално съставен план. При такива проекти тестове се провеждат само в процеса на програмиране и става така, че много възможни за възникване по време на ползване на софтуера ситуации, не се проверяват. Някои ситуации се случват само на крайните потребители и е възможно в такива, непроверени ситуации, софтуерът да покаже бъгове. Тогава ако потребителите не изпратят съобщение за наблюдаващ се бъг, може да мине много време докато разработчиците случайно го открият и отстранят.
Подобно е положението и с идеите за подобрения. На всеки потребител може да му хрумне някое хитро нововъведение, което силно би улеснило ползването на софтуера, но ако този потребител не го предложи, то ще остане само в неговата глава и може никога да не бъде реализирано.
И така, важен въпрос е: как да се стимулират потребителите да търсят контакт с разработчиците?
Ето нещата, за които аз се сещам, а ако някой от читателите на тази статия се сеща и за други и ги предложи, за да попълним този списък, ще бъде чудесно.
Започнах с активността на потребителите, но както вече посочих, тя е резултат от появата и поддържането на един успешен отворен проект, като в същото време тя е и условие за продължаване на съществуването и успеха на проекта. Преди обаче да се появи каквато и да било потребителска активност, трябва да има отворен проект.
Всеки отворен проект се появява, за да реализира определена полезна идея. На кого ще хрумне тази идея, дали тази идея е нова или не, не е от особено значение, важното е идеята да бъде обявена публично, за да достигне и да бъде приета от хора, които могат и искат да я осъществят.
Често се случва, че такава идея хрумва на някой програмист и той, движен от най-различни подбуди, започва и да я осъществява. Според мен е чиста случайност, че някои идеи се осъществяват направо като отворени проекти. В повечето случаи програмистите първо се опитват да извлекат материална изгода от труда си, и едва при наличие на други обстоятелства, работят върху отворени проекти. Така както е напълно естествено всеки човек да работи първо за заплата, с която да се издържа, и после да участва с доброволен труд в обществени мероприятия.
Така че, ако имате идея за програма, която бихте искали да е безплатна, не се бойте, че някой може да открадне тази идея, а веднага я съобщете на колкото се може повече хора. Дори и да сте програмист и да сте сигурни, че и без чужда помощ ще можете да направите програмата, за която имате идея, ако намерението Ви е наистина да стартирате програма с отворен код, пак започнете с огласяване на идеята, дори и преди да напишете и един ред код. Подходящи места за обявяване на такива идеи са специализирани сайтове като freshmeat.net, интернет форумите и социалните мрежи.
Съществуват специализирани сайтове за безплатно публикуване и работа по проекти с отворен код като: sourceforge.net, code.google.com, github.com и др. (Вижте резултатите на google от търсене с думите "open source hosting" за още информация за такива сайтове.) Ако имате намерение да стартирате отворен проект, то най-добре е да отделите време и положите малко усилия да се запознаете с възможностите, които предлага поне един от тези сайтове, да се регистрирате в него и да стартирате от самото начало проекта си там.
Трябва да си призная, че нито един от проектите, които съм започнал, не е започнат по такъв начин. Сега разбирам, че това е грешка и на тази грешка се дължи липсата на задоволяващ ме успех. При всеки нов проект силно ми се искаше "да си начеша крастата" на програмист, да опитам веднага възникналата идея, да си докажа, че мога... Грешка е, обуздавайте първия силен импулс за трескава работа, защото не винаги създаденото с такива мотиви се оказва качествено, а ако се свърши много работа на такъв етап, по-късно може да се окаже много по-трудоемко да се поправи. По-добре е да започнете да осъществявате идеята си, след като получите обратна информация от други хора за ценността на идеята, за евентуалните начини за осъществяване и т.н. Разглеждането на един проблем от различни гледни точки, води до по-ясното му разбиране и до намиране на по-адекватно решение.
Един отворен проект се нуждае от някаква минимална инфраструктура (Интернет базирани инструменти):
Стартирането на проект без наличие на такава инфраструктура е възможно, но неефективно, поддържането на проект без споменатите инструменти е трудоемко. Също така не е необходимо да се създава необходимата инфраструктура специално за всеки проект поотделно, след като има безплатни сайтове, които предоставят наготово необходимите инструменти и е достатъчно само те да се настроят.
Разработчици ще наричам всички тези хора, които полагат доброволен или спонсориран от някого труд, за да се появи и разпространи, а също и да продължи да се подобрява един отворен проект. Много често ролята на разработчик се изпълнява от един човек, но много по-добре е когато са повече, поради това, че работата по един отворен проект, за да бъде изпълнена качествено, е желателно да се разпредели между тесни специалисти с различен профил.
По същество работата по един отворен проект, освен по това, че се извършва безвъзмездно от една слабо обвързана помежду си общност, едва ли се различава много от работата по който и да било комерсиален софтуер, и може да включва всички, описани в учебниците по софтуерно инженерство елементи.
Ето едно примерно разделение на дейностите, изпълнявани от разработчици:
Всеки, който иска да придобие опит в извършване на някоя от изредените дейности, би могъл да развива уменията си чрез участие в отворени проекти. За целта е необходимо да разгледа даден проект, да види какво е направено в този проект в областта, от която се интересува, да набележи какво би могло да се подобри и да си предложи услугите. Почти сигурно е, че ако предложеното е рационално, то ще бъде посрещнато положително. Отворените проекти са подходящо поле за придобиване на практически опит от любители, ученици, студенти, както и за публична изява на професионалисти.
Активността на разработчиците се измерва с броя на: изтеглянията на първичния код; изпратените мнения, запитвания и предложения по конкретни части от изходния код; разработчиците с достъп да актуализират хранилището с изходен код.
Условия, които влияят положително на активността на разработчиците са:
...
Тази статия още не е завършена, но съм я сложил на сайта, защото се надявам темата да се окаже интересна. А още по-хубаво би било, ако читателите започнат да изпращат и свои мнения и допълнения по темата.