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.
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
Firmata is the communication protocol used between the microcontroller board and the blokdots application. We use the Firmata for Arduino implementation for the firmware and the Firmata.js implementation as part of Johnny Five in the application.
Johnny Five
Thanks to Johnny Five accessing hardware components and creating event-based programs to control the electronics connected to your board is fairly straight-forward. Many of the hardware components we support are already part of the Johnny Five library and we've also added support for a few new components which can be found at https://github.com/blokdots/johnny-five
OLED-JS
Some of the supported hardware is fairly complex to handle. In the case of the OLED display we're relying on noopkat's oled-js library to make it work and maintain a fork here https://github.com/blokdots/oled-js
React
The React framework helps us to write maintainable and relatively performant frontend code for the blokdots UI.
React Scripts
Create React App provides an out-of-the-box development setup for React with a lot of convenience features.
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 communcation (now often called UART) from Node.js and is a key building block for Firmata.js and Johnny Five.
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.