blokdots and Open Source
blokdots is truly standing on the shoulders of giants when it comes to open source projects. Without projects like Arduino it's unlikely we would have gotten into working with electronics at all.
So although we made the decision to develop the blokdots application as closed source, opting for a commercial business model as a way to fund it's future development, we know that blokdots wouldn't be possible without the open source projects at its core and we try our best to be respectful citizens in the open source ecosystem.
For us that means reporting issues we encounter and creating pull requests with fixes or new features. In some cases we work with a fork of open source projects which are then public and open source as well. You can find them at https://github.com/blokdots
Here is a list of the key open source projects blokdots depends on, which have their own dependencies in turn. We want to thank everyone involved and we hope we will be able to give back more in the future. Without these projects, blokdots would not be possible.
#Arduino CLI
As of version 1.1.0 blokdots contains a bundled copy of the Arduino CLI for your operating system. We use the Arduino IDE to compile the firmware for the microcontrollers on your prototyping boards and we use the Arduino CLI to copy the firmware binaries to the board. The Arduino CLI bundled with blokdots is the compiled binary with no modifications from our side.
#avrgirl (formerly used)
Before 1.1.0 blokdots was using noopkat's avrgirl library to flash firmware which was a great starting point to improve the user experience of handling hardware prototyping boards.
#Electron
Electron.js makes it possible for us to develop and ship blokdots as a cross-platform application with a tiny team.
#Firmata (formerly used)
Before blokdots switched to a custom lightweight serial protocol, Firmata was the communication protocol used between the microcontroller board and the blokdots application. We used the Firmata for Arduino implementation for the firmware and the Firmata.js implementation as part of Johnny Five in the application. It was a great foundation that shaped how we thought about hardware communication.
#Johnny Five (formerly used)
Before switching to our own hardware abstraction layer, Johnny Five was how we accessed hardware components and created event-based programs to control the electronics connected to your board. Many of the components we support were originally part of or inspired by the Johnny Five library, and we also maintained a fork with additions at https://github.com/blokdots/johnny-five
#OLED-JS (formerly used)
Before building our own OLED display driver, we relied on noopkat's oled-js library and maintained a fork at https://github.com/blokdots/oled-js. It was a great starting point for understanding how to drive OLED displays.
#React
The React framework helps us to write maintainable and relatively performant frontend code for the blokdots UI.
#Redux
Redux helps us with state management across the application, making it easier to build a robust application with a good user experience.
#Serialport
The Serialport library makes it possible to talk to devices through serial communication (now often called UART) from Node.js and is a key building block for our custom serial protocol.
#Socket.IO
Socket.IO is a key building block for most of the blokdots integrations, allowing us to exchange messages with a wide variety of other software.
#TypeScript
With TypeScript we're able to build a robust and maintainable application in JavaScript.
#USB
The node-usb library makes it possible for us to detect when boards are plugged in and helps us to identify compatible boards.