Objavljeno: 26.1.2021 | Avtor: Simon Peter Vavpotič | Monitor Februar 2021

Spletni portali za nadobudne razvijalce

Razvoj odprtokodne programske in strojne opreme še nikoli ni bil enostavnejši. Kako uresničiti drzno zamisel svojih sanj? Kako začeti in kako se vključiti v razvojni projekt? Kako zaslužiti?

Številni svetovni proizvajalci programske opreme so že pred vsaj dvema desetletjema odkrili prednosti razvoja odprtokodne programske opreme v primerjavi z razvojem lastniške, zato so spodbujali spletne skupnosti, v katerih so rasli odprtokodni projekti. Nastali so številni programerski forumi, od katerih so se mnogi prelevili v spletne portale za razvijalce, ki poleg razvoja in delitve odprte programske kode omogočajo tudi delo (zaprtih) programerskih timov.

Danes skoraj ni programerskega izziva gradnje nove programske ali strojne opreme, za katerega ne bi prek Googla, Binga, Yahooja ali katerega drugega spletnega brskalnika našli vsaj podobne rešitve. Če pa tak problem vseeno odkrijemo in objavimo kakovostno rešitev, se hitro znajdemo v družbi priznanih razvijalcev programske opreme, ki lahko za svoj trud tudi kaj iztržijo.

Pomembni so tako zamisli, načrtovanje, prototipiranje kot tudi realizacija in trženje končnega izdelka. Nekateri spletni portali, kot je Hackster.io, zato že ponujajo tudi podporo za vnaprejšnje financiranje obetavnih izdelkov, podobno Kickstarterjevi ali Indiegogovi, pri katerih kupci naročene izdelke plačajo vnaprej, avtorji pa se jih zavežejo dobaviti v dogovorjenem roku.

Načrte za samogradnjo naprav in izvorno kodo vgrajene programske opreme, gonilnikov, vsakovrstnih programskih knjižnic in celo operacijskih sistemov najdemo na številnih spletnih portalih za razvijalce. Znalci lahko svoje projekte na večini portalov tudi objavijo ali pa sodelujejo pri razvoju obstoječih. Pri Hackaday.com projekte med novicami objavljajo po lastni presoji ter jih tudi nagrajujejo s praktičnimi in z denarnimi nagradami.

Vsekakor je za mladega programerja ali načrtovalca strojne opreme nagrada tudi to, da se za graditelje priljubljenih projektov začno zanimati tudi velike multinacionalke, ki razvijajo strojno in programsko opremo. Nekateri portali zato omogočajo javno objavo osebnih podatkov in strokovnih življenjepisov.

Zagon in razvoj projekta

Večji projekt navadno začne omejena ekipa programerjev in/ali razvijalcev strojne opreme, ki na začetku navadno dela v zaprtem krogu. Po izdaji preizkusne različice lahko odprejo možnost sodelovanja tudi drugim zainteresiranim programerjem, ki predlagajo ali prispevajo izboljšave funkcionalnosti in popravke izvorne kode, vendar je odločitev o tem, kdo bo sodeloval pri projektu in kdo bo lahko pridobil izvorno kodo, vselej v rokah skrbnikov projekta. Veliko projektov iz Githuba je javno dostopnih, popravke kode pa vnašajo samo programerji pri projektu.

Nadaljnji razvoj projekta je navadno odvisen predvsem od njegove poslovne uspešnosti. Projekti, ki že na začetku pritegnejo veliko zanimanja strokovne javnosti, denimo odprtokodni operacijski sistemi, dajo avtorjem kasneje nešteto priložnosti za dober zaslužek s prodajo znanja in uporabniških priročnikov.

Uspešni projekti lahko predstavljajo odskočno desko za druge podobne projekte. Denimo, danes poznamo zelo veliko različic Linuxa. Če razvojni tim projekta zazna potrebo po novi različici, lahko uporabi vejitev, s katero začne iz iste izvorne kode nastajati nova programske rešitev z nekoliko drugačnimi funkcionalnostmi, prilagojenimi za drugo vrsto uporabe.

Katerikoli programer lahko začne tudi svoj projekt, tako da za osnovo vzame izvorno kodo obstoječega odprtokodnega projekta in jo razvija naprej. To je sicer mogoče le pri projektih, katerih avtorji dovoljujejo prosto uporabo, kopiranje in razpečevanje izvorne kode. Veliko projektov ima eno od licenc Apache ali GNU, s katero uporabnike sicer zastonjske izvorne kode zavezujejo k spoštovanju določenih pravil, kot je navajanje osnovni virov delov izvorne programske kode, ki so jih vgradili v svojo (odprtokodno) rešitev.

Zakladnice odprtokodnega in zastonjskega programja

Zamisel izgradnje spletne strani za delitev nasvetov ter zastonjske in izvorne programske kode manj izkušenim programerjem je s portali, kot sta bila danes priljubljena Sourceforge in Github, doživela velik uspeh, zato so ji sledili še mnogi drugi. Kljub temu sta tadva še vedno najbolj priljubljenimi.

Na Sourceforge (sourceforge.com), ki ima več kot 30 milijonov uporabnikov z vsega sveta in okoli pol milijona projektov, beležijo okoli štiri milijone prenosov odprtokodnih programov dnevno. Programska oprema je razdeljena na različna področja, za vsako pa izvemo pa tudi, kateri operacijski sistemi so podprti ter kakšni so licenčni pogoji za njeno uporabo in nadaljnje razpečevanje. Registrirani uporabniki lahko programe cenijo, izračunana skupna ocena pa kaže tudi na njeno priljubljenost.

Tudi Github (github.com), ki omogoča timsko gradnjo in izmenjavo vsakovrstne izvorne programske kode, se morda zdi kot le še ena altruistična poteza velikih ponudnikov oblačnih storitev, prek katere lahko vsakdo objavi projekt razvoja programske opreme, vendar razvoj uporabnikom prijaznih programskih razvojnih okolij nanj selijo tudi veliki proizvajalci strojne in vgrajene programske opreme, kot je Microchip, ki je s tretjo različico priljubljenega razvojnega okolja Harmony prešel na Github. Na njem je zdaj vselej na voljo zadnja različica Harmony, ki še nastaja.

Open Source Development Network (krajše OSDN, osdn.net) zagotavlja skupek zastonjskih podpornih storitev za razvoj odprtokodne programske opreme, ki vključujejo shrambe za programsko kodo SVN, Git, Mercurial, Bazaar, CVS, sezname za pošiljanje elektronske pošte, sistem za sledenje programskim hroščem, oglasno desko, forum, gostitev spletnih strani za distribucijo programske opreme, storitev za uporabniške prenose (novih) izdaj programskih oprem, arhiv datotek, popolno varnostno shranjevanje projektov itn. Ne preseneča torej, da OSDN danes gosti že okoli 55.000 projektov.

Free(code) (freecode.com) je eno najpomembnejših spletišč za (odprtokodno) programsko opremo za različne vrste unixov, najdemo pa tudi izvorne kode operacijskih sistemov. Zdaj ima istega lastnika kot Sourceforge, kar opazimo tudi iz samodejno pretvorjenega naslova spletne strani.

Portal Fosshub (fosshub.com) je bil vzpostavljen leta 2007 z namenom zagotavljanja strežniške osnove za hitro odlaganje in prenos odprtokodne programske opreme. Za vsako aplikacijo so na voljo statistika s številom prenesenih kopij in osnovni podatki o delovanju, kot je seznam podprtih operacijskih sistemov. Obenem Fosshub gosti tudi omejen izbor klasične (neodprtokodne) programske opreme.

F-Droid (f-droid.org) je namenjen distribuciji zastonjske programske opreme za Android. Omogoča različne načine iskanja aplikacij po širokem izboru kategorij. Čeprav je mogoč neposredni prenos izvedljivih datotek (APK), namesto tega priporočajo nameščanje aplikacij z F-Droidovim odjemalskim programom, saj si tako zagotovimo tudi redne posodobitve. Aplikacije brez posodabljanja lahko čez čas postanejo varnostne luknje.

Savannah (savannah.gnu.org) ponuja široko izbiro odprtokodne programske opreme, a je njegov uporabniški vmesnik že nekoliko zastarel in premalo prijazen manj izkušenim uporabnikom.

AlternativeTo (alternativeto.net) je še ena od odličnih novejših spletnih strani z odprtokodno programsko opremo. Na prvi strani objavljajo tudi aktualne novice s področja programiranja in uporabnega računalništva. Gosti že več kot 63.000 projektov.

V zadnjem času najdemo tudi portale z imeniki najboljše odprtokodne programske opreme. Med njimi omenimo List of Oper Source Programs (krajše LOOP, help.ubuntu.com/community), namenjen odprtokodnim programom za operacijski sistem Ubintu, Open Source Living (osliving.com), ki omogoča iskanje odprtokodne programske opreme po ključnih besedah, in Open Source Software Directiory (opensourcesoftwaredirectory.com), ki ponuja vsakovrstne spletne povezave do odprtokodne programske opreme in programskih orodij, urejene po kategorijah in načinu uporabe (doma, v službi, skrbniška orodja itn.). Na njem najdemo že več kot 700 uporabnih aplikacij.

Deljenje programske kode v živo

Skupni razvoj in deljenje izvorne programske kode znotraj programerskih timov (podobno kot v namenskih programerskih okoljih, kot je Microsoft Teams za Microsoft Visual Studio) sta danes na voljo tudi kot spletna storitev v velikih programerskih oblakih. Omogočena ni le delitev celotne programske kode, ampak lahko programerji delijo tudi samo najpogosteje rabljane funkcije, ki jih uporabljajo vsak v svoji aplikaciji, ali pa si medsebojno pomagajo pri njihovem razhroščevanju. Delitev programske kode pomeni tudi manjše stroške razvoja in hitrejšo izdelavo aplikacij, saj programerjem mogoča, da s pridom izkoristijo znanje svojih stanovskih kolegov.

Github Gist (gist.github.com) je zagotovo eno najpopularnejših okolji za sprotno delitev programske kode, saj omogoča rabo zmogljivih programerskih orodij tudi domačim programerjem, ne bi morali zanje odšteti zajeten kup denarja. Programsko kodo lahko delimo na osnovi izrezkov ali celotnih projektov. Gist pomaga tudi pri dokumentiranju projektov, saj lahko vsak sodelujoči programer zapiše svoje opombe in oceni programsko kodo.

Codepad (codepad.co) poleg standardnih programskih jezikov, kot so Java, C/C++ in Python, prepozna tudi programske jezike za oblikovanje spletnih strani HTML, CSS in PHP in Javascript. Ustvarjamo tako zasebne kot javne projekte in delimo programsko kodo z drugimi uporabniki. Prednost Codepada je pestrost podprtih programskih in opisnih jezikov, v katerih lahko izdelamo aplikacijsko programsko kodo v okviru istega projekta. To je svojevrstna prednost pred mnogimi drugimi podobnimi spletnimi stranmi, ki se večinoma osredotočajo le na podobne programske in opisne jezike.

Pasted.co (pasted.co) je spletna stran za deljenje programske kode z nekoliko nenavadno ponudbo storitev. Programsko kodo, ki jo želimo deliti, oddamo na spletno stran in po želji zaklenemo z geslom. V zameno dobimo spletno povezavo, ki jo lahko delimo s katerimkoli uporabnikom interneta. Posted.co prejemniku povezave med njenim odpiranjem prikazuje oglase, za katere prejeme plačilo za objavo. Del plačila prejme tudi programer, ki je objavil programsko kodo, in lahko na ta način z njo nekaj malega zasluži. Storitev je brezplačna in se za njeno uporabo ni treba prijaviti.

Popularni Codeshare (codeshare.io) omogoča izmenjavo programske kode v realnem času, vendar se na spletno stran ni treba prijaviti, dovolj je, da nanjo naložimo svojo programsko kodo in povezavo nanjo delimo s sodelavci v timu, s katerimi se lahko tudi vidimo in pogovarjamo ali pa izmenjujemo sporočila prek klepeta v živo. Vsa v Codeshare oddana programska koda se po dveh tednih izbriše, kar velja upoštevati predvsem pri dolgotrajnejših projektih.

JSFiddle (jsfiddle.net), in Liveweave (liveweave.com) omogočata izmenjavo izvorne kode za gradnjo spletnih strani, ki poteka prek štirih kanalov za HTML, CSS in Javascript, zadnji pa je namenjen prikazu videza spletne strani. JSFiddle pozna številne Javascriptne programske knjižnice in omogoča lokalno shranjevanje programske kode, Liveweave pa se pohvali z znanjem CSS3 in HTML5.

Etherpad (etherpad.org) je v primerjavi z Liveweave in s JSFiddle veliko preprostejši in je predvsem spletno namizno odlagališče, podobno odložiščem v vseh sodobnih operacijskih sistemih, vendar z možnostjo delitve odločenega besedila in priponk med člani posameznega projekta.

Odprta strojna oprema

Domači razvoj strojne opreme sega v osemdeseta leta preteklega stoletja, v čas hišnih računalnikov, ko smo lahko po opisih iz strokovne literature in strokovnih revij izdelali razne dodatke za hišne in kasneje osebne računalnike. Z napredkom tehnologije so osebni računalniki izgubili tiskalniška (LPT) in zaporedna vrata (RS-232), ostali pa so priključki USB in ethernetni priključek, prek katerih lahko povezujemo tudi domače naprave ob ustreznih mikrokrmilniških vezjih.

Že pred osmimi leti sem si omislil takrat priljubljeni Vellemanov (velleman.eu) vmesnik K8055 z osmimi krmilnimi izhodi in s petimi krmilnimi vhodi ter pretvornikom A/D in D/A ter Microchipovim mikrokrmilnikom PIC16, dva meseca kasneje pa še K8055N z mikrokrmilnikom PIC18. Čeprav na spletni strani velleman.eu še danes najdemo kopico načrtov za samogradnje uporabnih analognih in digitalnih vezij, izvorne kode za PIC16 in PIC18 niso nikoli izdali javnosti, so pa zato svoje izdelke dve leti kasneje prilagodili takrat prihajajoči razvojni osnovi Arduino (arduino.cc).

Po drugi strani so nakup različnih razvojnih plošč z odprtimi strojnimi arhitekturami in električnimi shemami, zastonjska razvojna orodja in veliko primerov uporabe že takrat ponujali tudi veliki proizvajalci mikrokrmilnikov, kot so bili Microchip (microchip.com), Atmel (danes del Microchipa) in STM (st.com). A je bila takrat večina razvojnih plošč še predraga za samograditelje. Čeprav smo nekateri izdelali lastna razvojna orodja, si je večina želela poceni razvojnih plošč z možnostjo enostavnega programiranja, ki so jih nekaj let kasneje ponudili pri Arduinu (arduino.cc). Veliko smo se lahko naučili tudi na forumih za elektrotehnike in programerje, kjer smo nemalokrat poleg programske kode zasledili tudi kakšno električno shemo.

Sam sem kot razvojno ploščo na začetku uporabljal kar K8055 s PIC18, prvi programator zanj pa sem izdelal kar iz tovarniško predprogramiranega mikrokrmilnika MCP2200. Rešitev, ki je takrat pritegnila precej zanimanja, sem objavil na spletni strani za razvijalce PC USB Projects.

Odprtokodna odprta strojna oprema

Razvojna plošča Arduino Uno je konec prvega desetletja novega tisočletja orala ledino, saj je bila v primerjavi s poceni mikro osebnim računalnikom, Raspberry Pi, namenjena predvsem razvijalcem dodatkov in enostavnih digitalnih naprav, ki ne potrebujejo operacijskega sistema. Arduino Uno ne potrebuje lastnega napajalnika, saj je energetsko varčnejši in lahko energijo za delovanje črpa iz priključka USB osebnega računalnika. Obenem je kartica SD opcijska.

Prednost Arduina na osnovi Atmelovega mikrokrmilnika je bila tudi popolna odprtokodnost, saj ni bila na voljo samo izvorna koda programskih primerov, temveč tudi vseh programskih knjižnic. Njihovi snovalci so se trudili za čim popolnejšo podporo različnim komunikacijskim protokolom in pestremu naboru dodatnih modulov. Osnovno vodilo je bilo preprostost programiranja. Glavni program so preimenovali v sketch (skica, s končnico *.ino), čeprav gre za kodo v C/C++ z nekaterimi poenostavitvami.

Namestitev razvojnega okolja Arduino v osebni računalnik je preprosta in ne zahteva poglobljenega znanja računalništva. Preprosta je tudi izvorna koda številnih enostavnejših primerov, medtem ko je programje kompleksnejših, kot je internetni radio, bolj podobno pisanju programske kode gonilnikov za Linux.

Zaradi popularnosti Arduina so mnogi proizvajalci strojne opreme izdelali združljive razvojne plošče in razvojne module, ki jih je mogoče uporabljati v razvojnem okolju Arduino. Tako ne moremo mimo Espressif Systems (espressif.com), pri katerem so razvili popularne module ESP8266 in ESP32 za vstop v IoT (Internet of Things).

Spletni portali za razvijalce strojne opreme

Čeprav je spletnih portalov za izmenjavo zamisli za samogradnjo strojne opreme z všečnimi funkcionalnostmi precej manj kot portalov za izmenjavo izvorne programske kode, jih je še vedno toliko, da lahko predstavimo le najbolj priljubljene.

96Boards (96boards.org) ponuja vodnike za razvijanje in prototipiranje vgrajene programske opreme za razvojne plošče z najzmogljivejšimi procesorji ARM. Razvojne plošče različnih proizvajalcev stanejo od nekaj 10 USD do več kot 400 USD. Najzahtevnejši razvijalci si lahko za okoli 1.200 USD omislijo tudi DevelopersBox s 24-jedrnim sistemom v enem čipu (SoC) s procesorskimi jedri ARM Cortex-A53, ki je že pravi namizni računalnik, saj lahko vanj vgradimo eno od podprtih grafičnih kartic do 64 GB DRAM, SSD, disk pa tudi enoto CD. Ne manjka niti raznovrstnih projektov za izkušene uporabnike, med katerimi je mojo pozornost pritegnil doma izdelani dron na osnovi razvojne plošče Qualcomm DragonBoard 410c.

AdaFruit (adafruit.com) proizvaja različne elektronske naprave pa tudi razvojne komplete za samograditelje elektronskih naprav. Na svojih spletnih straneh ponujajo tudi veliko učnega gradiva, ki obsega vodnike in videe za začetnike ter video predstavitve v živo. Na njihovih spletnih straneh najdemo tudi odlične odprtokodne programske knjižnice za Arduino.

All About Circuits (allaboutcircuits.com) je spletna stran skupnosti elektrotehnikov, na kateri najdemo načrte za samogradnjo vsakovrstnih analognih in digitalnih električnih vezij pa tudi podatkovne pole za številna integrirana vezja in diskretne elemente. All About CIrcuits je v pomoč razvijalcem strojne opreme, ki sami načrtujejo močnostna krmilja ali prilagoditvena vhodna vezja.

Že omenjeni Arduino (arduino.cc) poleg zastonjskega razvojnega okolja danes nudi tudi široko paleto odprtokodnih razvojnih plošč z odprto arhitekturo.

Tutorialspoint (tutorialspoint.com) hrani elektronske vodnike z različnih področij. Tistim, ki se prvič lotevajo samogradnje projekta Arduino, pa bo v pomoč Arduino Tutorial for Beginners (tutorialspoint.com/arduino), s katerim bodo z lahkoto vstopili v svet samogradnje strojne opreme, od osnov do poznavanja naprednih konceptov. Na voljo so tudi številni primeri.

Bald Engineer (baldengineer.com) je kot odskočna deska med spletnimi stranmi za vse tiste, ki se želijo naučiti več o načrtovanju elektronskih vezij, ostali pa se lahko na poljuben poučijo o njihovih načrtovanju, izdelavi in delovanju.

Creative Connectivity (nickhunn.com) je blog, ki obravnava različne vidike brezžične povezljivosti. Prav pride predvsem razvijalcem brezžičnih digitalnih naprav.

Popularni avstralski EEVBlog (eevblog.com) ni samo blog, ampak tudi kanal na Youtubu, namenjen elektrotehničnim inženirjem, domačim samograditeljem, izumiteljem hekerjem in izdelovalcem strojne opreme.

Dangerous Prototypes (dangerousprototypes.com) je spletna stran, ki vsak mesec objavi nov odprtokodni projekt z enega od področji razvoja strojne opreme. Na svoj račun bodo prišli predvsem tisti, ki si želijo drznejših rešitev.

DIY Projects (diyprojects.io) objavlja projekte, vodnike in primere o avtomatizaciji doma ob uporabi IoT.

Espressif Systems (espressif.com) ne izdeluje samo modulov ESP, ampak lahko z njihovih spletnih strani prenesemo tudi najzmogljivejše razvojno okolje zanje (IDF) v jeziku C/C++ ter z Githuba snamemo obilico izvorne kode pripadajočih odprtokodnih programskih knjižnic. Iz te zakladnice znanja črpajo tudi okolje Arudinove, Adafruitove in odprtokodne programske knjižice drugih proizvajalcev.

Hackster (hackster.io) je popularna spletna skupnost z nešteto zamislimi za nadobudne domače graditelje strojne opreme. Člani objavljajo podrobne načrte za številne projekte, ki jih lahko komentirajo ostali člani skupnosti. Hackster ima tudi odličen blog, ki vključuje tudi intervjuje z uveljavljenimi razvijalci strojne opreme.

Hackaday (hackaday.com) je spletna skupnost izdelovalcev vsakovrstne strojne in programske opreme s številnimi tematikami, vprašanji in odgovori ter z raznovrstnimi izobraževanji za začetnike. Projekte lahko objavljajo samo člani, medtem ko so objavljeni projekti na voljo vsem uporabnikom interneta. Poseben poudarek dajejo izvirnosti projektov na marginalnih področjih, ki jih dobro poznajo samo računalniški znalci in hekerji.

PC USB Projects (sites.google.com/site/pcusbprojects) je spletna stran s številnimi projekti za domače samograditelje, razdeljenimi po področjih: od vremenske postaje, internetnega radia, mosta med Wi-Fi in ethernetom, daljinsko vodenih robotov, avtomatizacije doma do mikrokrmilniških programatorjev.

Random Nerd Tutorials (randomnerdtutorials.com) je namenjena v pomoč tako profesionalnim kot ljubiteljskim graditeljem strojne opreme. Omogoča tudi spletno učenje iz več kot 200 zastonjskih priročnikov za vsakogar.

Pri Sparkfunu (sparkfun.com) pripravljajo in prodajajo različne razvojne komplete za, na voljo pa so tudi električni načrti, programska oprema in uporabniški forum za pomoč samograditeljem.

W3schools (w3schools.com) je izobraževalna spletna stran z najrazličnejšimi vsebinami, od programiranja podatkovnih zbirk v jezikih SQL do uporabe zunanjih priključkov Raspberry Pi na podstrani w3schools.com/nodejs/nodejs_raspberrypi.asp. Izobraževanja so namenjena predvsem začetnikom, zato je spletna stran vsekakor vredna ogleda, ko se podajamo na novo področje računalništva.

Kako zaslužiti z razvojem strojne opreme?

Če želite z razvojem strojne opreme tudi zaslužiti, na spletu najdete veliko specializiranih spletni strani, kot so Bolt (bolt.io), Predictable Designs (predictabledesigns.com) in Dragon Innovation (dragoninnovation.com), z nasveti o tem, kako pripraviti projekt za serijsko proizvodnjo, kako organizirati proizvodnjo itn. Preberete lahko tudi intervjuje z uspešnimi razvijalci in njihove življenjske zgodbe. A o tem več v katerem od prihodnjih člankov.

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

Monitor na Facebooku

Monitor TV na YouTube

HC1qqZaCLXM

  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji