Espruino: Предизвикателствата пред управлението на софтуер с отворен код и софтуер - 💡 Fix My Ideas

Espruino: Предизвикателствата пред управлението на софтуер с отворен код и софтуер

Espruino: Предизвикателствата пред управлението на софтуер с отворен код и софтуер


Автор: Ethan Holmes, 2019

Прочетете статиите от списанието тук Уверете:, Все още нямате абонамент? Вземете едно днес.

Прекарал съм последните 13 години като софтуерен инженер, работещ главно в 3D графики и компилатори. Разработването на микроконтролери винаги е било хоби, но открих, че съществуващите инструменти за разработване на ARM микроконтролери са много трудни за инсталиране и използване, особено в Linux. Прекарването на часове по борба със софтуерните инструменти вечер, след като вече бях прекарал цял ден пред компютъра, беше изключително разочароващо, затова се заех да създам нещо, което би било приятно да използвам, а не болезнено.

Исках да преместя всички инструменти върху микроконтролера, позволявайки на всеки да го програмира от всяка платформа, използвайки JavaScript. Моята цел беше, че някой с минимални познания по програмиране може да започне да мига светлина на микроконтролер само за няколко минути, вместо за часове. Имайки това предвид, аз стартирах проект, наречен Espruino - името е портманто на Espresso (като се имат предвид асоциациите на Java и JavaScript) и Arduino (чийто “uino” край е вече синоним на микроконтролери). Бях написал изключително основен JavaScript-подобен интерпретатор на езика, наречен TinyJS, за друг мой проект, а преди пет години, след огромно хакериране, в което го преработих от нулата, за да използвам статично разпределена памет, направих първия си код в Git хранилище.

Няколко месеца по-късно, на почивка в Уелс с приятели, накарах да работи. Спомням си чувството на постижение, когато видях, че малката дъска на ST Discovery разпечатва фрактал от Манделброт по ред. Това обаче беше само началото на дълго пътуване, което сега се превърна в работа на пълно работно време за мен.

Снимки от Хеп Сваджа

Софтуер на Freemium

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

Първият ми опит беше да направя Espruino „freemium“. Добавих възможността да запазя изображение на текущо изпълнения код във флаш паметта и да заредя 4 долара за него - за съжаление през цялата година направих само $ 40, въпреки че седмиците помагаха на потребителите да излязат. Имах значителни файлове за изтегляне, но много малко хора успяха да инсталират фърмуера и да стигнат достатъчно далеч от „Hello World“ на мигащите светодиоди, за да спасят дори това, което са направили.

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

Стартиране на борда

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

По посока на часовниковата стрелка отгоре вляво: оригинален Espruino; Puck.js; WiFi на Espruino; Espruino Pico (с и без щифтове).

Целият опит на Kickstarter беше невероятен - но беше изключително стресиращ и отнемаше огромно количество време. Бях доста нов за проектиране на печатни платки, така че използвах нещо, наречено OPL (Open Parts Library) от Seeed Studio. Това е част от комплекта, който можете да закупите, който също така включва всички контури на инструмента за проектиране на печатни платки. След като сглобих един работещ прототип, успях да дам дизайните на Seeed, който ще произведе платката с всички части, които вече са в наличност. Това означаваше, че въпреки че всичко отнема повече време от планираното, успях да изпратя дъските само един месец след очакваната дата на кораба.

Опаковане на наградите за първата кампания на Espruino.

Виждах изпратените от мен индивидуални дъски на Espruino; но също така предложих на клиентите си някои стартерни комплекти, съдържащи много различни електронни компоненти, така че трябваше да ги съберем сами. Това беше малко отварящо око. Когато правя софтуер, 500 изтегляния не изглеждат толкова много, но изглежда съвсем различно, когато трябва да пакетирате комплекти, да ги етикетирате и да се уверите, че са доставени!

Сглобени Espruino дъски в Seeed, готови за програмиране и тестване.

Сега, почти пет години след като написах първите си редове от код, току-що завърших изпращането на всички награди за трета Kickstarter кампания: Puck.js, програмируем Bluetooth бутон. Сега има голяма общност от потребители около Espruino и форум с над 20 000 публикации - подхранван главно от ентусиазма на моите Kickstarter поддръжници. Всичко е с отворен код (хардуер и софтуер), но все пак най-накрая съм на етапа, на който месечните продажби на дъски на Espruino са достатъчни, за да ми платят - без да е необходимо кампаниите Kickstarter да ме подкрепят.

Пренасянето създава проблеми

Тъй като фърмуерът и инструментите са с отворен код, Espruino се използва на все повече и повече устройства. Общността Espruino пренесе Espruino на ESP8266, а от края на 2016 г. повече хора са използвали ESP8266 от всички платки, които продавам заедно. Всъщност само една трета от потребителите на Espruino всъщност са използвали дъска, която направих.

Това е фантастично, но води до някои проблеми. Винаги съм се гордяла, че предлагам наистина добра подкрепа на потребителите на форумите в Espruino - често прекарвайки два часа или повече всеки ден, помагайки им. Тъй като намалява частта от хората, които използват моите табла, успях да изразходвам все по-голяма част от времето си ефективно да работя безплатно.

Първият път, когато Espruino работи на реалния хардуер, 2012 г. (борд STM32VLDISCOVERY).

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

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

В Espruino целта винаги е била да се замени хардуерната сложност със софтуерната сложност. Хардуерът е много прост, но софтуерът е изключително сложен и отнема по-голямата част от времето за разработка (поне 10 пъти повече). Трябва да маркирам цената на хардуера си, за да платя времето, необходимо за разработването на софтуера. Това прави моите дъски много неконкурентни в сравнение с платка ESP8266 от $ 2, в която Espruino се е включил безплатно, или дори друга компания, която продава дъска с предварително инсталиран Espruino.

Първият панел от 30 дъски Espruino Pico изключва производствената линия.

Това малко боли продажбите, но най-големият проблем всъщност е този на подкрепата. Ако имате проблем с нормална хардуерна платка с отворен код, ще говорите с производителя.Ако обаче имате проблем с клонинг от Arduino, който сте закупили от eBay, ще отидете на форумите на Arduino. Същото се отнася и за Espruino, а потребителите на тези други дъски обикновено имат повече проблеми поради лоша документация и остарял / бъги фърмуер. Може да е много разочароващо да се осигури подходящо ниво на поддръжка на клиентите и да не се харчи твърде много време на всички останали, освен на мен. Това е особено трудно, когато не мога дори да определя кой използва коя дъска!

В нормалния софтуер с отворен код се надяваме, че приносът на общността ще направи много да се направи това, но когато пишете инструменти за вграден софтуер, това може да не се случи толкова много. По-голямата част от моите потребители харесват Espruino, защото предпочитат да не пишат C код, така че е много малко вероятно те да се потопят в оптимизирания изходен код на C на интерпретатора. Когато пишете софтуер за работния плот, можете да напишете тестове, за да сте сигурни, че работи правилно - и докато това е направено възможно най-много с Espruino, за да тествате напълно хардуерните API, трябва да ги изпълните на самия хардуер. Въпреки че повечето участници тестват своя код на собствените си дъски, едва ли ще го тестват на четирите вида дъски Espruino, които правя, да не говорим за 40 други вида дъски, върху които работи Espruino. Така че дори прегледът на вноските може да отнеме много време.

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

Контрол на сервомотора с помощта на Espruino на тъчскрийн STM32 dev борд.

Въпреки че мога да си плащам заплата, това е чисто от щедростта на общността, не защото имам страхотен бизнес модел. Не мога да помогна, но чувствам, че липсата на ясен бизнес случай за използването на отворени софтуерни инструменти с хардуер с отворен код вреди на иновациите в тази област. Мисля, че е ясно, че в момента има стотици сайтове, финансирани от рисков капитал, интернет на нещата. В същото време, въпреки милиони потребители, Arduino IDE не се е променила значително от първото алфа съобщение преди 10 години, докато онлайн IDE на Codebender трябваше да се изключи.

Като казах всичко това, аз съм в много щастлива позиция да бъда платен, за да си върша нещо. Espruino няма да бъде толкова популярен, колкото е, ако не е с отворен код, и аз използвам почти напълно софтуера с отворен код. Имам фантастичен принос за Espruino от общността (например, портовете ESP8266 и nRF52), а дори и съобщения за грешки от потребители на други дъски са подобрили надеждността на Espruino за всички. Като се има предвид всичко, определено имам полза от софтуера с отворен код, докато чувствам, че също давам нещо обратно.



Може Да Се Интересувате

Използвайте поляризираните техники за осветление, за да заснемете цветовите ефекти

Използвайте поляризираните техники за осветление, за да заснемете цветовите ефекти


Как да знаем дали FDA иска да регулира прототипа ви

Как да знаем дали FDA иска да регулира прототипа ви


Внимание на създателя: Джон Алуийн

Внимание на създателя: Джон Алуийн


7 Полезни режими за надграждане на смарт камерата

7 Полезни режими за надграждане на смарт камерата