Monthly Archives: July 2009

Time to come clean. I’m a Google fan-boy

I appreciate all the comments on my last blog or two about how e4 is doing a lot of the things I am trying with GWT. I don’t dispute that. It’s even interesting that RAP is planning to build on top of GWT. That’s fine. I respect what the e4 guys are doing, it’s a huge task and they are trying to modernize Eclipse as we all agree is necessary.

But I’m just wondering if using GWT directly while using OSGi web services to hook up to the IDE things I need in Eclipse, which is essentially IResource and up, is a better architecture to get us to a web-based IDE. And right now I’m trying to keep it simple and avoid any layers on top that e4 may be providing. Maybe there’s a compromise choice. And I’ll be open to that once I fail, which will not surprise me in the least. But I need to see first hand at what’s possible in the GWT world. In the short term, that probably means I will appear to be anti-e4. But I’m used to being the bad cop by now, I guess.

So why am I doing this? OK. I admit it. While I have no contractual relationship with Google, I am a Google fan-boy. I have an Android phone which I am learning how to build apps for. The Android momentum will be unquestionable over the next few months as new handsets land like the rain in Ottawa this summer, including ones from our Eclipse friends at Motorola. Chrome is my default browser, although I’m using IE8 on my 64-bit Windows 7 laptop to check out its progress (which is actually impressive). I’ll go back to Chrome once I get the RTM build installed. I use Google Mail for my Eclipse mails and am finding it nicer to use than the Outlook I use in my day job and I can access it anytime, anywhere, especially on my Android phone.

Google Wave and Chrome OS are technologies I am very excited about, and I have no doubt they will have a dramatic impact on our industry. And it’s Google Wave that I have an eye on for this IDE work. That is my end goal. I believe following Google’s way of doing things is important in that journey. And while not all Google products use GWT, Wave does, and it was the excitement for GWT I heard in the Wave lead’s keynote at Google I/O which has driven me here.

And maybe that makes me the Google fan boy at Eclipse, so be it. You wouldn’t bet against Microsoft in the last decade or so. I don’t think you should be betting against Google now. And while the relationship is good on the tools side, I want to help make sure Eclipse isn’t on the outside looking in when it comes to these run-time technologies.

GWT + Server-side Eclipse = W-IDE

Someone once asked me why we break up things between ui plug-ins and core plug-ins. My theory was that we could eventually swap out the ui with something else. I didn’t really believe that at the time, and I’m not sure how well architected our CDT plug-ins are to allow that, but it sounded good.

So as I begin my journey down the road of web-based IDE’s it really struck me that this was the time to swap out the UI. My theory goes like this. Google are the experts at creating web applications (and you may disagree with that, but stick with me). They have a framework for building them called the Google Web Tooklit, GWT, which allows you to program your UI in Java which then gets compiled into JavaScript. And, they have a really cool RPC mechanism, again all in Java, that overlays Servlets. Hey, Equinox plus Jetty gives you Servlets. Why not swap out the Eclipse UI code with a GWT implementation that talks to our Core code using Servlets?

A big thanks goes out to Ian Bull who reminded me of the example project he created last year that shows how to use GWT with Equinox OSGi. I have extended that a little to call into the Eclipse workbench, right now calling Platform.getOS(). This is the start of my prototype web-based IDE using GWT as a front end to the Eclipse IDE Core parts. And I am pumped the deeper I get into it. Feel free to follow along as I check my prototype into http://github.com/dschaefer/w-ide. Feel free to fork that and join in the fun. (BWT, I need to show you the cool way I’m using git, stay tuned).

As Ian says, “GWT + OSGi is a great platform!” And I am starting to see why. It really is. So much so that it confirms my earlier conjecture that Equinox would be a great addition to Chrome OS and I hope Eclipse people are talking to Google people about that. Wouldn’t it be cool to see Equinox serving up local server pages, presenting a p2 install web UI to download and install bundles into your favorite mobile device. Yes, it would be cool.

Oh, yeah, and here’s my vision

Ian pointed out that I actually didn’t state what my vision for Eclipse was. I noticed that after I posted, it was probably the wrong title for what I ended up writing. I’ll try again, maybe sooner than later, I’ll actually get my point across.

I do have a vision for Eclipse, or rather, Eclipse as an IDE. Eclipse is so much more these days, I really need to differentiate myself. I am an IDE guy. Eclipse started as an IDE, turned into a great IDE, let’s keep it that way. Maybe that’s my vision. Keep a good thing going with focus on stability and quality.

I also have a vision on where IDEs are going, and I mentioned that in a previous blog where I stated the prediction that the desire for software developers to write software using mobile devices will drive that vision. But in the end, I think it’s more than that.

This vision comes from watching the Google I/O keynote on Google Wave. If you haven’t seen it yet, do so. Whether Google Wave is the right technology or not, the workflows they present are the future. I have no doubt of that. And it’s all about collaboration, including real-time collaboration, through your web browser. And that let’s it run on any platform with a web browser, which is pretty much everything.

I was especially struck with the demo of the team working and commenting on documents. Everything becomes a document, or a Wave in Google’s terminology, and everyone can contribute to it. And it keeps track of who contribute what and when.

The first thing that popped into my mind, being the IDE guy, what if the document was a source file? Wouldn’t it be cool to post a source file for review, have people attach comments to it, maybe even edit it to propose changes, maybe even work on it together live? Pair programming accross the internet? Doesn’t that make sense in the global world we live in with software teams spread accross the world? Working in the same environment I do other collaboration. A bugzilla front end in Wave is a natural, integrated with my source in Wave, a truely integrated development environment?

Given that as a vision for IDEs of the not so far away future, how does Eclipse fit in. We have so much invested in making Eclipse a good IDE, I’d hope to keep as much as I can. And I think we can, removing the UI front end, which would be handled in Wave, and providing services that provide access to all the good information that our indexers and such provide. Even providing access to remote build and test machines to complete the edit, build, debug cycle. I think there’s a significant role for Eclipse there, and thanks to Jetty and the HTTP Equinox/OSGi service, we could do that today.

So that’s my vision, long and short. In the short term, though, I need to keep customers happy and try and convince new customers that Eclipse is right for them. And that’s where stability and quality are criticial. And that’s where I’m coming from. I’m Walt Mossberg, uh never mind :).

What is the Vision for Eclipse?

I’m on vacation, it’s rainy, so I might as well write and maybe provide a little more insight into my thinking on e4.

Now, to start, I must first apologize for the tactless way of bringing this up as I did. As the title stated and I tried to reiterate throughout the entry, these are my fears for how the CDT fits in with e4. Nothing more, nothing less, and certainly not meant as a personal attack on anyone working on e4 (and no, despite common belief, I don’t work on e4). It was really targeted at those outside the e4 community to take some time and understand how e4 impacts them.

I’ve sent a request for feedback to the cdt-dev list, so if you’re there or even if you’re not, please send me a response. I really want to know what the needs of the CDT community are so that I can properly feed them to the e4 team. The feedback I have so far, and so far it’s been private, but that’s OK, is that e4 is OK if we don’t have to do anything significant to adopt it. Which then brings up the point of why adopt it if we’re not going to take advantage of any of it. The other feedback that I got is that e4 isn’t solving problems that our community has. Hopefully I’ll get some more information. But, so far, it does justify asking the question and justify my fears.

My biggest fear for Eclipse is apathy. We’re all working on our projects and being successful at it. As I said, I’m a happy user of the Eclipse SDK and CDT, especially with the new CDT 6.0. And I’m bragging about it to the Android NDK community as we speak. I know a lot of people question e4. I just happened to be dumb enough to blog it out loud.

My Biggest Fear for e4

A buddy of mine noticed that I don’t get as many comments on my blog as I used to. He thought it was because I wasn’t being controversial enough. He’s probably right. Most of my readers follow this on Planet Eclipse and I haven’t really commented on that much lately other than the great fun I’m having using it for my Wind River Installer work and for Android native development in my hobby time. I’m just a happy user now, I guess.

“Linus is a wise man”

Following Ian Skarrett on Twitter, he points us at an article in Linux magazine where they discuss Microsoft’s Linux driver patch that I’m sure you all heard about. They quoted Linus, who is indeed a wise man with a cool head. He’s just happy to get a contribution from a new member of the community and doesn’t care who it is. That’s certainly one of the big factors to the CDT’s success as hard nose competitors worked together peacefully. It’s the only way to be successful. Don’t let emotions cloud your judgement.

Selfish need drives contributions

The other thing that Linus pointed out was that “I agree that it’s driven by selfish reasons, but that’s how all open source code gets written! We all scratch our own itches”. He’s bang on there. All of the vendors I work with on the CDT are contributing to it to make their products better. I’m sure that’s true for many open source projects. For the most part that’s a good thing, since open source users get the benefits of that work. But it also means, if there is a feature you need that none of the vendors do, you aren’t going to get it. And as much as we beg people to contribute, it rarely happens. ~350,000 open source CDT users, ~3 contributors, that’s pretty rare.

What does this mean for e4?

Well as much whining as the CDT community has done over the constraints we have to deal with via the IResource system, we only got one contributor to the e4 flexible resources project. And even there, the changes being done should end up in the 3.x series and isn’t a major break from current system. So I can only assume that vendors are dealing with what they have and the need isn’t really there for them. But I do know there are some big open source users who need it. Time will tell if they are big enough to invest in it.

But my biggest fear is the rest of e4. There are some pretty major changes in it. Will the contributor community feel the need to adopt it? And what do you do when certain vendors don’t want to adopt it? What do we do with the CDT if none of the vendors step up to support e4? Stay on e3? What if Mylyn decides to support e4 and drop e3? What if we’re forced to adopt e4 if the rug gets pulled out from under us on e3? And don’t let backwards compatibility fool you, there is a massive verification activity in the least to make sure old plugins work on the new platform.

My big fear

I’ve stated this before, and it remains true today. We’re headed into uncharted waters with e4. I fear that the contributing vendors to the CDT will not put the effort into supporting e4, because they don’t have the need. And I think this is too big to artificially “create the need”. Eclipse can’t afford two platforms. Yet that’s what we seem destined to have. A lot of CDT vendors consider the CDT finished. We have very few new features on the horizon. That will likely mean less contributions. How are we supposed to pull off adopting a new platform? That’s my biggest fear.

Project Navigator: Apologies to all

I have to apologize to the Platform team and Francis in particular for my earlier complaint about duplicate entries showing up in the Project Navigator. It turns out that the problem was actually all CDT, or more specifically, how I set up the CDT part of my combo JDT/CDT/Android project.

By putting my source and build output into their own subfolders in the the project and setting the C/C++ Paths settings to point to them and not the root Project folder, the CDT stopped trying to display the other folders in the project in the navigator, the JDT folders in particular. No more duplication!

My disappointment has turned into happiness. I can now work on my Java and C++ files using the same perspective. The only thing that still doesn’t make sense is the tool bar where the new Class button still depends on the perspective, but that’s minor.

I’ll have to come up with some way to automate the creation of what I call JNI projects that have the mix of Java and C/C++ so others don’t run into the same thing I did. Maybe an improved Convert wizard.

At any rate apologies all around and thanks!

Mobile will drive "IDE in the Cloud"

I’m in the middle of making some last minute code changes for work before I start my vacation, or staycation as I hear lots of people calling it these days. We have a pretty big JUnit regression suite to test our p2-based installer, and I made the mistake earlier this week of not running it and ended up having to rewrite the algorithm to solve scalability issues. Lesson of the day, don’t create too many Java objects in long running native code, Lord knows when they get garbage collected.

This mobile machine’s hot, man!

The main reason I didn’t run them was because I was working at home with my laptop that day. These long running tests create some massive heat build up in my machine. I lost a hard drive a few years ago doing something like that and it’s made me nervous ever since. I really don’t think laptops are built to handle the intensive compute and disk workloads that I need as a software developer. I think I’m pushing the envelope too far. In fact, I was going to start this blog while the tests were running earlier this evening but the heat knocked out my wireless.

The ultimate mobile developer platform?

I’m sure you’ve all been following the Chrome OS “shiny object of the week”. The technical details of the OS itself and the supposedly sinister plot by Google behind it aside, there is no doubting that the designs for the upcoming sub-netbook, aka smartbook, machines are pretty exciting. All day battery life, integrated 3G or WiMAX connectivity anywhere, and with big enough screens to actually be useful. And, yeah, looking at the processors that allow you to do that, you aren’t running Eclipse and gcc on these things to any great scale. But I’d love to use one of these things around the house or on trips to write code with. Especially if it lets these burn marks on my legs heal 😉

Mobile will drive IDE in the Cloud

So assuming you want to write software using a mobile device, how would you do it? And, you know, after all the naysaying I did about “IDE in the Cloud” at EcilpseCon, I finally get it. Wouldn’t it make sense to have a workstation setup where you keep all your development tools and do your builds and run your tests, and then be able to access that all from a web browser anywhere in the world? from any mobile device in the world?

That flexibility will drive demand for this architecture, for similar reasons we used this architecture in the pre 1990’s where we used to have dumb terminals connected to powerful DEC VAXen (at least they were powerful for the time). What we’re talking about isn’t much different than that, only the terminals, i.e. the mobile devices, are a bit smarter. But then the compute servers are probably equivalently faster if not more so.

An opportunity to simplify

And, yes, we do use VNC and other remote desktop protocols and clients to accomplish this today. And maybe you can so something similar in a browser (in fact I know you can, ever see WebHuddle?). But with these things I think you’ll run into the screen size issue. Myself and a lot of my Eclipse community colleagues have presented Eclipse on 1024×768 projectors and it’s brutal. The IDE just doesn’t scale that small to be useful. But this is the screen sizes you have to deal with on mobile devices.

While working through this new architecture and solving that problem, I think it’s also a great opportunity to simplify the IDE. New users find Eclipse overwhelming with all the views and toolbar buttons and menus, it’s really tough to know what to do next once you fire it up. Being in a browser opens the door to new ways of working. I think we’re still trying to figure out how to do content creation via a browser, and from Google Apps and Microsoft’s upcoming web-based Office suite, we’ll learn a lot and maybe some of these things can be applied to software development.

Is it time for a new platform?

Mobile is driving a lot of change in the software and device world. I really believe the software developer will be able to benefit from it. But I wonder whether the platform we’ve built with Eclipse is the right vehicle for this. I know the IBM team is scrambling with e4 to address that. But I’d like to see real innovation here, something that breaks away from the old desktop IDE paradigms of the past. Maybe Eclipse’s “Black Swan” is out there. If it is, we’ll have to make sure we recognize it and welcome it to the community.

Android versus Chrome OS in Netbooks?

Just a quick one. There were a lot of rumours about Android running on laptops, with Acer especially. Now they’re wondering if Chrome OS wills squash those plans. People, Android was never meant to run on netbooks. You are worrying about something that was never going to happen in the first place.

If you ever watch the Android UI presentations at Google IO, they pretty much confirm that. At one point one of the designers commented that Android developers need to deal with screens with more pixels, but to deal with that by checking density, not physical screen size.

All Android apps are being built assuming a 4″ screen. It would suck if you try to stretch an android list widget to a 10″ netbook screen. Big screens isn’t what Android is about.

Update: I just read that Schmidt and friends just mentioned the two projects working closer together in the future. Chrome on Androids Linux/BSD OS but without the Java based UI and the Dalvik VM that drives it makes sense to me.

More Thoughts on Chrome OS

As quickly as it came, the hype has died down over Google’s announced Chrome OS. There hasn’t been much to stoke the fire so it’s died down naturally. And that’s a good thing. There’s a lot of lead time to figure out how we all fit into this story, if we want to fit in at all. Here are a couple of more thoughts that came to me as I read all the stories. BTW, it seems some writers have already played with the OS, or they’re making a lot of assumptions…

Equinox as a local app server

One of the coolest features of OSGi and the Equinox/Jetty implementation at Eclipse is as an app server. This is something I’ve always wanted to spend more time with. I don’t think Chrome OS will be successful without some means of running local applications and the marriage between Equinox and the Chrome browser is a natural. I’d hope the two of these groups are talking.

GWT or SWT browser edition?

To be honest, I’m a neophite when it comes to what’s happing with running Eclipse in browser mode, be it RAP or the new e4 SWT browser stuff. All I’ve seen are demos that try to make the browser look like a desktop app. I think that’s doomed to failure. The more you make it look like a desktop app, the more users are going to expect it to work the same as a desktop app, and that just isn’t going to happen.

I’d take this opportunity to reinvent my application’s UI, to break away from the paradigms that the desktop has locked us into and to come up with cleaner, more workflow driven UIs. Having good tooling is still a must. The Google Wave guys were quick to pour praise on GWT which they used to build the Wave app. I’d pick that if I were starting down this road.

Is there a role for native in Chrome OS?

Believe or not, I think the answer is yes. We’ll I’m sure you believe that I think that but anyway. Chrome supports the NPAPI native plug-in API that was started by Netscape/Mozilla/Firefox and is now supported by WebKit/Chrome/Safari and Opera. If you have the need for a high performance app that does it’s own rendering, like a game say, then NPAPI is for you. Google already does this for it’s O3D graphic rendering API. You can too.

Now, what you can also do with NPAPI is present your C++ objects for JavaScript scripting in the browser using this interface. Now didn’t Dave Thomas say something about C++ and JavaScript being the future in his Eclipse Summit Europe keynote last year?

ARM versus Intel

It’s not a secret that Intel has an offer to purchase my employer, Wind River, on the table. That hasn’t closed yet. But I have to agree with the analysts who see this will help ARM and it’s partners. More interesting, though, is that this will really be the first time that ARM platforms and Intel platforms will be running the exact same software platform. It’ll be pretty easy to see who’s netbook/smartbook/mobile solutions are better. More importantly, it’ll drive both of them to raise the bar, which at the end of the day benefits the consumer like good healthy competition does.

Google Chrome OS

Google announced it’s initiative to build an OS around it’s Chrome browser. About time. The idea of having a browser based Linux platform is one of the things that had driven me to play with Linux in the first place. It was clear from the experiments I did that this was easily possible. Webkit with a good JavaScript engine is a great choice for that, which is what Chrome is. I guess it just took Google’s might to make it happen.

So why would Google invest in something like the Chrome OS. It’s easy, and people have speculated on it for a long time. Google wants you to spend all your time in a browser. Why? Because it changes the game. Commerce has move to the web in droves and Google wants to get you closer to that so it can get it’s cut for getting you there. It’s been a long time coming and the planets are finally aligning to make it happen.

Firefox could have done the same, but Google has the dough to make something like this happen. Which again calls into question why this couldn’t have been done in an open source project to start with. But I fear the Gnome/KDE bun fight has taken the Linux community’s focus away from how the desktop is really evolving. Google knows where things are going. It’s helping to drive them to begin with.

Will this impact Windows? I don’t think so. We’re creatures of habit and Windows already has a good browser experience. Will this impact Linux desktop? Probably. At the least it could be a better place to go if all you want to do is get away from Microsoft, which, if you are Joe average consumer, would be the only reason you go to Linux. Mind you this Joe developer is pretty happy on Linux. Even then, I am sceptically waiting to see a good browser based IDE experience.

But is the web ready for this? I’m not sure. A lot of people are saying Google Docs is pretty good. GMail is my e-mail client of choice outside of work. I could IM using the browser I guess. I think Google Wave will shake the cart here providing a slick collaboration environment that redefines all these things, so we’ll see. I’m sure once you adopt a browser-based OS you’ll find out quickly whether it sucks or not.

So what does this mean for Android? As I’ve stated here and on Twitter (dougschaefer, BTW), browsing on a 4″ screen blows. I really struggle with trying to pan around a web page to find the information I need. This is not to say that web services aren’t useful on smartphones, it just that they work much nicer if there is a thicker client to format the data to the platform, and to just manage the data bandwidth better.

Probably the most interesting aspect of this that crossed my mind is that the Palm Pre already is browser based OS. It’s also based on Webkit running on a Linux platform. So the real question is – will Google try to get Chrome OS into the smartphone format? I swear the Chrome and the Android guys don’t talk to each other. Or this strategy would already be figured out before the announcement.