Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Interviews Interview with Eclipse CDT Project Lead, Doug Schaefer

Interview with Eclipse CDT Project Lead, Doug Schaefer


1. HI, I’m with Doug Schaefer, CDT project lead and QNX / BackBerry developer tools lead and we’re here at EclipseCon 2013. So Doug, Eclipse is known for its namesake Java IDE, but CDT has been around for quite a long time as well. Can you give us a little bit of a back story about how and when CDT came to be?

It actually started off around the same time as Eclipse was starting their open source community. A company called QNX (that I work for now), they had a need for an IDE for the embedded space and they were located in Ottawa, which is where a lot of the Eclipse work was being done, and they basically were following what was happening and decided to make a C++ IDE out of it. So it’s closely modelled after the JDT and that was back in 2001 when it started and then was pushed into the open in 2002 and started forming a community around it. It’s very closely related to the JDT. There are actually some classes that are implemented very similarly. This is kind of how we started and we started growing the community with other vendors who were very interested in a C++ IDE, companies like Red Hat and MontaVista. So we had our first CDT summit in 2002 and the rest is history.


2. That must have been about the same time before the first EclipseCon – it was like the Eclipse 2.0 I guess that sort of time?

Yes, the first EclipseCon was in 2004, by then the CDT was pretty well established as a project of interest. I’ll never forget our first BoF at that first EclipseCon, you know I figured 10 or 12 people, they’ve booked us in a small room and I think there were about 60 people overflowing into the hallway so there was a lot of interest right from the day one in having a C++ IDE with Eclipse.


3. Yes and the community has always been good, CDT was a finalist in this year’s most open project – which EGit pipped you to the post – but can you explain a little bit about the makeup of the community, so the kind of people who’re involved, the kind of companies involved in, is everyone a corporate involvement?

It’s a very diverse community. It’s one of the great examples of Eclipse and how you know, bringing all these people together with different interests, so a lot of companies are IDE vendors that are selling platforms and IDEs just like QNX and whenever. We find a lot of contributors that are coming from companies where they are using tool internally, large companies, and they need support and features to be added to it so they have staff doing that. And then we just have individuals – people coming along who have an interest in – they want a writing C code and they want to improve the IDE, so they just find bugs to fix and contribute that way.


4. Do you think they move over to Git and possibly Gerrit has helped that or hindered that?

Definitely yes. We were talking about this yesterday. One of the contributors is just dumping patches into Gerrit constantly, because it’s easy and it was very easy to get the stuff he wants done. So it’s a huge benefit to us and that’s what made me wanting to push for it because it makes it really easy to contribute.


5. You are using Gerrit for just contributions or are you embedding that within the development workflow of CDT?

There are differences from developer to developer and a lot of developers are pushing changes through there and they do that slowly. A lot of guys – we’ve let the backdoor open so if a community what to make a quick change and avoid the Gerrit process but certainly is our desire to not only it makes it easy to contribute but it gives you good visibility in what’s changing and what people are working on, so pushing everything through Gerrit it’s really the right approach.


6. And I think if you had had Gerrit to start off with, that might have been the default way of doing it because of history support. So what platforms does CDT target?

The traditional desktop, people writing the Windows apps or Mac apps, there’s actually a lot of Linux server side, a lot of the large server applications are written in C++ so we’re doing that there, lots of embedded of course, that’s really the traditional roots of CDT, because pretty much every embedded device has got some C code on it. Yes that’s the main ones. We’re very platform agnostic, we enable vendors and developers to extend it and put in their own tool chains and so it makes it very flexible, and so we target everything quite a lot.


8. What about the debugging for C applications with GDB is a common thing, but what about embedded devices where you need to talk over wire protocols to debug?

Actually a lot of that is GDB as well because GDB has a remote capability. But we made it extensible so that we can plug in any debugger, but by far the most used in GDB. But there are some organizations that have their own proprietary debug technologies, but they want to leaverage the UI side of things in Eclipse, so there’s a bit of that but GDB has become very wildly spread and adapted throughout the industry.


9. GDB has been around for a long time, but there’s LLVM and LLDB that are being coming out on the scene, do you see those being integrated into CDT in the future?

Absolutely yes, again we have the extensible frameworks that we’re able to plug in any compiler in the bugger technology and as LLVM becomes more popular, because is a really great technology, there certainly is going to be interest there and we started integrating the compiler side of things and the next step is to look at the debugger and see how we can plug it in. It’s kind of a nice interface that we can plug into and then we can work with – we’ve done a lot of work with the other debugger side, with people building the debuggers, we’ve done a lot of work with the GDB teams for example, to make sure that we can plug that into CDT, so I imagine the same thing will happened for LLDB as well.


10. One of the most things I guess or one of the differences between LLVM and GCC or LLDB and GDB under the covers is that LLVM is much more permissively licensed. Do you think that you’ll see these tools being integrated at compile and build time within the actual process as supposed to being tools that get filed up externally?

Yes, because there’s an interesting possibility for sure. I’m seeing a lot of tools being built for static analysis with LLVM, using the parser and the syntax tree. Licensing does make it really easy to integrate so it’s certainly an interest that we have it on our list of things you want to see in the future and Objective-C of course.


11. We’ve seen a lot with Eclipse going into machine to machine, and we’ve had tutorials in this EclipseCon about building things on a Raspberry Pi and Arduino. Most of those are uploaded with the Arduino sketch editor which has got a sketch loader uploading things, do you see that there’s a future for CDT doing some of these things and being able to directly talk to the Raspberry Pis and Arduinos and such?

Absolutely, it’s part of our tradition with embedded, these are really just embedded devices, they’ve been around forever. People are starting to do really cool things with them in the internet of things space. CDT already supports development environments for embedded devices, it’s just a matter of building the applications set or plugging into these things.

Alex: Embedded devices, of course as you said, have been around for quite as long time, I think one of the changes with Arduino and Raspberry Pi is that they have been put them in a really easy to use package and you just need a USB cable.

Exactly. That’s a great thing about it. It’s really enabling the hobbyist developer to do hard core embedded development which traditionally has been very hard and in labs and in large companies were doing it and now your kids at home can start doing embedded development, that’s really cool.


12. Speaking of small portable devices, you are also looking after the BlackBerry development tool set, Blackberry or QNX beforehand. Can you tell us a little bit about what happening in that space?

BlackBerry 10 is our new platform for our mobile devices based on a QNX operating system, again with that tradition of embedded development – because really that’s what phones are, they are embedded devices – and we’ve borrowed along our Eclipse tools that we’ve built for QNX and retargeted them to build BlackBerry applications as well, so there’s a whole stack of CDT based tools but the platform goes beyond C/C++ where we have a lot of SDKs, basically, you know, pick your poison. You can build it with Air, you can build it with HTML5, so it’s a very flexible platform and we have great Eclipse tools to support it.

Alex: Doug Schaefer, thank you very much.

Thank you.

May 03, 2013