As I mentioned in the introductory note, I’ve been working on the Arduino C++ IDE for Eclipse for over a year. It started out as a very simple CDT extension to deal with the Arduino toolchain and SDK. But then the official Arduino IDE came out with a new release and a new metadata system that lets you download SDKs and toolchains for the vast array of Arduino boards and libraries. I knew it would be critical for the Arduino C++ IDE to have the same feature so I spent a lot of my personal time in the summer to get it working. And I love how it’s turned out.
But I only have two boards, an Arduino Uno and an ESP8266. Luckily the ESP8266 community has added an Arduino compatibility SDK and the ESP8266 toolchain to the metadata files so that’s let me use two really different boards to test things out. But I knew I couldn’t do it without some help so I released a Preview edition with hope it would grow a community of people with different boards and projects using different libraries and give it so much more test coverage.
And have they ever! Even before I posted the howto video I had a couple of people tweet at me thanking me for it. So I rushed out the video and since then, the feedback has been awesome. 18 bugs later, 15 have been fixed and 5 updates to the p2 repo and it’s in really good shape now. Even the Eclipse Foundation’s Mr IoT Benjamin Cabé has been helping with bugs and patches and some really good feature requests.
It’s a great start, better than I could have hoped for. And there’s more to come. So please give a try if you have an Arduino family board and a cool project to build and let me know how it turns out. The bugs and interactions with the reports have been incredibly valuable and I’ve learned a lot. And thank you in advance from me and this great community!
I’ve been working on this for over a year now and I finally have it in shape for people to try out. It’s the Arduino C++ IDE for Eclipse!
Why did I build it? Well really it’s because I bought myself an Arduino Uno to get familiar with the Arduino ecosystem and have fallen in love with it. But the Arduino IDE is pretty simple. What? An IDE without content assist? Anyway, I thought it would be really cool to bring the latest from our work on the Eclipse CDT project so I can use the product of my passion for tools on my passion for microcontrollers. And it helps us provide a proving ground for those ideas and an exemplary integration to show things off.
It’s up on the Eclipse Marketplace. Links to the CDT forums to ask questions and to the CDT bugzilla to report any bugs. I’ve also made a video to help users get started. The video also shows off two other components I’m hoping will be useful to the greater Eclipse community, the Launch Bar and the org.eclipse.remote Connections view and Console-based terminal. Enjoy!
Am I an asshole? Yeah, sometimes. I have strong opinions and I have a habit of saying the wrong thing and getting people mad at me. But it’s usually in cases where I see people treated unfairly and I try to stand up for them, usually very poorly.
We have a great group of contributors to Eclipse who work their asses off to make it better, often on their own time and their own dime. Often they have good ideas and I hate to see those ideas not given a fair shake. Everyone has an opinion and that’s what makes a community vibrant. But every idea and every contributor should be given respect. If you don’t you equally lose respect.
I made this comment on the UTF-8 default encoding bug that I hope resonates with people. Knowing how things go, I’m sure I’ll piss off just as many people.
Remember when you make decisions like this, you are making them on behalf of the
community, the entire community, not just your employer and certainly not only
yourself, and that you are doing it with respect for the opinion of those who've
commented on this bug and elsewhere. Then hopefully the respect would be mutual.
There are millions of users out there. Our products are successful because Eclipse
in the large is successful. We need to make sure we protect that.
My point is that when you make a decision when working on an open source project you have to take into consideration the entire community that’s impacted by that decision. With Eclipse, especially the Java side, it’s gigantic. And for us vendors, its a few orders of magnitude larger than the number of our customers. So when you make a decision that’s not in the best interest of the masses, it will sooner or later come back to bite you. You don’t want to go into a customer engagement and have the prospect say, “you built on Eclipse? Eclipse sucks!” That’s not good business.
It’s hard for us committers and leaders to see that. It’s miles apart from that moment of decision to where something like that could happen. But I try and keep it in mind when making design decisions I make. And if it causes a little short term pain for my customers, well that’s my problem to solve, not the community’s. If someone has a good idea, it’s my duty to treat it with respect and in the end it could make the product better for everyone, including my customers.
I’ve been working on the Launch Bar for it seems like forever. But it’s still only used by a few people in the Eclipse world and I haven’t really made a push to get others to adopt it. I don’t think it’s quite ready for that. I’ve really been struggling with it’s place in Eclipse. It fills a missing need as far as improving the Launch experience.
It’s also filling a missing API need, the ability to specify where you want to Launch to. And I’m now thinking that this needs to be directly added to Platform Debug so that the launch target is passed on to the launch configuration delegate so it can pass it on to the launch, build for launch, etc. And if we’re going to do that, we should really put the launch bar down into the Platform Debug as well.
And if we’re doing that we should really not be using IRemoteConnection as the launch target as the Launch Bar does now. I’ve received a number of requests to generalize the target concept since not everyone gets why they need to use the new remote system. It’s funny as I actually had started with a more general concept anyway. So I’m going back to that.
But it does mean there will be API changes so the Launch Bar for Neon will be a major release, 2.0. The end goal is to contribute it to Platform Debug but I won’t have time for that in Neon. But we will get the APIs in shape so it’ll be ready for Neon + 1.
In the meantime, I have a release of the Arduino C++ IDE to put out which does use the Launch Bar. I’ll be producing a video of how to use it and I think from that you’ll see the value the Launch Bar really adds, especially when you have multiple targets where you want to launch your application.