I recently got a note from a Hakan at MySQL who wrote a tutorial on how to use the CDT to build and debug a component of MySQL called Falcon. I’m always glad to see when other open source communities have found the CDT useful for their work. It’s one of the best ways to show publicly the different capabilities of the CDT, and its a lot easier to get co-operation between open communities.
The tutorial shows MySQL being debugged on a Mac. I didn’t realize how slick the CDT looked in that environment. And I guess I didn’t realize that MySQL ran on a Mac, but it makes sense that it does. And it really shows the value of the CDT for cross platform development. They follow the same steps on Linux. Now if we could do Windows just as easily…
Hmmm. Instead of huddling around a campfire, we were huddled around a projector screen, and there was lots of beer, so I guess it qualifies as my kind of camping. I attended the Ottawa Demo Camp last night and it was a pretty interesting evening. There were around 30-40 people there and we had 7 demos by various people who work on Eclipse technologies that live in the Ottawa area. Only a couple were from IBM, which kinda dominates the scene here, so it was good to see the diversity.
The one I found most interesting was a new start-up called Protecode. They demoed the product they are building that helps secure any IP issues that can be introduced as developers are working in the code. I’m sure some of those developers would be creeped-out by a tool watching you cut and paste code and recording if you pasted code you shouldn’t have. But for large firms that have strict IP policies, this would be a great tool to help them find issues early in the development cycle when there is still time to address them. I had some nice comments talking to their CTO after about how great it was to have the CDT available to them so that they could get some C/C++ developers using their tooling and help them get to market quickly. And that’s what the Eclipse ecosystem is all about.
For my demo, I had to quickly put something together. Things have been pretty busy for me lately and the demo slots were only 10 minutes anyway. So I decided to show a side by side comparison of the features in the newly released Visual C++ Express 2008 and Wascana’s CDT 4.0. Even I was little surprised at how evenly we are matched with the “Goliath” in our space. And, of course, to show the real benefit of Eclipse and the CDT, I showed how I extended the CDT to generate new project code and build settings for wxWidgets using CDT’s extension points and the Plug-in Development Environment. Not something you can do with the free, or even the paid, version of Visual Studio.
All in all it was a great evening. I got to catch up with some old colleagues of mine and got to see the diversity of interest in Eclipse here in Ottawa. And from what I hear, the other Demo Camps being planned are just as big if not bigger. It would be cool to be able to see what everyone is doing in Budapest…
Time is flying and we can’t stop it. The submission deadline for EclipseCon talks and tutorials is fast approaching, i.e. Nov 19. We have been allocated a number of tutorials and talks to talk about Eclipse in the C/C++ world. If you are planning on attending EclipseCon anyway, you might as well talk while you’re there, and get some or all of your registration fee paid for. Feel free to submit any ideas you may have, no matter how crazy they are to the EclipseCon submission system.
O.K. I’m on record as saying I hate Linux because it looks ugly. Windows has much cleaner fonts and UI responsiveness (unless you’re doing a lot of disk access in which case you get tons of hesitation, but I digress). That being said, the development tools in Linux are way better, as is traditional with the *nixes of the past. Heck, any operating system that lets me mount a file as a pseudo file system can’t be beat.
So, as the story goes, my laptop is starting to get flaky. It overheats when plugged into my port replicator and shuts down at random times. And I don’t feel like going without it for a few days to get fixed, at least not right now. So I’m just using it without the replicator, meaning I have my LCD screen and keyboard freed up. So with all the hype surrounding Ubuntu 7.10, I upgraded my little Linux box and plugged the LCD into it. I’m now using it as my main development environment leaving my laptop for e-mail and internet radio and stuff.
One thing I noticed right away is that my Linux box has a video card that supports OpenGL (vmware does not). That allowed me to enable the cool compiz desktop enhancements. Now my windows jump onto the screen and scamper off when they’re done. When I move them, they flap in the wind (which is pretty annoying after a while). I managed to get the fonts to the point where I don’t mind them, but they’re still miles away from Windows. But you know, it’s not that bad an environment.
Now I see that Fedora 8 has been released with a whack of new desktop features. Of course, given that both distros are taking software from the same base, it’s not too surprising that Fedora 8 looks just as good. Ubuntu is apparently still better for laptops, especially when plugging and unplugging external displays all the time (which actually worked when I ran vmware on my laptop in full screen mode). I saw a note in the Fedora 9 plan about trying to be as good or better than Ubuntu at that.
So I have to eat my words a bit now on Linux desktop. It’s starting to look pretty good and probably time for me to start taking seriously, especially when Eclipse and the CDT are becoming a favorite IDE for Linux. And with the little competition between Fedora and Ubuntu, the user experience should only get better too.
In my last entry, I dropped a quick note about a feature I’m planning for CDT 5.0 due out with Ganymede next summer. We are getting more and more requests from users moving over from Microsoft’s Visual Studio that the CDT should do things like in Visual Studio. One of the high runners is to be able to add files and directories from anywhere in the file system to projects, and to be able to exclude files and directories from other directories. You could use Linked Resources to do the ‘add’ today. But there’s no mechanism to do the ‘exclude’.
After playing around with EFS for remote project support, I got the feeling that I could do this add/exclude functionality using EFS by implementing my own file system that would map paths requested from IResources into real file system paths the users wants them to map to. I’ve decided to call this the Flexible File System (or ffs for short and as the schema name).
I’m not sure if this is going to work out yet. The simple things like opening files and building the resource tree should work. I really want to get the Team system working as well so you can keep the files in source control. That will be the really tricky part. I also think there is going to be a lot of issues we uncover where we’re assuming we know the layout of the file system. And we got to figure out how to tell the external tools the real file locations they need.
For now, I’m only looking at this from a CDT project perspective. I know there are a lot of other projects that could use this and I hope we can move this to the platform at some point. And it won’t do some other things with the resource system we’ve always wanted, like nested projects. But now that we’ve reached a good level of maturity with the CDT, we need to start addressing these issues and remove those final big objections to moving to the CDT and Eclipse.
For some reason, I’ve gotten interested in ray tracing (like I don’t have enough in my life to do right now). So when I found out about a project some guy is working on called Arauna, I had to go look.
It was pretty cool. It looked great as far as lighting and shadows and reflections go, which is one of the best things about ray tracing. And it was rendering a scene with 70K triangles in real time with frame rates on my Core Duo laptop between 7 and 25, pretty reasonable. And with the algorithm exploiting both of the cores, it looks pretty promising as well in our near future of highly parallel architectures.
The guy had the source code for download as well. Of course, being a Windows app using DirectX, it came with Visual Studio project files. Once I figured out how to work around the project setup for Intel’s C++ Compiler, I was able to load up the projects into Visual Studio Express 2008 Beta 2. Not only was I interested in looking at the ray tracing algorithms, I also wanted to check out the state of the art that Visual Studio is coming out with compared to the CDT.
VS does have a few things that we have now with CDT 4. It has a pretty fast search for declaration, definition, and references. It seems pretty accurate, although I did notice the had the same problem we did when opening the definition of a constructor. It went to the class definition instead. Also, they have a call hierarchy tree, just like CDT 4 introduced. I guess we’re reaching some kind of parody as far as features go.
But the feature I missed most, especially when trying to learn someone-else’s code, is the Outline View. We sure do take it for granted in Eclipse-land. It’s been there forever with the CDT, starting with the original drop from QNX. With VS, I kept finding myself looking over the the right hand side of the screen to see the outline every time I opened a new file. Instead I had some useless property page staring back at me.
We’re getting more and more feedback from CDT users that are coming from the Visual Studio world. There are a few things that Eclipse and the CDT are missing and we are looking at trying to address those. The biggest one is that they want the ability to add any files and directories to a project that they want. I’m looking into a way to do that with the Eclipse File System (EFS). We’ll see if I can get my ideas working. But it’s cool to see the trend developing.
There has been an interesting discussion on the Eclipse Planning Council mailing list over the last few days. We are planning the Ganymede release scheduled for June of ’08 and as part of that, we are trying to integrate an expressed desire by the Eclipse Board of Directors via the Eclipse Foundation that projects meet a number of requirements that raise the quality of Eclipse across the board.
This has caused some confusion and some misdirected passion (of sorts). Given that the Eclipse governance model has the committers, the people elected to make code changes, as the only people who have the power to make code changes, and that the Foundation and Board have no real power over the committers, other than those employed by Board members, and other than to hold up the IP review process that governs getting 3rd party submissions into Eclipse, how do we get these requirements to happen?
My favorite solution at the moment is to create a “carrot” instead of some sort of “stick”. Something for projects to aspire to. Something that gets a bit of glory in the community. That idea is to take the existing Eclipse packages, such as the Eclipse C/C++ IDE, possibly adding others, and treat them as real commercial products (still free and open mind you). For those of you who aren’t heavily involved in software product development, there is a whole set of tools you get with the field of product management. Some of my best friends in this industry are product managers. These are the guys who take a look at the market, talk to existing and potential customers, figure out what a successful product in that marketplace would look like, and then drive those requirements through the engineering team to make it happen.
There are a number of benefits to this, including giving the industry something to focus on when they talk about Eclipse and a higher quality product base on which vendors contributing to Eclipse can build their own products on, without having to duplicate the “productization” effort. And being the showcase of Eclipse technology, projects that want to show off their wears would put in the extra effort of complying with product requirements so that they could be included in that show case. (In theory, anyway).
But I also think that the challenge of making this work is daunting. My product manager friends will be the first to complain that they don’t have a lot of power over the engineering teams anyway, but with the Eclipse contributor co-operative that we have I don’t see much hope. There has to be a commitment from the community that this is important for Eclipse and important for themselves. But I do think we need something like it, because I do think it’s important for Eclipse and for every vendor making products based on it.