Monthly Archives: December 2009

Looking Forward to 2010

Last year I put out predictions for 2009. But I don’t want to look like I know things that I really don’t. So instead, for 2010 I’m going to list the technologies I am most looking forward to seeing come to fruition this year. As a tools developer, it’s important to know what things your users will use your tools to build, and for that you really need to know what’s going on in the industry. So here we go. I’m also going to forgo my standard 4 or 5 paragraph length so excuse the extra long post. It’s just easier for me if I capture them all at once.

Mobile

I blogged about this in the past, but what I see happening in the mobile space reminds me so much of the revolutionary days of the early PC market, back in the late 70’s and early 80’s when the ability to program computers came to our homes. The same is now happening with mobile devices, all of which have freely available tools and SDKs and anyone can, and is, writing applications for them. And a rare few are even making money at it. It’s a race to see who wins and despite the early lead by Apple, it’s not entirely obvious to say who will.

In 2010, the momentum will continue to grow. Tablets will be the next battle ground. They should be in the 7 to 12 inch screen size range making them more useful for web browsing than smartphones. They may or may not have a keyboard so we’ll have to get used to using soft keyboards with these things, although, there are rumors of patented technologies that should make it easier. And I expect the power of the SOCs used to build these will grow to make them great little gaming machines.

My main interest in this area is Android. I expect to see Android on more and more of these devices. Right now, I find the Android SDK (including the native development kit) weak for gaming and multimedia and hopefully that will be addressed this year. If it is, it will be a real challenger to iPhone.

New Linux UI

Moblin is currently leading a revolution in the Linux GUI environment space. I think it really brings Linux to the masses with a very clean social networking focused interface. Hopefully we’ll see a wider deployment of it this year, especially on netbooks. But I expect they’ll continue to push it down into the MID space to challenge Android and iPhone there.

The main reason I like Moblin is that unlike Android it really is Linux and uses the same SDK set that you have on Linux desktop. It’s the best hope for seeing applications that are easily ported between the desktop and mobile devices, other than web apps, of course.

The other advantage of being Linux and being open source, is that the underlying library that drives the UI effects in Moblin, i.e Clutter, is available to the desktop programmer too. I am very much looking forward to what the Gnome gang have planned for it in their upcoming Gnome Shell 3.0. I am hoping that this and other changes to Gnome for the September 3.0 release will be a real game changer for desktop Linux.

Blender 2.5

What the heck is Blender? And why is a C++ hack like you interested in it? Blender is an open source 3D modeling tool. No, not software modeling, but the real 3D object modeling that you use to build games and simulations. I’ve been watching the game development industry mainly because I’m a geek with an insatiable curiosity on how developers build things. Building games is one of the hardest computer science problems around. That and you need great artists to make great games. It’s a very cool mix of art and science. And the artists need tools too.

The Blender community is a rich mix of that and it’s been fun to watch them. The new version of Blender coming out this year is a much needed rearchitecture and a bit of a reinvention of themselves. It looks to be much easier to use and I expect it’ll become quite popular. Mix that with the open source software development tools we’re doing at Eclipse and I see a much lower entry point for people wanting to join in on the fun.

High Performance Computing

HPC is another technology that I see inching towards the masses. The hardware that the graphics card vendors are putting out is reaching dizzying heights of multi-processing. As the tooling for these cards improves, this power will be more and more accessible to the every day programmer and it’ll be very interesting to see what they build with it.

C++0x

I’m not sure whether C++0x will reach standardization this year, but I expect to see more and more of the spec implemented in GCC and other compilers. There are a lot of important new features here for C++ that will greatly improve the productivity of C++ programmers. Will it be enough to fend off the continuing progression of developers to less capable languages? I don’t think so since it’s still a pretty complicated language. But it should make it more appealing for those that need the power of C++.

Open Source Wins

I usually get called the “Open Source Guy” at work by those more focused on business. But I will continue to champion the need for open source software as a key element of any software business strategy. Why? Because software is damn hard to build and going it alone continues to carry a high risk of failure. If there are opportunities to work in a community, to share in that risk, and to spread out the cost so you aren’t covering all of it, how does that not make sense?

At the end of the day, customers care that you give them great solutions, they don’t care how you build it. If you ignore all the great work that’s going on in the communities, you’ll need to keep ahead of that to ensure that they see you as the best provider of those solutions. That doesn’t mean competing with open source, that means embracing it and leveraging it to keep your customers happy at a reasonable cost.

Over the years, we’ve seen companies that have slowly embraced this strategy. Some have a ways to go before they totally get it. Notice that none of the technologies I see as industry changing are coming from Microsoft. But they are keeping a close eye on what’s happening in the communities and the little test balloons they’ve sent over the last year will continue. And I take that as a sign we are right.

Well, that’s all for now and thanks for sticking with me to the end. 2010 is going to be a great year for software development. We seem to have broken free from the shackles of the doldrums we’ve been in since Windows took over our world. It’ll be very interesting to see where we end up at the end of the year, but it promises to be one hell of a ride.

Reviewing "Predictions for 2009"

I spend a lot of my time thinking about the future. As an architect, that’s probably the biggest tool in your tool belt, a crystal ball. The best designs are the ones that can be used now and a year from now.

Before I blog about what I think will be important things to look out for in 2010, I’d like to review what I said last year about 2009. If it turns out I was totally wrong, then you can take my 2010 predictions with a grain of salt, as you should anyway. So here we go.

2009: The Year of the GPGPU

Well, I’m not sure it was as big as I thought it would be, but we’re certainly seeing a lot of momentum behind ATI and Nvidia’s monster graphics cards come computing devices. We’re still fighting software demons. Nvidia is still pushing it’s own CUDA over the “standard” OpenCL that ATI seems to be more on side with. But if you see what some of Nvidia parters are putting together with their Tesla boards, you know the time is soon.

2009: The year of WebKit

While not very visible, WebKit is becoming the standard browser platform for devices including iPhone, Android and Palm Pre, along with the existing desktop browsers, Apple’s Safari and Google Chrome. But if you’ve ever tried to use Chrome as your default browser, as I do, you still run into a lot of web sites that don’t render well on it, or AJAX sites that don’t even work. Even our EclipseCon submission system had trouble with Safari (although it seems to work fine in my Chrome on Fedora). No, it’s actually looks like 2009 was the year for Firefox which is now the most popular browser according to something I read the other day.

C++0x won’t be C++09

Now, I already knew that when I wrote it. If C++ creator Bjarne Stroustrup doesn’t think it’ll happen, it likely won’t. I’m even having doubts it’ll be C++0a (or C++10, I guess). But I hope it comes soon since it has a lot of great things that C++ developers need that a lot of other languages already have (like lambdas). The good news, is that we’ve started work on supporting C++0x in CDT’s parser. It’s going to take a while so it’s important we start now.

So all-in-all, it wasn’t a total failure. But then, I think I was probably stating the obvious at the time. There were no shockers, but it was fun to do. I’ll give my thoughts on 2010 just before the New Year so stay tuned.

BTW, I’d also like to share my best wishes for the holiday season with you all. It’s a time for reflection and I’m sure I’ll do my share. 2010 is going to be a big year for me and I’ll need to prepare. Merry Christmas to all!

The path to a successful e4 introduction

The last time I blogged my thoughts on e4, I got quite a storm back at me. I don’t have much against e4, and frankly, I’m not to concerned about it. I am the C++ guy and in my opinion, we should be making tools and libraries to make rich client applications easier to build in C++, which is what most rich client apps are built with anyway. But while a lot of what e4 is surrounds innovation around RCP apps, the intention is that it should go beyond that. We should be able to leverage e4 in our tools.

My fear, confirmed by many, is that the projects won’t invest in e4 to ensure it gets adopted by the tools on the Eclipse trains. But, it’s not really that. It’s that the vendors that pay the committers working on those projects aren’t interested enough to invest in it. All the begging and pleading won’t really change that. In my years of open source experience, I’ve only seen that work when there was an obvious need that was going unfulfilled. I’m pretty sure that’s not the case with e4.

So if we want e4 to succeed, it’s up to the community to make it happen. In fact, I’ve challenged the Eclipse Architecture Council to lead the charge. If we believe in this architectural change and are sold ourselves that it needs to succeed, we need to take on the task of selling it to others, especially the vendors from whom we need approval. It should be what the Architecture Council is about.

How we do that? We need to show e4 running. In particular, we need to show prominent projects from the train running on e4, if not the entire train. And, of course it needs to work well and be easy to do, i.e. cheap. That requires a really good compatibility mode for e4, which is promised by the e4 team. And we need volunteers to do the builds, report bugs, and fix them.

“Build it an they will come” only works in baseball movies. Nothing sells a new idea like showing it in action and proving how easy it is to adopt. That will take work. Hopefully we’ll get the few bodies we need to get the ball rolling and give us something to run with. If we have enough people that care about e4, this shouldn’t be that difficult to accomplish.

"Eclipse Labs", the Eclipse game changer

Ian hinted at it in the recent flurry on Planet Eclipse and Mike just offered an extra teaser. For me, the concept of an Eclipse forge, or “Eclipse Labs” is set to change the way open source developers see, consume, and contribute to Eclipse, and more importantly, to dramatically change the culture at Eclipse.

Everyone seems to be looking for a technical solution to keeping Eclipse relevant, e4 case in point. In the end, that’s not enough. We need to grow the Eclipse community beyond it’s traditional realm of corporate engineers, into what we more traditionally think an open source community should be, free. Free to work on what you want, free from someone saying no to your contributions (within reason, of course). To be free as you are when working with SourceForge, but still be a member of the Eclipse community.

I’m still waiting to hear the details on the rules and mechanisms for the Labs. But if it turns out like I think it should, ;), then I’m super pumped. Pumped enough to bring Wascana out from the freezer and make the real Eclipse C/C++ IDE for Windows that should rightfully be an Eclipse community project, not hidden out on SourceForge. That will require the Lab to ship GPL’ed software, i.e. the GNU tools, and LGPL libraries. Is Eclipse ready for that? I’m hoping.

Multi-Core Programming, Paradigm Shift Required

I just caught myself sending 4 tweets in a row on the same subject. That’s probably a sign I have a blog entry topic at my finger tips.

I was reading an article entitled “Microsoft’s top developers prefer old-school coding methods”. Whoever picked that title clearly missed the point of the panel discussion he was covering, but it’s an awesome read.

The panel involved a handful of distinguished engineers from Microsoft and they were discussing the future of programming technologies. And hilarity ensued! It reminded me so much of the discussion we had about JavaScript at the end of the Ottawa Eclipse DemoCamp last week. There was much hilarity ensuing there as well.

At any rate, I totally agree with what these guys are saying. Everything we’re doing to innovate in programming around graphical programming languages and concurrent programming is crap. Here’s some of my favorite quotes from the article:

re graphical programming: “when you have 500 things, graphical programming is completely unusable. You zoom in and zoom out and you lose all context. I think it’s just smoking dope.” (a similar comment was made about using JavaScript to build complete apps at the Camp).

re managed code: “lets developers perform above their level of competence. It’s like antilock brakes”. (They were talking about CLR, but I’d include Java in that).

re abstractness: “programming is getting so abstract, developers will soon have to use Microsoft’s Natal to write programs through interpretive dance.” (That I don’t want to see).

But the one quote that really confirmed what I had been thinking about multi-core programming: “It will be a long time before parallel programming becomes mainstream. Because of the bias towards sequention programming, we’ll still be reinventing ourselves as parallel programmers 12 years from now.”

This was a classic Ward Cunningham “A-ha” moment for me. I had hoped graphical programming could be an answer to break the sequential rut we’re stuck in. But the usability of building complex programs graphically kills that. I think at the end of the day, we still need to look at hardware description languages such as Verilog and SystemC as holding the key. They are all about concurrency since the hardware they model is too.