Ochiq kodli loyihani qanday yaratish kerak

Ochiq kodli loyihani qanday yaratish kerakShu haftada Sankt-Peterburgda IT-festival bo‘lib o‘tadi TechTrain. Ma'ruzachilardan biri Richard Stallman bo'ladi. Embox festivalda ham ishtirok etadi va albatta biz bepul dasturiy ta'minot mavzusini e'tiborsiz qoldira olmadik. Shuning uchun bizning hisobotlarimizdan biri deyiladi “Talabalar hunarmandchiligidan ochiq manba loyihalarigacha. Embox tajribasi”. U ochiq kodli loyiha sifatida Emboxning rivojlanish tarixiga bag'ishlanadi. Ushbu maqolada men ochiq manba loyihalarini rivojlantirishga ta'sir qiladigan asosiy g'oyalar haqida gapirmoqchiman. Maqola, hisobot kabi, shaxsiy tajribaga asoslangan.

Keling, oddiy narsadan, ochiq manba atamasining ta'rifidan boshlaylik. Shubhasiz, ochiq kodli loyiha - bu loyihaning manba kodiga kirish imkonini beruvchi litsenziyalardan biriga ega bo'lgan loyiha. Bundan tashqari, ochiq loyiha uchinchi tomon ishlab chiquvchilari o'zgarishlar kiritishi mumkinligini anglatadi. Ya'ni, agar biron bir kompaniya yoki ishlab chiquvchi o'z mahsulotining kodini qisman yoki to'liq nashr etsa, bu hali bu mahsulotni ochiq manba loyihasiga aylantirmaydi. Va nihoyat, har qanday loyiha faoliyati qandaydir natijaga olib kelishi kerak va loyihaning ochiqligi bu natijadan nafaqat ishlab chiquvchilar tomonidan qo'llanilishini anglatadi.

Biz ochiq litsenziyalar muammolariga tegmaymiz. Bu juda katta va murakkab mavzu bo'lib, chuqur o'rganishni talab qiladi. Ushbu mavzu bo'yicha juda ko'p yaxshi maqolalar va materiallar yozilgan. Ammo men o'zim mualliflik huquqi sohasida mutaxassis bo'lmaganim uchun faqat litsenziya loyiha maqsadlariga javob berishi kerakligini aytaman. Misol uchun, Embox uchun GPL litsenziyasi o'rniga BSD ni tanlash tasodifiy emas edi.

Ochiq kodli loyiha o'zgartirishlar kiritish va ochiq kodli loyihaning rivojlanishiga ta'sir qilish qobiliyatini ta'minlashi kerakligi loyihaning taqsimlanganligini anglatadi. Uni boshqarish, yaxlitlik va samaradorlikni saqlash markazlashtirilgan boshqaruvga ega loyihaga qaraganda ancha qiyin. O'rtacha savol tug'iladi: nega umuman loyihalar ochiladi? Javob tijorat maqsadga muvofiqligi sohasida yotadi; loyihalarning ma'lum bir sinfi uchun ushbu yondashuvning foydasi xarajatlardan ustundir. Ya'ni, u barcha loyihalar uchun mos emas va ochiq yondashuv odatda maqbuldir. Misol uchun, ochiq printsip asosida elektr stantsiyasi yoki samolyotni boshqarish tizimini ishlab chiqishni tasavvur qilish qiyin. Yo'q, albatta, bunday tizimlar ochiq loyihalarga asoslangan modullarni o'z ichiga olishi kerak, chunki bu bir qator afzalliklarni beradi. Lekin kimdir yakuniy mahsulot uchun javobgar bo'lishi kerak. Tizim to'liq ochiq loyihalar kodiga asoslangan bo'lsa ham, ishlab chiquvchi hamma narsani bitta tizimga to'plagan va ma'lum tuzilmalar va sozlashlarni amalga oshirib, uni asosan yopadi. Kod hamma uchun ochiq bo'lishi mumkin.

Ushbu tizimlar uchun ochiq kodli loyihalarni yaratish yoki ularga hissa qo'shishning ko'plab afzalliklari mavjud. Aytganimdek, oxirgi tizim kodi hamma uchun ochiq bo'lib qolishi mumkin. Nega, chunki tizimni sinab ko'rish uchun hech kim bir xil samolyotga ega bo'lishi dargumon. Bu to'g'ri, lekin kodning ma'lum bo'limlarini tekshirishni xohlaydigan kimdir bo'lishi mumkin yoki, masalan, kimdir foydalanilayotgan kutubxona unchalik to'g'ri sozlanmaganligini aniqlashi mumkin.

Agar kompaniya tizimning asosiy qismini alohida loyihaga ajratsa, yanada katta foyda ko'rinadi. Masalan, ma'lumotlar almashinuvi protokolini qo'llab-quvvatlash uchun kutubxona. Bunday holda, protokol ma'lum bir mavzu sohasiga xos bo'lsa ham, tizimning ushbu qismini saqlash xarajatlarini ushbu sohadagi boshqa kompaniyalar bilan bo'lishishingiz mumkin. Bundan tashqari, tizimning ushbu qismini jamoat mulki sifatida o'rgana oladigan mutaxassislar undan samarali foydalanish uchun kamroq vaqt talab etadilar. Va nihoyat, bir qismni uchinchi tomon ishlab chiquvchilari foydalanadigan mustaqil ob'ektga ajratish bizga ushbu qismni yaxshilashga imkon beradi, chunki biz samarali API'larni taklif qilishimiz, hujjatlarni yaratishimiz kerak va men hatto test qamrovini yaxshilash haqida gapirmayapman.

Kompaniya ochiq manbali loyihalar yaratmasdan tijorat foyda olishi mumkin, buning uchun uning mutaxassislari kompaniyada foydalaniladigan uchinchi tomon loyihalarida ishtirok etishlari kifoya. Axir, barcha imtiyozlar saqlanib qoladi: xodimlar loyihani yaxshiroq bilishadi, shuning uchun ular undan samaraliroq foydalanadilar, kompaniya loyihaning rivojlanish yo'nalishiga ta'sir qilishi mumkin va tayyor, tuzatilgan koddan foydalanish kompaniyaning xarajatlarini kamaytiradi.

Ochiq manbali loyihalarni yaratishning afzalliklari shu bilan tugamaydi. Keling, biznesning marketing kabi muhim tarkibiy qismini olaylik. Uning uchun bu bozor talablarini samarali baholash imkonini beruvchi juda yaxshi qum qutisi.

Va, albatta, shuni unutmasligimiz kerakki, ochiq manba loyihasi o'zingizni har qanday ixtisoslikning tashuvchisi sifatida e'lon qilishning samarali usulidir. Ba'zi hollarda, bu bozorga kirishning yagona yo'li. Masalan, Embox RTOS yaratish loyihasi sifatida boshlangan. Raqobatchilar ko'pligini tushuntirishga hojat yo'qdir. Hamjamiyat yaratmagan holda, bizda loyihani oxirgi foydalanuvchiga etkazish uchun, ya'ni uchinchi tomon ishlab chiquvchilari loyihadan foydalanishni boshlash uchun etarli resurslarga ega bo'lmagan bo'lardik.

Ochiq kodli loyihada hamjamiyat kalit hisoblanadi. Bu sizga loyihani boshqarish xarajatlarini sezilarli darajada kamaytirish, loyihani ishlab chiqish va qo'llab-quvvatlash imkonini beradi. Aytishimiz mumkinki, jamiyatsiz ochiq manbali loyiha umuman bo'lmaydi.

Ochiq kodli loyihalar hamjamiyatini qanday yaratish va boshqarish haqida ko'plab materiallar yozilgan. Ma'lum bo'lgan faktlarni takrorlamaslik uchun men Embox tajribasiga e'tibor qaratishga harakat qilaman. Masalan, jamiyat yaratish jarayoni juda qiziq masala. Ya'ni, ko'pchilik mavjud jamoani qanday boshqarishni aytadi, lekin uni yaratish lahzalari ba'zan e'tibordan chetda qoladi, chunki bu berilgan.

Ochiq manbali loyihalar hamjamiyatini yaratishda asosiy qoida shundaki, hech qanday qoidalar yo'q. Aytmoqchimanki, hech qanday universal qoidalar yo'q, xuddi kumush o'q yo'qligi kabi, agar loyihalar juda boshqacha bo'lsa. Js logging kutubxonasi va ba'zi yuqori ixtisoslashgan drayverlar uchun hamjamiyat yaratishda siz bir xil qoidalardan foydalanishingiz mumkin emas. Bundan tashqari, loyiha (va shuning uchun hamjamiyat) rivojlanishining turli bosqichlarida qoidalar o'zgaradi.

Embox talabalar loyihasi sifatida boshlangan, chunki u tizimlarni dasturlash bo'limi talabalariga kirish huquqiga ega edi. Aslida, biz boshqa jamiyatga kirayotgan edik. Biz ushbu hamjamiyat ishtirokchilari, talabalarni o'z mutaxassisligi bo'yicha ilg'or ishlab chiqarish amaliyoti, tizimli dasturlash sohasidagi ilmiy ishlar, kurs ishlari va diplomlar bilan qiziqtirishimiz mumkin edi. Ya'ni, biz jamiyatni tashkil etishning asosiy qoidalaridan biriga amal qildik: jamoa a'zolari biror narsa olishlari kerak va bu narx ishtirokchining hissasiga mos kelishi kerak.

Embox uchun keyingi bosqich uchinchi tomon foydalanuvchilarini qidirish edi. Foydalanuvchilar ochiq manbalar hamjamiyatining to'liq ishtirokchilari ekanligini tushunish juda muhimdir. Odatda ishlab chiquvchilardan ko'ra ko'proq foydalanuvchilar bor. Va loyihaga hissa qo'shmoqchi bo'lish uchun ular birinchi navbatda undan u yoki bu tarzda foydalanishni boshlaydilar.

Embox-ning birinchi foydalanuvchilari Nazariy kibernetika kafedrasi edi. Ular Lego Mindstorm uchun muqobil proshivka yaratishni taklif qilishdi. Garchi ular hali ham mahalliy foydalanuvchilar bo'lsa ham (biz ular bilan shaxsan uchrashib, ular xohlagan narsani muhokama qilishimiz mumkin edi). Ammo bu hali ham juda yaxshi tajriba edi. Misol uchun, biz boshqalarga ko'rsatilishi mumkin bo'lgan demolarni ishlab chiqdik, chunki robotlar qiziqarli va e'tiborni tortadi. Natijada, biz Embox nima ekanligini va undan qanday foydalanishni so'rashni boshlagan haqiqiy uchinchi tomon foydalanuvchilarini oldik.

Ushbu bosqichda biz hujjatlar, foydalanuvchilar bilan aloqa vositalari haqida o'ylashimiz kerak edi. Yo'q, albatta, biz bu muhim narsalar haqida avval o'yladik, lekin bu erta edi va ijobiy ta'sir ko'rsatmadi. Ta'sir nisbatan salbiy edi. Sizga bir-ikki misol keltiraman. Biz google kodidan foydalandik, uning wiki koʻp tillilikni qoʻllab-quvvatlaydi. Biz bir necha tillarda sahifalar yaratdik, nafaqat ingliz va rus, balki biz zo'rg'a gaplashadigan, balki nemis va ispan tillarida ham. Natijada, bu tillarda so'ralganda, bu juda kulgili ko'rinadi, lekin biz umuman javob bera olmaymiz. Yoki ular hujjatlarni yozish va sharhlash qoidalarini joriy qilishdi, lekin API tez-tez va sezilarli darajada o'zgarganligi sababli, bizning hujjatlarimiz eskirganligi va yordam berganidan ko'ra ko'proq chalg'ituvchi ekanligi ma'lum bo'ldi.

Natijada, bizning barcha harakatlarimiz, hatto noto'g'ri bo'lsa ham, tashqi foydalanuvchilarning paydo bo'lishiga olib keldi. Va hatto o'zining RTOS-ni u uchun ishlab chiqilishini istagan tijorat mijozi paydo bo'ldi. Va biz uni ishlab chiqdik, chunki bizda tajriba va ba'zi asoslar mavjud. Bu erda siz ham yaxshi, ham yomon haqida gapirishingiz kerak. Men yomonlaridan boshlayman. Ko'pgina ishlab chiquvchilar ushbu loyihaga tijorat asosida jalb qilinganligi sababli, jamiyat allaqachon beqaror va bo'lingan edi, bu, albatta, loyihaning rivojlanishiga ta'sir qilishi mumkin emas edi. Qo'shimcha omil shundaki, loyihaning yo'nalishi bitta tijorat mijozi tomonidan belgilandi va uning maqsadi loyihani yanada rivojlantirish emas edi. Hech bo'lmaganda bu asosiy maqsad emas edi.

Boshqa tomondan, bir qator ijobiy tomonlar ham bor edi. Bizda haqiqiy uchinchi tomon foydalanuvchilari bor. Bu nafaqat mijoz, balki ushbu tizim kim uchun mo'ljallangan edi. Loyihada ishtirok etish uchun motivatsiya ortdi. Axir, agar siz ham qiziqarli biznesdan pul ishlashingiz mumkin bo'lsa, bu har doim yoqimli. Va eng muhimi, biz mijozlardan o'sha paytda biz uchun aqldan ozgan, ammo hozirda Embox-ning asosiy g'oyasi bo'lgan, ya'ni tizimda allaqachon ishlab chiqilgan koddan foydalanish istagini eshitdik. Endi Embox-ning asosiy g'oyasi Linux dasturiy ta'minotini Linuxsiz ishlatishdir. Ya'ni, loyihaning yanada rivojlanishiga hissa qo'shadigan asosiy ijobiy jihat bu loyihadan uchinchi tomon foydalanuvchilar tomonidan foydalanilishi va bu ularning ba'zi muammolarini hal qilishi kerakligini anglash edi.

O'sha paytda Embox allaqachon talabalar loyihasi doirasidan chiqib ketgan edi. Talaba modeli bo'yicha loyihani ishlab chiqishda asosiy cheklovchi omil - bu ishtirokchilarning motivatsiyasi. Talabalar o'qish paytida qatnashadilar va ular bitirgach, boshqa motivatsiya bo'lishi kerak. Agar motivatsiya paydo bo'lmasa, talaba shunchaki loyihada qatnashishni to'xtatadi. Talabalar avvalo o‘qitilishi kerakligini inobatga oladigan bo‘lsak, ular o‘qishni tamomlaguncha yaxshi mutaxassis bo‘lib yetishadi, lekin tajribasizligi tufayli loyihaga qo‘shgan hissasi unchalik katta emas.

Umuman olganda, biz muammosiz ochiq manba loyihasini yaratish - foydalanuvchilarning muammolarini hal qiladigan mahsulotni yaratish haqida gapirishga imkon beradigan asosiy nuqtaga o'tamiz. Yuqorida aytib o'tganimdek, ochiq manbali loyihaning asosiy xususiyati uning hamjamiyatidir. Bundan tashqari, hamjamiyat a'zolari birinchi navbatda foydalanuvchilardir. Lekin foydalanish uchun hech narsa yo'q bo'lsa, ular qaerdan keladi? Shunday qilib, ochiq manba bo'lmagan loyihada bo'lgani kabi, siz MVP (minimal hayotiy mahsulot) yaratishga e'tibor qaratishingiz kerak va agar u foydalanuvchilarni qiziqtirsa, loyiha atrofida hamjamiyat paydo bo'ladi. Agar siz hamjamiyatni faqat jamoat PR orqali yaratish, dunyoning barcha tillarida viki yozish yoki github-da git ish jarayonini to'g'rilash bilan shug'ullansangiz, loyihaning dastlabki bosqichlarida bu muhim emas. Albatta, tegishli bosqichlarda bu nafaqat muhim, balki zarur narsalar hamdir.

Xulosa qilib shuni ta'kidlamoqchiman sharh, mening fikrimcha, foydalanuvchilarning ochiq manba loyihasidan kutishlarini aks ettiradi:

Men ushbu OS ga o'tish haqida jiddiy o'ylayapman (hech bo'lmaganda harakat qilib ko'ring. Ular buni faol ravishda ta'qib qilmoqdalar va ajoyib ishlarni qilmoqdalar).

P.S. Yoqilgan TechTrain Bizda uchta hisobot bo'ladi. Biri ochiq manba haqida va ikkitasi o'rnatilgan (va biri amaliy). Stendda biz mikrokontroller yordamida dasturlash bo'yicha master-klass o'tkazamiz Embox. Odatdagidek, biz uskunani olib kelamiz va uni dasturlashingizga ruxsat beramiz. Shuningdek, kvest va boshqa tadbirlar bo'ladi. Festivalga va bizning stendimizga keling, bu qiziqarli bo'ladi.

Manba: www.habr.com

a Izoh qo'shish