Monthly Archives: December 2010

Is Backward Compatibility Futile?

In the last few weeks I’ve run into two products that I’m working with that try to maintain backwards compatibility with previous Eclipse releases. That is, while working on an upcoming release they want to make sure their plug-ins work all they way back to Eclipse 3.4 (one case only to 3.5, but still).

And I understand the desire of that. I’ve found old plug-ins that I want to use which claim support for 3.5 say and I’m very happy when they install and run with 3.6. And I’m even happier when the install into and work with M4 of Indigo. It’s a difficult decision to pull back from the latest and greatest to get some needed functionality. It doesn’t seem right.

But for these products, one thing should get in the way of that, the CDT. We don’t claim 100% API compatibility from year to year. There’s a reason why we’re working on CDT 8.0 while the platform is still 3.7. And there’s lots of practical reasons behind that, the main one being that we don’t want to be tied to bad decisions made in the previous release. The more external tools we try to integrate and new features and just general clean up, we need to make things better even if we have to change APIs to do it.

No it’s not fair to the community, but then we really haven’t had a lot of push back from the community to stop that behavior. We can only assume they’re reasonably happy to follow along, releasing their plug-ins with a fixed line up of Platform and CDT. And maybe that’s it. The CDT ecosystem isn’t set up where vendors plug-in their CDT integrations into each other. We tend to be competitors at that level, not partners.

But I think that is going to change very soon. Of the two products I mentioned, one is more mature and I guess CDT just happens to be backwards compatible enough that things just work. I’m a bit surprised but it relies mainly on debug APIs which we’ve been pretty careful to preserve. But without guarantees, I fear what they are doing.

The other is new and I’m kinda getting in on the ground floor. I have to decide which version of CDT to support. The rest of the stack supports back to Eclipse 3.5 which would be CDT 6. But then I want to do something good with CDT scanner discovery to properly set up the indexer. There should be some nice fixes in the upcoming CDT 8 for that. So do I have two versions of this thing? That’s kind of where it goes, which is why I’m hoping we get these APIs locked down soon, for the good of all integrators who are facing the same decisions.

A Switch in the Grassroots? to Mobile?

It’s no secret I’m an Android fanboy, of fanbois, or what have you. I’m not sure why. I guess what really sold me was the ability to run it in an emulator on my laptop before it was even available in phones. It was exactly what I was looking for in a mobile/embedded target so I could play there and learn what application developers need out of their IDE, or in my case, the CDT. Yes, iPhone was already out but I didn’t have a Mac so Android sold it for me. If I had a Mac, who knows, maybe I’d be an iPhone fanboy with the rest of them.

As I mentioned in my last blog, I’ve been busy doing “real” work here at Wind River and now have finally got a chance to stick my head up and see what the CDT needs from me. My efforts in the CDT in recent years is all about getting the CDT into the hands of the grassroots of software developers, people who are hobbyists or students who are looking for a free IDE they can use on their projects. The commercial theory behind that is to make the CDT ubiquitous so that when we go to sell them our high value products based on the CDT, they have less of a learning curve and barrier to adopt those tools. Can’t say whether that’s been working or not, but there is no doubt that the CDT plays a major role in the embedded space where I work.

But, now, I am starting to wonder if my past focus on the grassroots needs to change. Previously, it was all about supporting Windows development with the CDT. Linux too, but that was generally taken care of without my help. The Wascana project was born out of that and with Helios it reached it’s 1.0 version. You look at it, though, it only has 10,000 downloads which is actually half of the previous 0.9 version I released 2 years ago and that release had nowhere near the advertising I have tried to give Wascana 1.0, even with a prominent mention on CDT’s download page. Maybe the grassroots has switched. And I think I know where I need to focus next.

I don’t know if you’ve been following the geek news but Android 2.3 was released yesterday. As @sogrady correctly pointed out, there’s not much exciting there, at least not for the consumer. But if you’re an Android app developer, especially one who’s been trying to write games and multimedia apps using C++, it is a revolution. The Android NDK team has finally provided APIs for audio and input events that have made life pretty difficult for these guys. Not only that, they’ve added a framework that allows you to create an Android app without writing a single line of Java code. It’s awesome :).

And that has me thinking now. We’ve had repeated asks and attempts from users trying to use CDT for iPhone development. And we’ve seen developers in the Android community using straight CDT or with the plug-ins that currently reside in the Eclipse Sequoyah project. I firmly believe that this is the next grassroots. As the computer industry changes, so do the developers and I need to make sure that the mobile app devs have a low barrier to use the CDT for their projects. Sorry Wascana and Windows, I need to change my focus.

Back to the Blogoshere

I’ve been pretty busy lately. After a couple of years of looking at Eclipse based install technologies, I’m back working in the IDE space on some cool things based on the Eclipse Target Communication Framework. That’s taken a lot of my time so I’ve resorted to Tweeting short ideas rather than spend the effort writing here on my blog. And I miss it and I have accumulated a lot to write about. So look for more in this space.

There are a few things I’ve been interested in lately. Android is still at the top of my list. I have a couple of phones now and am immersing myself in the experience to learn more about it, especially how apps are different from the now legacy environments we have on our desktops. Meeting the needs of app developers of course is important to us working on Eclipse based tooling and I think it marks a shift in the grassroots. Projects like Wascana which focuses on CDT for Windows dev are becoming less important to me than CDT for Android native so look for new things out of me there.

I’m also becoming maniacally focused on usability. This is a relatively new area for me after years of being a modelling and parser guy. But it is so important to create software that users want to use and it’s a challenge. And I’m going to leverage my passion for writing to help. Writing user stories will really help me get inside their head. Not only do you need to understand what they are trying to accomplish, you need to understand why. It’ll be cool to see how this works on practice and should be fun.

Well I’ll write more later. The software world is going through some major changes thanks to both web technologies and mobile. Android and iOS have a great rivalry going and I expect to see the avalanche of mobile devices and even things like settop boxes that app developers are going to want to target. It certainly is a great time to be in this industry.