Monthly Archives: March 2008

Unexpected surprise in my Fruity Loops

As I mentioned previously here, I am starting to get into making my own electronic music. I’ve played guitar for many years as a hobby (and I’m nowhere near as good as Steve Northover) but wanted something that I could play with on the road (yes, I was creating music on my flight down and back to EclipseCon). That and it gave me a way to mix hobby and work since I could build software synthesizers using the CDT and Wascana.

I purchased a copy of FL Studio, which has been previously known as Fruity Loops when I first heard about it a few years ago. It’s a goofy name you’d associate with a kids product, but it’s now a full fledged digital audio workstation and deserves a grown up name. They just came out with a new version and one of the hidden gems is the inclusion of a product called SynthMaker that lets you build your own software synths using a visual programming environment.

O.K. creating your own synths without having to write C++ code. I guess not all musicians know C++ so I get it. And creating them visually is an interesting approach that newbies should be able to figure out.

But what struck me as I started digging into the sample synths it ships with (which sound awesome BTW) was exactly how powerful a programming environment this is. You create modules which have built in algorithms for everything from audio processing to IO handling to the rendering of the graphics for the synth UI. And then you hook them all up using interface ports and data flow lines.

OMG (the pun is unintended but now that I look at it, it’s pretty funny), this is UML Action Semantics in action! Ever since I was involved in the review process for action semantics (including a very awkward call with Jim Rumbaugh – man, was I intimidated by the legend!), I had a vision of a visual programming language based on the concepts. You essentially declare objects and actions that you perform on those objects and link the actions together with data flows and control flows. And now that multi-core computing is becoming all the rage, I figure it’s even more important. I think it’s the only way programmers will be able to grasp multi-threaded programming, by forcing the code to flow in multiple dimensions instead of the single dimension text streams we have today.

So while I’m taken aback that I found this vision manifested in such a niche product, it helps me realize that this vision could be practical. I can’t wait to start diving into it further and getting real experience at programming this way. If it works well, then I can really see the need to manifest this as a general language. And wouldn’t this look great written using the Eclipse Modeling projects.

Eclipse p2, sweet!

As we hinted at EclipseCon last week, my team has been evaluating p2 as the framework for our new installer technology. We’re essentially coming from an InstallShield world where we have these big monolithic setup.exe type things and we are looking to make our installs more flexible and open the door to electronic distribution. It’s an exciting vision and we’re pumped to be working to make it happen.

I’ve talked to the p2 team off an on over the last while trying to get a sense of what they were doing. But it really took Pascal’s p2 long talk for it to really hit me. p2 is the new Update Manager (duh, that’s what they’ve been saying all along). But as I look under the hood, it’s an Update Manager on steroids (good thing there’s no drug testing of software). And it’s really got us excited.

The beauty of it is the extensibility. The underlying concepts are sound and based on some pretty standard notions albeit with weird names. InstallableUnits and Artifacts, what’s the difference? Once you get past that you’re fine. But the fact that you can override how things are installed with Touchpoints, and the fact that you can override how the Repositories are stored opens the door to some really exciting opportunities.

Aside from my internal work, I am looking to make a p2 based installer for Wascana. Yes, it can be used to install the Eclipse bits for the Platform, CDT and other plug-ins I need. But it should also be possible to use it to install the toolchain and libraries as well. What also struck me is that I should also be able to install the bits directly from their own download sites. This will allow me to quickly make available new releases of the components. The flexibility will still allow me to create off-line installs as well.

Another thing that popped into my head was whether p2 could be adapted to install Linux packages. Every distribution pretty much has it’s own package manager. It would be very interesting if we could get p2 to install RPMs for example allowing us to use the same UI to set up Eclipse as well as packages, or even allow us to set up dependencies between them. Then we could create a Linux toolchain integration plug-in that depends on the compilers and have the p2 installer install the whole thing.

So as you can see I have big dreams for p2, probably more than the p2 team can handle at the moment. But it’s an area that I really want to get involved in and contribute. And we’ll see where we end up.

The community gets it

I just read Mike Milinkovich’s post and it summarizes really well what Eclipse is all about. I’m going to use it as a reference whenever someone asks. And I’m going to add Cory Doctorow’s quote to my list of mantras. “Ideas are cheap. Execution is hard”. How true is that!

I often hear people wonder why the Eclipse Foundation staff doesn’t step in and “fix” all of our conflicts. Well, that’s not their job. That’s not what Eclipse is all about. The Foundation is there to provide an environment that (hopefully) enables communities to succeed. They are facilitators. No, if there are conflicts happening it really is up to the community itself to do the heavy lifting to resolve those conflicts. And if there are projects that are dying, or suffering from a lack of diversity, it is up to the community to step in and fix it.

And the great news is that I really saw last week at EcilpseCon in the many discussions I had with members of the community, they get it. One guy asked me and I have no idea who he was, “so is AGR really dead“? I said, “yeah, as far as I know”. Then he said back, “even if I try to contribute to it?” Wow. He gets it.

I passed Mike in the bar and he was talking to some of the guys and he was noticing that there were many more conversations happening in the hallways than in previous years. I have first hand experience at that. And I really think it’s because the community is coming to EclipseCon to work. In previous years, many were coming just to see what was going on, maybe see what fancy new projects people were working on that they could use. I’m not saying that they are now coming to see how they can contribute. But they are realizing that if there’s something that needs done, they have the power to step in and help make it happen. And that’s an exciting trend.

The area that still has me concerned though is with the Eclipse Platform and the new e4 initiative. And, maybe a surprise to some, my problem isn’t with the Platform committers. They worked very hard last week to make me feel at home and to push me to contribute to the platform, especially with the flexible resource model that we have been working to resolve in the CDT. And for that I am truly grateful.

No, my problem was with some of the questions and “ideas” that came up from the audience at the e4 BOF. We have been blessed with the Platform team’s great work at providing us with a technology base that has enabled this rich community to grow. So much so that we’ve grown accustomed to receiving gifts of new features and fixes on a regular basis. That’s got to stop. The feeling that I brought home with me is exactly what I had hoped. The Eclipse project is the same as any other project and needs to be treated as so. “Ideas are cheap. Execution is hard.” If we as a community need things from the platform, it is up to us to do the heavy lifting to make change happen. We do have the power if we do the hard work necessary to make it happen.

Another EclipseCon in the Books

Well, it’s finally over. EclipseCon that is. But I think it also marks a beginning for me. I was able to meet so many people and accomplish so much this week, it was definitely the best EclipseCon for me.

I’m just going to drop a quick note here since I really need to get to sleep to catch the 7 a.m. flight out of SFO to Toronto on my way home to Ottawa. It’s my wife’s birthday and I need to get home in time for at least part of it.

So here are a few quick notes on my experiences here:
* e4 isn’t so scary. What’s scary is that I appear to have volunteered to drive the flexible resource model in the platform. It’s a huge responsibility but it needs to get done and I look forward to keeping the momentum going to make sure we get the right solution in place for everyone who uses platform resources (which is quite a few people I hear!). And a big thank you to McQ and Szymon from the Platform Core team for helping us get this going.
* Embedded at EclipseCon is alive and well. I first ran into this at Eclipse Summit Europe where I met a lot of CDT adopters from the embedded space. I thought it was just a European phenomena. Apparently not. I met even more this week here. This is another thing we need to keep the momentum going.
* We need a grassroots embedded development IDE just like we have with Wascana. From the DSDP BOF there appears to be interest in this. And you can count me in with helping it out. And even more reason to figure out how to ship GPL code from eclipse.org since so much of the common embedded tool chain is GPL.
* Speaking of Wascana, the Microsoft announcement was very underwhelming. I need help interfacing the CDT to the Windows debug APIs. Microsoft, come help me!
* Not only did I learn about it, I learned how to spell Mylyn (sorry again Mik!)
* p2 is the future. Well, it’s actually the present and it’s great to see it coming together quickly. Given my new role at Wind River, expect to see Wind River participating and contributing.
* I’m getting old. I was in bed before midnight both Monday and Tuesday. Wednesday not so much, but I did feel good when I did. Having said that, I did consume a lot of beer this week, all in the name of community building 🙂

Well, I’ll have more to say later.

Mylin & CDT destiny

It’s an interesting phenomena at Eclipse how bug reports get to be famous. It’s how issues are raised, where discussions on solutions take place, and patches get attached. There are famous bugs in Eclipse that I’ve heard about and finally, I think we’ve got one on the go for the CDT. It’s bug 162558, the Mylin bridge to the CDT.

I’ve heard great things about Mylin for a long time. An old colleague of mine raved about it. I tried it and it has a great Eclipse interface to a number of different bug systems. But today, I learned from Mik’s talk about the task management features that Mylin provides and how it cleans up the UI to help you focus on what you are working on. It’s a different way of working, but I can see that once you adopt it, it’ll give developers a huge boost in productivity especially when they are working on multiple things at a time.

We’ve had bug 162558 around for a long time which asks for CDT support in Mylin’s task management system. I think there was concern that it would be a lot of work and CDT developers have always had other things to work on. But Mik promised on the report that it would only take 2-4 weeks. And now we have Jeff Johnston from Red Hat who has signed up to help and has a new plug-in ready to show.

I really think that this is a hugely important development for the CDT. In the C/C++ world, our biggest competitor is still emacs/vi and make, i.e., the command line. It’s too easy for new CDT users to get frustrated and throw it away and go back. Much more so than Java developers, for example. Ever write java code with command line tools? It’s a lot easier with C/C++ where the tools have been optimized to work well on the command line.

We really need to show the value that will pull users through the learning pains of adopting Eclipse (mind you we need to address those too) and tools such as Mylin can do that. You won’t find a command line version of Mylin. So we’ll work hard to get the CDT Mylin bridge into CDT 5.0 for Ganymede. It’ll be a fun thing to add to my CDT demos and hopefully can convince more people to use the CDT.

EclipseCon is about people

I finally headed up to my hotel room to finish going through the CDT Build tutorial. I think I’m ready, wish me luck.

I was having way too much fun meeting people and catching up with the CDT crowd. That’s what this event is all about for me. There’s lots of talks I want to go to and learn some of the new areas of Eclipse that I haven’t been involved in. But I may end up just sitting in the power lounge meeting people, discussing CDT and Eclipse issues, and just enjoying being a part of this great think called Eclipse.

At EclipseCon 2008

Well, I’m finally settled here at EclipseCon. I’m helping give the CDT Build tutorial latter today and haven’t had much time to look at the matereal yet. So I’ll be doing that the next few hours.

Of course, I made the “mistake” of coming up to the power lounge to find Chris Recoskie and ended up running into quite a few people. That’s the great thing about EclipseCon, it’s meeting the people you talk to on the mailing lists. It’s a lot easier to talk in person and it’s always good to put a face with a name.

The flight down was great and, as it seems to always be, you end up meeting other EclipseConers on the flight. I ran into Jeff McAffer in Ottawa then we picked up Eugene Kuleshov and Andrew Overholt in Toronto. We were a merry band of Eclipse committers and it made a usually arduous journey a lot more fun.

I’m really looking forward to the week. I come with two hats on now. Of course there’s the CDT where along with the tutorial, I am giving a short talk on CDT 5.0 Ganymede state of the union, as well we have the CDT BOF on Wednesday night where we will get to meet all the CDT gang and learn a bit more about eachother and talk CDT.

My other hat takes me in the direction of the Eclipse p2 project and Eclipse installer technology in general. Jeff gave me a really interesting demo of p2 used in a way I never thought about, i.e. provisioning software on devices. And it doesn’t have to be OSGi based as many assume. It gave me some ideas.

And of course, who could miss the e4 discussions as we as an Eclipse community start to plan out the future of the Eclipse platform.

So if you’re here, and you see, please stop me and say hi. I’m always interested to hear your take on the past, present, and future of the CDT and Eclipse. And I really do learn a lot from hearing your story.

CPU vs GPU wars

I just finished reading this great interview on Tom’s Hardware with Epic Game’s CEO Tim Sweeney (of Unreal fame). This is actually the second part of a three part series and I really like his opinions on the state of PC gaming and what the future may hold.

The part that got me interested in writing about it was his conjecture that in the future, as was in the past, graphics rendering is going to be done in software instead of hardware. As GPU (Graphical Processing Units) become more powerful and general purpose, and with CPUs going multi-core, it just makes more sense to leverage that power in a flexible way with software renderers. He figures it’ll get to the point that game programmers won’t use DirectX or OpenGL, but will bypass it all and write code that runs directly on the hardware.

He then takes it a step further. If CPUs adopt wider vector computation, or GPUs adopt general purpose instructions, we could see the dividing line between the two blur until you can’t tell. He predicts GPUs will reach a point where you can run a Linux kernel on them. If that happens, why would you need a CPU?

As it has been of late, the gaming industry is really driving the investment going into PCs architectures. I doubt any of this would be happening in the consumer space at least without it. But this could really change the players. Could nVidia build their own PC architecture without the help of Intel and AMD? Is this why AMD bought ATI? Is this why Intel is investing so much in multi-core architectures? I don’t know, but I can’t wait to see what unfolds.

How to tell a project is really open

So how do you tell whether a project is truly open or not? Well one way I use is to take a look at the developer mailing list for that project. The volume of traffic there is a good judge not only of the activity of the project but how well the developers communicate with the community.

Now it’s much better to look at the archives. I remember signing up to the gcc developers list for a few minutes when 20 or so message jumped in and I quickly unsubscribed. gcc is a massively active project that has contributors that love to communicate. Good or bad, it is what it is, an open project.

And I guess there should be some metric you could calculate to measure the openness, something like number of mail messages versus lines of code committed. If that number is low, you have a closed project, if that number is high then it’s open. Not sure if that makes the most sense but then, I wonder that about most metrics anyway.

At any rate, I decided to take a look at a number of *-dev mailing list archives at eclipse.org and see how many pages of items there were in the last year. If you get a chance go check out the archive for the cdt-dev mailing list. I’m proud to say there we’re 26 pages of items in the last year. We score pretty high. Mind you being a diverse set of contributors, we have to communicate via the list. It’s the only way to get the message out to everyone who needs it.

So when I talk about a project being truly open, I mean the daily business of that project is done in the open on a publicly accessible forum. And if you fill up the subscribers mailboxes with good information, even better.

What do you want Eclipse 4.0 to be?

Well, in a very awkward move, the Eclipse Platform project has combined with the Eclipse Rich Ajax Platform (RAP) project to create a new “component” of the Eclipse Platform called “e4”. Apparently they have built a prototype of what the “next version of Eclipse” will look like. I’m a big fan of innovation, I just wish that the community was involved even earlier. And despite Chris zx’s claim, you involve people by reaching out to them, not just calling meetings and hoping people come.

The timing of this is probably what drove me off the deep end (and I made some pretty snarky comments on the planning council mailing list and I do apologize for that). You see, I have just given up on my attempt to support flexible projects for our CDT users. As a refresher, I was attempting to implement something like the way Visual Studio manages project files by allowing users to add files and directories from anywhere and to exclude others from showing up in the resource tree.

We had a lot of discussion on the cdt-dev list and I think we’ve concluded that the only possible solution is to modify the Platform to treat this as a first class feature instead of the crazy workarounds we were trying to do. There are quite a few features in the CDT that started out as workarounds for the Platform’s failings. It would make much more sense if we did them by fixing the Platform itself.

But then this “e4” thing came. I have no idea what it is technically. But from what I understand it’s an Ajax based thing, since the RAP guys are heavily involved in it. When I think of my vision of the next version of the platform, Ajax isn’t on my list. Visual Studio feature parity is. That’s what a lot of CDT users care about, including paying ones.

I hope that this new “e4” component/project/people are open to everyone’s vision of what Eclipse needs to be. At the very least this has opened up the can of worms and we can get this out in the open. Everyone who depends on the Eclipse Platform needs to participate. And that’s probably everyone. I’m not sure how it’ll work. But it is critical for Eclipse as a whole to ensure that it does work.