The Arduino IDE is great in that with a single download on any PC platform, new users can start writing code and see immediate results. The same simplicity though, limits some of the more “advanced” features found in modern editors. Also one of the IDE’s greatest strengths is cross-platform through Java. This is also one of its weaknesses. Java is outdated and it’s time to move on.
There’s a slew of other Arduino development environments out there, but most of them are limited to 1 or 2 platforms. Electron is a novel idea because it is based on Node.js, meaning it runs in Google’s Chrome.
The initial implementation even includes a Serial monitor!
It is early, but the basic functionality is there. You can write some code, hit compile, it generates magic hex code, and activates avrdude. The connections to avrdude appear to work. Appear because during my initial tests I didn’t have an Arduino handy so I couldn’t see serial communication work. However, avrdude at least runs and complains about there being no serial port–which is a good sign!
Overall, the project has some way to go, but is interesting enough to checkout. The idea of using modern web browser technologies for the IDE, rather than an outdated Java technology is exciting. It meets the requirement of being cross platform, which is critical to Arduino’s success.
If you’d like to get started, I’ve expanded a little bit on the README’s Getting Started Steps. I suggest you check it out. Especially the included millis() examples, they look very familiar…
As of this posting, the project is relatively new (0.2). There are no download packages available yet nor is there an extensive list of features. What is in place is an excellent framework for the next (note: I’d settle for something current) generation cross-platform Arduino IDE.
The secret to making all of the tools work with a web browser is Node.js. While intended for network applications, it is clear Node.js has other uses, as Electron shows.
I’m on a Mac and I believe the creator Josh is as well. Here’s my experience on what I did to get up and running.
1. Sync Repository with GitHub
I have the OSX GitHub Mac client installed (windows client is also available). So I visited the Electron GitHub Page and chose to locally sync the branch. You can probably just downlaod the zip as well. If you aren’t familiar with Git and GitHub, you might want to checkout these resources.
2. Have to install NodeJS, which includes NPM on the Mac.
One of the, hopefully obvious, requirements for Electron is Node.js. The download page has installers for most platforms, including OSX. So download the pkg and install. You may need to watch your GateKeeper settings since the pkg isn’t contained in any other file format (like a ZIP or DMG).
3. run npm install (to install dependencies)
After you have cloned the Git repository, go to the electron direction and run “npm install”. NPM was included with the NodeJS download. This will install a number of dependencies and should only take a couple of minutes. Good time to go find your Arduino board and plug it in.
4. run “node electron.js”
One the the NPM install process is complete, simpy type “node electron.js” and hit enter. You’ll see a flurry of activity along with a message to…
5. Connect to http://localhost:54329/ in Chrome
Ta-Da. You’re now up and running with Electron! As mentioned above, I didn’t test with an actual board yet. Based on the avrdude output, I have no reason to suspect it isn’t working though. Write some code, check out the examples, watch the compiles, and send Josh some bug reports!
There’s much work to do be done, but I think this is one of the most promising projects to move the Arduino IDE forward. It is the first project that I’ve run into that has the potential to be inherently cross-platform, which is key to being a successor for the current Arduino Java IDE. Have you had a chance to check out Electron yet? If so, what did you think?