Monday, March 30, 2009

EclipseCon notes and git

Well, I'm back at my day job at Wind and am doing a little reflection on what happened last week at EclipseCon. Despite the rumored lower attendence, I met with pretty much as many people as I do every year, maybe even slightly more. And hopefully that'll translate into growth in the CDT community.

And I guess my talk on building communities was a little over the top on the subject of project "takers" that I had a number of people come up to me and apologize and offer to contribute in the future. I certainly didn't mean to offend or criticize. I just wanted to prepare project contributors that there are vendors and people who are happy to take your work for free and not give anything back. And, while that's frustrating, with open source licensing there's nothing you can really do about it but be mentally prepared to see it happen.

The one area where I saw a very interesting rise in momentum was with distributed version control at Eclipse and git in particular. It started with discussions at the councils on Sunday where it became obvious that we need significant community interest and willingness of the projects to drive this home to justify the significant cost to the Foundation. There were a couple of BOFs and panels that I missed but it sounds from Karl's post that the activity was significant enough for the Foundation to start putting a plan together. Very cool!

The more I talk to people and dig into it, I think git and DVCS in general is probably one of the most significant technologies driving change in the way we work on software development projects since objects invaded our world. As evidence of that, the thought of distributed source repositories opens the door to the IDE in the Cloud. The Cloud could be built around git repos and if I need to work disconnected, or work with command line tools, I just clone it onto my laptop and merge back later. And being the old "curmudgeon" C/C++ embedded tools guy, that's a significant admission...

Thursday, March 26, 2009

IDE in the Cloud

There's been a lot of talk at EclipseCon here about the "IDE in the Cloud". I missed it but apparently the Mozilla Bespin demo at the e4 talk was quite impressive. It is easy to set up, and it's pretty fast as a code editor. I guess that makes sense since browsers have been heavily optimized for fast display of textual and graphical content. So I have to admit, it's led me to reconsider this technology. Rational tried this many years ago, remember Catapulse?, to build hosted development environments. The idea, and the company, collapsed in the high-tech bust of 2001. Maybe they were just too early.

But as we start to rely on the cloud, what happens when the sky's are clear? I just heard Kevin McGuire say that, hey, my e-mail is on the server, why shouldn't my code be there too. I use Outlook and Thunderbird in a mode that downloads my e-mail to my machine so I can access it disconnected. I don't always have access to the cloud. Until the cloud is omni-present, through things like metropolitan wireless schemes, and cheep, $10/day at my hotel wasn't cheep, then I don't see it really taking off as the typical way you do software development.

I just worry that the whole "Cloud" paradigm is being pushed by the people that can profit most from it, not from an inherit need of potential users.

Wednesday, March 25, 2009

CDT Code Introspection APIs

I'm just sitting in Markus's talk on the APIs the CDT provides to create code models, ASTs, the Indexer and ways of getting information out of there. These facilities are used to implement features such as content assist and open declaration and searching, etc. And you can use it too for all your static analysis needs. A copy of his presentation is available from the EclipseCon site by following the link to gPublication. It's a great reference on how to get started.

http://www.eclipsecon.org/2009/sessions?id=685

Slides from my Talk on the CDT Community

I'm not sure why the EclipseCon submission system isn't accepting this but here are the slides from my talk on the Rise and Fall and Rise of the CDT, Lessons on Building Communities. I had a lot of fun creating and presenting this talk. I guess it's a passion of mine and people seemed to like it. The slides have few words on it and I'd be happy to give more details if you have any questions. Feel free to add comments here.

Tuesday, March 24, 2009

A Great EclipseCon Already

I've been here at EclipseCon for 48 hours and it's been great already. I've met a lot of people here, like I always do, and it's a good sign that vendors still see Eclipse as important, enough to spend the money in these tough times to send their technical experts.

EclipseCon is an important conference, especially for those who are looking to get started with Eclipse and to grow their expertise. There's probably not enough time to learn it all, but at least you know where to go look when you get home.

It's also important for projects to get the word out about the great work their doing and to grow their community. I was pretty disappointed about the number of submissions I had for the C/C++ category. But we're making due. And it's good to see the number of DSDP contributors here giving talks so we're still showing the world that Eclipse is more than just a Java IDE.

Other things to report:
- work on ObjectiveC is starting and the guys managed to get a prototype running based on CDT late last night.
- the Ada project is looking to reboot.
- e4 talks are the hottest ticket in town
- adding git continues to be controversial and we really need to get a bigger ground swell of contributors who care about making this happen

Anyway, beer time. More later.

Wednesday, March 18, 2009

POWERVR goes MP

I was just reading up on the news that Imagination Technologies has launched a new generation of their architecture that drives POWERVR. What's POWERVR, you ask? It's a good question, but chances are, if you have a mobile device that has 3D accelerated graphics, it's driven by this hugely popular silicon IP.

The big news is that even they're going multi-core to achieve scalable graphics. They claim they rival the performance of discrete graphics chipsets, which I assume means the nVidias and ATI's of the world. That's a pretty interesting combination when you look at the latest chips that have multi-core ARM processors combined with DSPs (digital signal processors) for audio/video processing, which can then be combined with these powerful 3D cores.

I can imagine some really powerful handheld and other mobile devices based on these things. I just wonder about power consumption, the eternal challenge for mobile developers. We'll see how that plays out, but the power of these things also blurs the gap between mobile and x86 based "netbooks" and even set-top boxen. Interesting times ahead, indeed.

But as good as the hardware is, you still need the software to make them come to life. It's going to be an exciting time for developers that target this market. I just wonder if there are enough of them. This is one area where I'm hoping the Eclipse DSDP and CDT projects can help. We need an easy to setup package to give the students and hobbyists, the future commercial developers for these platforms, the tools they need to get them started. This is something I'd be happy to talk about at EclipseCon and see if we can get a community to start putting this together.

Sunday, March 15, 2009

Should Wascana get Qt?

I've been working on my EclipseCon talk and tutorial, which I'm really looking forward to now. Especially the talk where I hope to share some of the things I learned being involved with the CDT project for almost seven years now. And I'm hopeful it's useful to others working in open source, especially the things that didn't work as well as I hoped...

Anyway, while doing that, I've started playing with Qt, which was recently released with LGPL as one of the choices for licensing. That eliminates one of the hurdles I have for including it into Wascana, my CDT for Windows distribution. So now the question is, should I include it? Should I also keep wxWidgets? Since the Wascana plan is to become a p2-based distribution, there should be no harm in having both. It's just that I don't use wxWidgets so I'm not sure whether what I'm producing works or not.

Why that matters is because I build the libraries for Wascana myself using the gcc/g++ I distribute with it. I've switched over to tdragon.net as my supplier for gcc, mainly because they (or he?) provides the latest releases from gcc (and the mingw.org community is a bit of a mess). And I want to make sure these libraries are built with the latest and greatest optimization algorithms gcc is providing.

At any rate, I'm learning how to build Qt and it's running right now. I hope it doesn't melt my laptop. They have a ton of example and demo projects that I can use to test so it's a pretty good environment for producing quality distros.

I should also look at their Eclipse plug-ins. They provide an installer for the Windows version which installs into an existing Eclipse. I wish they had a p2 repo that I could use instead. But I'll have to see what they're laying down and understand their licensing to see whether I can make these available in Wascana as well. I still find it weird they have their own IDE, Qt Creator, when it should be pretty easy to put together an Eclipse-based IDE that does almost the same, if not more...

Tuesday, March 10, 2009

Emulation versus Multi-Platform

Over the last little while, when I could steal away a few minutes from my busy day job as of late, I've been thinking more about open platforms for handheld and set top consoles that makes good use of the 3D hardware that is becoming common place in these platforms. Of course, being open, I'm talking about open source and royalty free APIs like Linux and OpenGL and OpenGL ES.

I've been very excited about the LGPL'ing of the Qt C++ application framework. The programming paradigm is very clean and the library set is huge, including my favorite, the WebKit browser, and, of course, OpenGL support.

One angle I've been following is my other favorite piece of open source software, the qemu CPU emulator. The community is very active there and they're are more and more platforms and hardware components being emulated making it a nice platform to play with some of the concepts I'm thinking of.

But the one critical piece missing is 3D hardware emulation. I would be great if someone could put that together, and given the comments on my previous blog entries, it would be very popular. I could do it, but I have the bigger picture in mind and have some other things I'd like to work on, in particular, a port of the Clutter concepts to Qt (and no, the QGraphicsView is close but not quite what I was thinking of).

Thinking about it tonight, it struck me. Since Qt is multi-platform and the tools I use, gcc and the CDT are multi-platform too, why don't I just start this work on Windows using Wascana, the Eclipse CDT/mingw gcc package I am also trying to work on. I could even use the OpenGL ES emulation libraries that are out there to make sure these ideas work with OpenGL ES, another multi-platform component. And as my work here progresses, I will have the opportunity to use the same tools to make it work on real hardware.

It's this type of environment that motivates my work on the CDT and what makes it so powerful. It's time to put it to work for me.

Thursday, March 05, 2009

Qemu 0.10.0 now available

In a message from Anthony Liguori to the qemu-devel mailing list, "The QEMU team is pleased to announce the availability of the 0.10.0 release. This release has been a year in the making and is the result of almost 3,000 changesets from around 80 developers." The release was quickly put together in the last few days (i.e. in Eclipse terms, there wasn't much of a ramp down). And the resulting build is actually pretty hard to find, at least until it gets propagated to all the mirrors, but it's a milestone anyway.

There's a pretty long list of new targets and hardware emulation. There's also improvements to the VNC support. The biggest news is the new code generator for translating op codes into runnable code. It's called TCG (Tiny Code Generator according to Wikipedia) and removes the dependency qemu had on gcc 3.x, which means it gets to take advantage of the huge performance improvements of gcc 4.x. I think I read somewhere that the Android qemu was running 1.5 times faster thanks to that. And my copy is humming using the gcc 4 I'm integrating into the future Wascana 1.0.

This release is a good sign that the qemu developers are getting serious about formal releases. It's been quite a while since the last release and there has been huge architectural change. That has led to a some difficulties co-ordinating with the other projects that use it, like the kvm Linux virtualization platform. Having quality releases more often will make it easier to get changes from forks into the mainline, which is good for everyone.

For me, it's just good fun to be able to have a virtual platform to try different ideas with C/C++ libraries that target mobile devices that I could easily target to real hardware some day. And I think it's intriguing the Eclipse integrations we could do to make it easier to work in that environment. A lot we have already, like CDT (of course) and the Remote System Explorer for launching, and there is work on more coming from the Tools for mobile Linux project. Interesting indeed.

Tuesday, March 03, 2009

Qt 4.5 Full of Surprises

Qt 4.5 was released today. As expected, it comes with the adoption of the LGPL license which should make Qt free for commercial development if you so choose. I think this will be a huge boost to the adaptability of Qt and hopefully make an impact in the Gnome versus KDE Linux desktop wars (mind you the KDE gang are really shot themselves in the foot when they released 4.x as a planned regression from 3.x).

There were a couple of big surprises that came with the release announcement. First was the discontinuation of Qt's embedded product, formerly and lovingly known as Qtopia, the best product name in the business ;). The plan I understand is to fold that functionality into the Qt mainline releases with the intention of making Qt a truely cross platform API for both desktop and mobile. And they've started by introducing an OpenGL ES paint engine into this release, which if I understand correctly will allow you to use Qt to create apps for mobile devices now.

The other big surprise, isn't really a surprise since I've known about and wondered what was going to happen, but they've released a 1.0 version of their IDE, Qt Creator. It appears they are going forward with this IDE as a key offering, and have released it as LGPL as well. Which means, theoretically, a community could form behind it and it could start to compete with Eclipse. We'll need to do a thorough analysis and understand what it all means. Especially since they also uprev'ed their Eclipse integration and have a beta of their Visual Studio integration available. How does Qt Creator fit into this world?

The only thing that really bugged me in their news release on Qt Creator is their claim that "it provides the first IDE designed specifically for cross-platform development". Uh, guys. The CDT is 7 years old and counting...

Sunday, March 01, 2009

Way too much fun with qemu

As I've been blogging about lately, I'm getting ready for my EclipseCon tutorial which will walk the attendees through adding support for a cross-compile environment to the CDT. The target of this environment will be qemu running a tiny Linux platform which includes the latest release kernel, busybox, dropbear with sftp-server from OpenSSH, using the free glibc C run-time and gcc cross compile tools from CodeSourcery.

I'm using the default ARM target for the latest qemu which unfortunately has a bug in the FIFO emulation that interfaces with the emulated SecureDigital card where I want my root file system. I asked on the qemu-devel list and someone there sent me a patch they had posted a couple of weeks ago. Checking out the qemu source from svn into the CDT, I was able to fix up the function where this was done and I was quickly up and running with my root file system on the SD card image. Very, very cool!

The next highlight was when I got the ssh components running and I was able to connect to the qemu target using the Remote System Explorer from the Eclipse Target Management project. Also, very, very cool. I want to use RSE and the CDT remote launch to get the results of the build up and running on the target.

So now that I know how to build stuff from the command line, the next step will be the meat of the tutorial, creating the managed build integration for the cross compiler. Of course, you'll have to come to the tutorial to see the result, and actually work with me though the process. But it should be fun!

And now that I've actually started working with qemu in the CDT, I'm starting to get that itch to add 3D graphics support again...

Wednesday, February 25, 2009

Subversive vs. Subclipse

One of the most common Google searches I see in my Feedjit log is from people looking for help in the whole Subversive versus Subclipse debate. It has always dumbfounded me why we have two efforts building Eclipse team providers for Subversion. But I've long given up on fighting that battle.

So as I start to dive into the code for qemu, I found myself in need of making that choice again. Some would say go with Subversive since it's an Eclipse project. I would, but they are mired in provisioning hell with a key component for making it work being on another site due to licensing/IP reasons. That didn't turn me on much so I'm going with Subclipse.

And so far so good, but I've only just checked out the repository. We'll see how it goes if I need to make any patches, and as I keep updating. But my hope is that as it has aged, all the issues I saw a couple of years ago have been addressed.

My heart is still with distributed version control and git in particular. And there is discussions on the qemu list about moving to git. And in particular, I'm very interested in how these team providers work with the CDT and how they work with the changes were doing for e4 on the IResource front. And it's pretty clear that these plug-ins, no matter what version control system they target, need to work well to keep our users and customers engaged.

Sunday, February 22, 2009

CDT 6.0 M5 is Available, BTW

I've been "nose to the grindstone" since the holiday break getting our Wind River Installer out the door, twice. But the good news is that the CDT contributors have been very busy working on CDT 6.0 while I wasn't looking very hard. I have been waiting for the C/C++ IDE Package for M5 to be built. In the meantime, we do have the bits up on the CDT Galileo update site for you to try. Just download the Eclipse Platform or SDK 3.5M5 and add the following URL as an update site:

http://download.eclipse.org/tools/cdt/releases/galileo

Most people will want the "Tools" feature in the "Main" group, which will give you everything you need to work with the gnu toolchain. And yes, the features say 5.1.0, but we're tricking the API tooling with that to keep track of API changes. We'll be 6.0 when we go out the door in June.

I've actually been using CDT 6 for some technical investigations I've been doing lately, the qemu source being one of them. One of the biggest issues with the CDT that we've been fighting forever has been taking projects that have been developed without an IDE, that don't have any real structure to them, bringing them into the CDT, and having our indexer parse and create useful search information for them. And this is especially bad if we can't figure out the include paths to find the header files needed to parse properly.

One common pattern we have noticed with the include path was where all the user specified include paths were actually folders in the workspace. Everything else came from the built-in include path. At the very least, if we could search the workspace when looking for header files that were unresolved, we could probably resolve them.

Well in CDT 6.0M5, that functionality if finally there (thanks, Markus!) and it works superbly! Many of the unresolved headers I saw in this one project I was looking at, which targeted many different OS's, were magically resolved, and features like Open Definition (F3) worked great. Sure, if you have multiple header files with the same name in your project, we may pick the wrong one to resolve, and there will still be issues if you don't specify external include paths, but it's huge step forward for CDT usability.

There are other interesting things in M5, including the Debug Services Framework which has moved from the Device Debugging project to the CDT and should become our "official" debug framework over time. You'll notice the major issue we have with having two debug frameworks when you go to launch (double the launch configs :( ), but we are working on a solution to that.

We're still making great improvements to the CDT as we go. Most of them are under the hood as the feature set we have is working quite well already. And there are still things to clean up, like our managed build system and the underlying build model and the need to integrate that with our debug models. But I know I'm a happy CDT customer myself, and I hope you get a chance to try out CDT 6.0 M5 and give us your feedback.

Thursday, February 19, 2009

Eclipse in the Clouds?

I'm not going to say much with this one. I'll just refer you to the comments people are adding to Boris's blog entry on his work with Mozilla to get an experimental IDE running in a browser with an Eclipse-based server back-end. Is this what developers working in the embedded and desktop space are asking for? Not that I've heard. And neither do a number of the commenters on Boris's article. Some of them are putting it in much prettier words than I could say without getting into trouble...

That's why it is so critical for those of us in the Eclipse community who support such users to make sure Eclipse continues to work well and to improve in the areas that cause them pain. Is the future of enterprise development so different from desktop and embedded that it requires such radical architectures? Maybe so. If that's true, we need to hold our ground and ensure we don't get dragged down a path we can't be going.

Monday, February 16, 2009

An ARM on Family Day

It's "Family Day" here in Ontario, Canada, and while my one son is over at his buddy's house and my other son is watching game trailers and my wife is out for lunch with the girls, I'm sitting here enjoying the day off. I'm sure we'll do something family-ish later today...

Anyway, I just read about TI's new family of chips, the OMAP4. The big news is that this is the first time TI has jumped on ARM's multi-core bandwagon and the mixture of parts going into these SOCs is quite impressive. You have PowerVR's venerable SXG OpenGL ES 2.0 engine, image processing, and enough power to play 1080p video. As the TI guys says in the LinuxDevices.com article, this type of architecture really will start to blur the lines between smartphones and MIDs (and even makes me wonder about the set-top box market). It looks like we'll be seeing some pretty exciting products ahead.

Speaking of TI, I'm still looking at the BeagleBoard community-based development board kinda thing. The more I look into what the community is doing with it, I really see it's potential as a vehicle for learning embedded development. But I'm cheap, so my attention turned towards whether the qemu emulator could emulate the BeagleBoard so I can run it on my laptop. And apparently someone is working on it. But then I started doing the math. How much is my time worth? Versus forking out the $300 or so to get set up. Makes me think...

Mucking around with all this has led me back to my EclipseCon tutorial on integrating a cross-compiler toolchain for the CDT. I really want to show how easy it is to get up and running with qemu and a cross-compiler and the freely available embedded Linux run-time goodies all under the CDT as the IDE. And given all the hype about ARM and mobile, I think I'll go with ARM as the target CPU. Should be a fun 4 hours, which should be plenty of time to get at least a hello world running. I can't wait and I really hope you can make it too.

Tuesday, February 10, 2009

IANAL, BSD, GPL, LGPL, ABCs

Slashdot pointed me to this article by Bruce Parens aimed at clearing some of the air around using GPL and LGPL and commercially licensed product on the same device. Of course, the summary of the article is "Check with your lawyer" as it should be. But I hope it alleviates fears over the FSF licenses that I know people have.

I especially like the description of the motivation that open source developers use to license their software. BSD is a "gift" software license. The developer is giving it to you as a gift, do with it as you wish, just give him some of the credit. LGPL is "non-gift". And I get it. They essentially don't want you using their stuff for free unless you help with it. And then you have GPL, which falls into the category that they just don't want you using their stuff for free, unless you're doing your stuff for free too. This categorization puts a little bit of a human face on it, and I appreciate that.

This also made me think about our situation at Eclipse. It's very difficult to get third party software approved at Eclipse. I'd love to be able to host the GNU tool chain binaries along with the CDT to help new developers get started. Now, I am not a lawyer, but Bruce's article doesn't mention restrictions on distributing binaries, only the run-time requirements. Maybe I'm missing something there, and maybe lawyers are reading more into the license than what I see. So be it, they're professionally responsible for their opinions, I tend not to be.

But there is no mistaking it. Despite whatever legal issues surround open source software, it's popularity can't be denied, especially in the embedded world.

Monday, February 09, 2009

Beagle Board and Eclipse Distros

We had a meeting a few days ago amongst interested parties in an Eclipse IDE distribution for embedded. The idea would be to do something like I'm doing with Wascana which is supposed to make it easy for developers using open source tools, students especially, to get them up and running on Windows, and in turn showcase the features of the CDT in that environment. The idea of doing this for embedded would be to do the same for embedded systems developers and to show case the features of the DSDP project at Eclipse as well as CDT's embedded development support.

One thing I think we noticed quite quickly is the diversity of the embedded community at Eclipse. We have Web services applications for embedded, we have J2ME Java for embedded, we have deeply embedded systems like microkernels and DSPs that have no OS per se, and, of course, we have the more traditional RTOS systems. I think it'll be hard to showcase Eclipse support for all these things in one distro, and maybe it deserves it's a few such distros, or maybe we have RTOS versus not RTOS. It's an interesting initiative and I'm excited to see where it goes.

One of the platforms that came up in the meeting was the Beagle Board. Checking out their web site, it looks like an interesting target for hobbyist and student embedded developers. It's a cheap little board at around $150 US (a little more once you add the needed cables and a power supply to use it properly). The community there is working on getting the Angstrom embedded Linux distro running on the board and there are some cool videos of it working. Don't doubt it, this is being driven by Texas Instruments, who makes the chips for this board, so it's not purely a community driven project, but it looks like an independent community has formed and is running with it.

I think this would be a good choice to target an Eclipse for Embedded distro. I think a case could be made for qemu as well and the various CPUs and boards it emulates. And I assume you'd target Linux for these platforms. But then you open up the questions, which distro do you support, or do you make your own? And what about the other free or quasi-free RTOSes that have Eclipse support. At a minimum you need a cross compile and debug tool chain to integrate Eclipse with but what else would you need?

I get the feeling that this could turn into a pretty big project on it's own. Which, of course means it won't happen without a community behind it and maybe vendors to sponsor it. I'm interested in hearing your opinions on what this all should mean and what you would like to see in an open source Eclipse for Embedded IDE.

Thursday, February 05, 2009

MinGW frustrations

Um, yeah, Wascana 1.0 keeps slipping. Work has been very busy leaving little time for me to work on it, but that should be clearing up in the next few weeks (I hope!). But as I did my testing for the release candidate of CDT 5.0.2, as I expected, I ran headlong into the gdb 6.8 issue that everyone seems to run into. I don't know how many people I see on my Feedjit log searching for: "gdb eclipse No source available for "ntdll!LdrAccessResource()". And I hope those people now find this blog entry instead.

The issue is that before gdb 6.8, there was no way to issue pending breakpoints using the MI protocol we use to talk to gdb. I think it was introduced in 6.7 from the CLI, but that doesn't help us. To support breakpoints in shared libraries, we need to keep retrying to set those breakpoints on every shared library load event. That worked for many years. But now, the break on shared library event in the MinGW gdb 6.8 really messes up the CDT. And it's mainly because it doesn't work in gdb any more.

So the solution is to add support for pending breakpoints, at least into the MinGW debugger target. But, alas, I think that's going to be a lot of work. And given I'm having trouble finding time to even get the p2 support for Wascana done, let alone dive into debug which I don't really have expertise on.

At any rate, the experience is so bad, I'm starting to think of holding off Wascana 1.0 until Galileo in June. I can make the p2 repo available so people can download the same thing I'm testing with. But until this debug issue is resolved, it's not an environment I'm happy to send out to the world.

That and there was an interesting conversation on the mingw users mailing list recently about the state of gcc 4.x for MinGW. I've lost faith that it's ready for prime time as well.

It's enough to make me wish we had a Windows debugger available and to complete our Visual C++ support (wink, wink, nudge, nudge to people who know who they are ;). For now, bear with me.

Sunday, February 01, 2009

TV's are small, plus a little Clutter

So I was sitting watching my 40" HDTV the other day, and started thinking about why web browsing on a TV pretty much sucks, even with all the pixels you get at 1080i or what have you. And trust me, I tried it with our PS3 and other than watching YouTube videos, it's not a good experience.

But while I was sitting there on my couch (or sofa, depending on your English dialect) a pretty normal distance from the TV, I held my hands up to frame the size of the picture at arms length. Then lowering it to may lap, it struck me. The size of the picture isn't any bigger than a handheld gaming box, maybe slightly bigger than an iPod Touch (as I try to find one for my son's birthday on Thursday :( ).

The reality of the situation is that even with the higher pixel count, you still need to treat set top boxes as mobile, but not mobile, internet devices and entertainment units. And that especially goes for the UI. Don't try running GNOME on it, that's going to be brutal.

So I'm off taking another look at mobile devices and the user interfaces they present. The newest one is the 2.0 alpha release of Moblin, Intel's effort at a Linux distro for mobile internet devices and netbooks running their chips. The video in the LinuxDevices.com article is intriguing, and made me go look at what technology they were using to present their 3D animated GUI.

Well, it turns out to be another open source project called Clutter. They produce a library that abstracts away the grunge of OpenGL and OpenGL ES to build user interfaces. You create Actors that have images and such and declare their animation and event handling and then fire off into an event/display loop. You get pretty cool effects with not too much code.

Now, I have to pick at the choice of GTK as their paradigm mentor and, yes, if you're used to GTK programming, doing Clutter will be natural, but if you're like me and fell in love with the Qt and it's elegant use of C++, then you'll be a little put off. I did find a clutter-qt integration in their repo, so maybe you'll be able to do both in the future.

Someone once said, and I think he lived in Redmond, Washington, that there was no innovation in open source. This is a pretty significant counter to that. This project has been around for a while, sprouting out of the need to add GUIs on top of the new fancy 3D graphic chips appearing in handheld devices. They have a innovative and game changing solution. The just need people to discover them, and Intel, who also happens to be their new boss, is helping with that.

Friday, January 23, 2009

Can an LGPL Qt give C++ a lift?

Black Duck recently announced their top Rookie Open Source projects for 2008 which using a bit of a weird metric, revealed the top 10 open source projects that were created in 2008 that had the highest number of releases. More releases makes you good? O.K...

Anyway, the most interesting information from their news release was the stats they gathered on what programming languages these new projects were using. To the surprise of many, 47% of them were written in C (C Rules!). That was followed by 28% in Java and 20% in JavaScript. It's pretty interesting there was so much JavaScript usage. And again, these were projects that have just been created. But when you look at it, most open source projects target Linux, and by far the most popular language for Linux is still C.

One thing I noted, though, was that C++ wasn't even mentioned. It could be that they lumped C++ in with C, but I have my doubts. I rarely do see C++ in open source. The large open source game engines, like Ogre and Irrlicht as well as Firefox (of course), are in C++, and OpenOffice is written in every language imaginable including C++, but I see C way, way more.

[Watch out, bad segue ahead...]

I spent part of last weekend taking a deeper look at Qt, with its upcoming spanking new LGPL license. I have to admit I'm a GPL library bigot and kept away from Qt because of that, but boy do I regret that now that I've seen it. It's an incredibly complete C++ library for building apps of all kinds. And it has everything I've been looking at lately, WebKit, JavaScript (well ECMAScript but that's the same thing), and OpenGL, and incredibly smooth integrations between those and many more components.

So as Qt makes this transition, I have a feeling it's going to gain in popularity everywhere. And I think it'll show the power of C++ and pull a lot of the developers writing for the C-based GTK away. Heck even Ubuntu is thinking of switching to it for their mobile platform.

Kudos to Nokia for making this decision. I think it's going to pay dividends for them as developers take a fresh look at a great framework. Which, BTW, means there will be more developers working in the same environment that also happens to run on Nokia's phones ;).