Културата на отвореният код помага много за създаване на все по-сложни системи по-бързо и по-евтино. Най-опростената дефиниция на тази култура е, че всеки може да надгражда, да поправя, да адаптира и копира части от чужди програми. Това не означава непременно, че този тип софтуер е безплатен, но факта, че изходният им код е на разположение на масите е от полза за всички и намалява повтарянето на усилия.
Да имаш на разположение толкова много отворен код обаче разкрива трудности за намиране на подходящи „парчета“, които искаме да свържем в проекта си. Това е същото, както да търсим подходяща рецепта за ястие, което да сервираме на гала вечеря. Има търсачки като Google Code, но не са достатъчно добри.
В сряда се проведе поредният Eclipse DemoCamp в Darmstadt. В една от презентациите Марсел Брух показа комплект от инструменти, който решава отчасти горния проблем. Пилотното му име е Code Recommenders и се разработва от TU Darmstadt. Сравниха го с Amazon, където интернет магазинът се учи от покупките и навиците на клиентите си, за да им предлага най-добрите стоки за всеки поотделно и така да увеличи продажбите си. Инструментът за Eclipse пък анализира кода, наличните проекти, структурата на наследственост на класа и имплементираните методи, сравнява този модел с голяма библиотека (2+ Gb) и предлага какво може да се допълни на мястото, където програмистът пише. Библиотеката съдържа десетки хиляди модели тренирани на базата на анализ от огромно количество отворен код. Това означава, че ако програмистът започне да създава бутон, програмата може да изчисли как и колко други хора са го направили и да му предложи най-вероятните възможности. Примерно – да сложи текст и стил на бутона.
Този метод на анализ предоставя и други интересни предложения. Например, обикновено когато човек пише програма, Eclipse му показва грешки в синтаксиса. Ако Code Recommenders засече, че на дадено място повече от 90% са използвали даден метод, значи е възможно да има логическа грешка и затова я показва като такава. Също така, на програмиста може да се предложи шаблони с код на базата на най-вероятните предложения, както и пряка връзка с Google Code направо в платформата му, с цел намиране и оценяване на snippet-и.
В края на презентацията показаха имената на част от студентите, които са участвали в проекта. Моето също беше там. Преди около година им помогнах да адаптират част от Eclipse plugin-ите на OSGI сървър с Axis2, така че всички предложения да идват от едно място, където да получават обратна връзка и да се анализират. В сегашната версия от това е останала само частта за анализ, като са добавили автоматично подновяване на локалната библиотека с предложения.
Друга интересна презентация беше представянето на новия Eclipse e4 от Ларс Вогел. Той е още в инкубационен период (разработка), но се очаква от него да излезе версия 4 на IDE платформата. В самата презентация не видяхме кой знае какво ново, тъй като същите примери бяха отдавна на сайта, както и самият е4. Интересно е обаче да се види колко лесно и бързо може да се направи софтуер от нулата с доста добър UI. По принцип това, което клиента вижда – бутони, прозорци, текст, картинки и таблици може да се разработи с множество готови библиотеки и би трябвало да е лесно. На практика обаче не е и се случва да се прекарва повече време в честите промени на външният вид и използваемостта на програмата (usability), отколкото за самата бизнес логика. С е4 човек може да моделира абстрактно външният вид и в реално време да променя всичко. Нещо повече – стилизирането на програмата се прави с CSS и може да се използва JavaScript. Това, всички други скрити допълнения в e4 и безкрайната възможност за разширение на платформата, за която писах преди, прави Eclipse още по-прекрасна основа за създаване на всякакви бизнес приложения.
Естествено, имаше и доста други интересни презентации, като тази на Кай Кройзер, който е използвал Eclipse за да автоматизира изцяло къщата си. Показа как през интернет и с телефона си може да управлява всичко – светлини, отопление, електроуреди до това да получава информация за температурата, потреблението на ток и газ. Разбира се, кодът е отворен и всеки може да го използва.
Въобще този семинар, както и други подобни, ме навеждат на мисълта, че принципите на социалните мрежи ще се прилагат все повече в процеса на програмиране. Макар вече да не търсим дефиниции в дебели книги и да перфорираме карти, създаването на софтуер пак се състои от един човек, компютър и примери/документация, които тя/той трябва да намери в мрежата (и това умножено по няколко, за да получим екип). С инструменти като Code Recommenders получаваме помощта от общността направо на върха на пръстите ни (Ctrl+Space за знаещите).
За бизнеса това означава, че създаването на софтуер и промените по него ще бъдат по-бързи (казано на страшно клиширан език). Както Дъглас Шмидт писа преди 10 години, рециклирането на стар код, което беше и голямото обещание на ООП, се провали. Помощта идваща от „облака“ от програмисти извън фирмата ще даде нов смисъл на reusability и ще даде повече тежест на решението да се използва отворен код в комерсиални проекти.
Поне това е обещанието този път, но все пак сработва в Twitter, нали? Питаш нещо и няколко души ти помагат почти веднага.
PS: Впрочем тия дни Неели Кроес – евро-комисарката за дигиталното развитие, пусна видео, с което призовава компаниите и институциите да използват повече софтуер с отворен код. Основното й съобщение е, че „open source“ вече не е мръсна дума що се отнася до бизнеса и администрацията.
Svejo: Време е наистина open-source да стане нещо нормално, нещо към което да се стремят хората.
П.П. Не се учудвам, че точно в Darmstadt се случва това нещо.
Svejo: Всъщност имаше доста такива Democamp-ове в Европа и учудващо много (над 1/3) бяха в Германия. В София мисля, че имаше също такъв преди месец.
Svejo: Възможно е, но не съм чул нищо. С тази дезинформация, която е налегнала над българското образование като цяло, нищо хубаво не може да научи човек.
Svejo: То е по-скоро колко търси човек. Има си mailinglist-и за тая работа 🙂