Monthly Archives: July 2015

Eclipse, the IDE for IoT

One of my hobbies recently has been playing with my Arduino Uno. I just love how accessible microcontrollers have become along with all the little sensors and LEDs and other hardware components. It’s so easy now to make your own “smart” electronics project. Lots of tutorials on the Web and a handful of on-line electronic shops to help you get started.

What we’re also starting to see is cheap wifi chips that you can add to your project. Not only that, but chips that have the microcontroller and wifi on the same silicon and SDKs to write programs that hook up your sensors and LEDs to the internet. Anyone can jump on the Internet of Things bandwagon.

But what is the Internet of Things that everyone’s talking about? My definition is more than just accessible hardware. It includes accessible web servers and web clients as well. I have a server I pay $5/month for and was dead easy to set up. It’s small but it does what I need for now. Web development is exploding with easy to use frameworks and mobile continues to provide open, or at least freely accessible tools.

And that brings me back to Eclipse. I’m using CDT for my devices, especially as I work to make the Arduino C++ plug-ins mature enough for others to use and then add support for my other devices, the ESP8266 and Raspberry Pi. I’ve written web servers in both node.js and vert.x. The Nodeclipse plugins have helped with node, and vert.x is just plain Java and I use m2e to manage my Maven pom files and builds. And client side, well, Eclipse needs a bit of work to better support the newer JavaScript languages like React.js’s JSX and Angular 2’s TypeScript. And I’m happy to see the Andmore project keeping the Android plug-ins alive. And, of course, I have the BB10 plug-ins we’ve built as part of Momentics so I can program my phone.

That’s why I love Eclipse. I can build my entire IoT stack from device to client with the same IDE in the same workspace. I can debug the entire stack at once. We should also have the capability to navigate code from the client to device as well. What line of C++ code in my device software triggered that React component to light up in my browser? With great static analysis that a Integrated development environment can bring you, we should be able to see that.

Eclipse is uniquely positioned to be the IDE for IoT. It’s not only the technology that brings all these environments together, it’s the community. What other community has the diversity of device developers, web developers and mobile developers all working together on a common tools platform? That’s what makes Eclipse an exciting community to be a part of.

What’s next?

The Eclipse Mars release marked a special moment for myself and our team at QNX and BlackBerry. It’s the culmination a few things we’ve really wanted to get done for our Momentics users and share with the greater Eclipse community.

It is focused around the Launch Bar and we’ve received great feedback from those who’ve tried it and those trying to adapt it for their own launch configurations and remote targets. And working with the community is why we do open source. We built it first for our BlackBerry Momentics users building BB10 apps and they loved it. But as we push forward we can learn and benefit from other IDEs trying to adapt it. It just makes the architecture better for everyone and ensures we can adapt it ourselves as we try to use it for new things. Open Source isn’t a charity so we give, but it’s also not a donation as we get a lot back in return.

Now that summer is in full force and I’ve finished off some vacation, it’s time to start planning for the next year. There’s still some work with the Launch Bar to do to clean up the rough edges and get it to the point where I would encourage all Eclipse packages to use it. I also want to continue the work we started with the PTP gang with the org.eclipse.remote target management system and make it a good replacement for the Remote System Explorer. I hope to get that in place by the Mars SR-1 release in September.

I also want to get back into improving Qt support in the CDT to make QML and qmake projects first class citizens so that the CDT is a good option to Qt Creator and let Qt developers take advantage of the Eclipse ecosystem.

That led me into the discussion about how to make it easier to add languages to Eclipse, in this case QML. There’s been some great discussion on the ide-dev list and other places with lots of ideas. I want to use ANTLR 4 for the QML work and am hoping I can generalize out of that so we can make it easier to add other complex languages like it. I’d like to extend CDT’s support to all languages supported by clang and LLVM. Even Swift if that’s the direction they take to open source it.

And it opens up an area in CDT that we really need to improve to allow us to take advantage of new toolchains and build systems. The CDT build system has always been somewhat cumbersome both for adopters trying to hook our tools up, and users who are trying to set up their build environments. We’re going to work with the CDT community to see if we can come up with a simpler architecture that takes advantage of the build systems, such as Qt’s qmake and CMake, that weren’t around or as mature when we started.

I also have my personal work on the Arduino C++ IDE for CDT. IoT is a great area of focus in open source and it’s really fun to architect an IDE for. You have a lot of choices in micro-controller (Arduino, ESP8266, and many upcoming Cortex-M* boards) and Raspberry Pi and other Cortex-A* boards. We really need to have CDT in shape for those developers.

But IoT goes beyond devices, you also have the cloud that they pass data to and get commands from, and then you have the Web and Mobile clients that hook up to the cloud. IMHO, Eclipse is the best choice as an IDE to build and debug all those components. And with my recent work at QNX, I have first hand experience at that and swear by it.

Lots to do and I’m certainly not going to get it all done when I want to, but we’ll keep plugging away and accept help when it’s offered and we’ll get there.