Saturday, December 29, 2012

One IDE to Rule Them All

So, yeah, I promised I would blog more and then four months later, here we are. But now is probably a more important time for me to be doing this. I have a lot of things I need to share with the Eclipse community.

As I get deeper and deeper into mobile development with my work as architect of the QNX/RIM Momentics IDE, the more I appreciate the decision we made 10 years ago to build with Eclipse. The frameworks, the ecosystem, and the community are very rich and we all benefit from it. But its not without it's warts and I really need to do what I can to clean that up.

As an example, I'm building a grocery list app for my wife and I so I don't forget things as too often happens. I'm using node.js for the server-side and both a web front end for our laptops, and a mobile front end for our phones, both native Cascades for BB10 and mobile web for others.  The challenge is to use a single Eclipse workspace to build all of those components. So far it's OK and there are enough pieces to get started at least. But it's an awkward setup and there are a lot of pieces missing or don't work well, or at least, are very hard to use.

And then I have some long time gripes. Launching in Eclipse is a thing for magicians and witchery. How poor newbies are picking this stuff up boggles my mind. And that's just the one of the usability problems we see. Tool bars seam like random collections of buttons with unclear and often duplicate meanings. Users coming over from Visual Studio and Xcode are faced with a very foreign environment. There, usability experts have driven much of the complexity of project setup and launching down to a few simple concepts. We need the same level focus on usability applied to Eclipse.

One IDE to Rule Them All

I have a vision. I call it "One IDE to Rule Them All". My focus is on mobile apps, but it's clear that the best mobile apps include components in the cloud. We will continue to leverage and contribute to the great frameworks and ecosystem that we've built with Eclipse for as much as we can. But we will have a renewed focus on making sure all those things combine into a Great IDE with a Great user experience.

We have some early ideas on how to make our vision happen. New technologies like e4's modeled UI look promising. But there are a lot of experts in the Eclipse community and we could use your advice. Hopefully working together we can achieve this vision, not just for my needs but for everyone. The greatest asset at Eclipse is it's community and working together is what communities do. And build the One IDE to Rule Them All, we can (sorry Yoda :).

Sunday, September 02, 2012

Where do we go from here?

Hi! Long time no see, or at least write here in my blog. It's been a crazy last few years since I used to write a lot. I still dump my brain from time to time on Twitter @dougschaefer (sometimes too much - beware the drunken tweets, but yes I love electronic music at the moment). But I'm not sure why I stopped writing in the large. I love to write. It's therapeutic and helps me work through my thoughts to make sure I'm agreeing with myself. So it's time to start again, especially now that I'm settled in my new position as architect for QNX's Momentics/Blackberry NDK (BB10 is going to rock, BTW).

Over the last couple of years I've been thinking more and more about usability. The whole idea of being in the IDE business is to help software developers with productivity and to help them understand their code better so they can make it better. Yet I still often hear complaints that our tools, Eclipse based tools in particular are too hard to learn and are very quirky, especially for native development, even with all the work we've put into the CDT to take a Jave-centric IDE and make it work for them.

Now some of this is just, again, quirkiness of how Eclipse manages projects and resources and builds and debug and launch. And there are things we can do there to make incremental improvements. And we will continue to do those things.

But there is something bigger, and bigger in many ways. A bigger problem requiring a bigger solution but potentially a much bigger game changer. Eclipse as an IDE is looking really old. Even with Eclipse 4, it still looks like an MFC app from the 90's. That in itself isn't a bad thing, but we need to understand the reasons why modern apps don't look like that any more. It's all about usability, about making the important things obvious. It's about making the app visually appealing, ensuring the user is comfortable and not overwhelmed by choice the first time they fire it up. These are the things I'd like to see Eclipse the IDE exhibit out of the box. But as we all know it's huge mountain to climb to get there requires expertise we as engineers don't naturally by rule have in our DNA. That is: understanding the humanities, how people think, especially people not always like ourselves, empathizing with them.

So how do we start? My first reaction is to throw away every plug-in with a .ui component in it's name. Or take everything that depends on SWT and toss it. That's pretty dramatic and I thought way too hard if not impossible. Until, that is, I saw Tom Schindl's work with JavaFX and how he built a mini IDE reusing the core components from JDT. It's something I had thought of but he actually made it work and proved that it could be possible. The powerful core platform components of Eclipse and the language plug-ins, CDT included, can be used that way. It is one thing I've always mentioned when someone asked why we break out core and ui into separate plug-ins. The door is opened.

So where do we go from here? My plan is to play more with JavaFX and try out some different UI layouts and paradigms. I need to understand what is possible, how would users benefit from organizing things differently. And I can do so with the confidence that once we plug in core Eclipse, we could take this IDE we love to the next level and extend it's life to the foreseeable future. Of course one or two people can't do this alone. Any changes of this magnitude require a significant community, but something this exciting has the natural ability to create one. We'll see where we end up.

Wednesday, May 16, 2012

Debugging Vert.x apps with Eclipse


+Pascal Rapicault has me hooked on Vert.x, http://vertx.io. It looks like it can be a great competitor to node.js allowing you to use the same asynchronous web programming model not only with JavaScript by any of your favorite JVM languages, including Java believe it or not!

At any rate, tonight I started to see if I can use Eclipse to develop apps in Vert.x. It turned out to be a lot trickier than I thought so I figured I'd capture what I did here.

First, you need to create a User Library for Vert.x. I just looked at the bin/vertx script to see what it added to the Java classpath to see what jars to add to the library. After that I was able to create a Java project and add the library to the build path and code up my little hello world app (which indeed is very node.js like).


Launching is pretty tricky. First, Vert.x doesn't want your app to be on the classpath when it starts up. Weird and that means you have to remove your project from the Classpath. But you do then need to add in your Vert.x user library using the advanced option so it can launch Vert.x's main, which is VertxMgr.




And you need to add your project build output with the -cp application option, which I passed ${project_loc:/vertxHelloWorld}/bin, so it can find your Verticle class.



Finally when you debug, the Default source path matches your Classpath. Since you removed your project from the Classpath, you have to add your project to the sources manually in the Source tab.


I imagine someday, someone will create a Launch Configuration that will do this all for you but if you put some muscle in it, you can get up and debugging your Vert.x app in Eclipse now. Now, if I can debug my client-side JavaScript in the same session...

Friday, February 10, 2012

Can't wait for EclipseCon 2012

Now that my personal job situation is resolved, it's time for me to start thinking about EclipseCon. For so many of us involved on a somewhat day-to-day basis with Eclipse, this is the highlight of the year. This is where we get to put faces to names, where we get to see what each other are doing lately and to have a few debates over a few beer, to feel like we're part of the bigger Eclipse team that we are.

And it's a great chance for the people around the periphery, who use Eclipse technologies in their work or play, or use it as the foundation to build their great products on, or even thinking of doing so, to join in with us. One thing I've seen and, of course, do over the years is always give anyone who comes up to us a chance to join in on the fun. You have to, it's how you build communities.

I always love hearing how people are using the CDT in their products and the problems they encounter and the successes they have had. It's so much easier to participate in person than over a mailing list since it becomes a real discussion in real-time. And I hope that the people who come and walk away with some answers, or learn some new things, or had their chance to influence others in the Eclipse world, make it that much easier to justify the trip.

And of course, there are the sessions and the tutorials and the BOFs and a few symposia and summits and showcases, there's a lot of opportunity to participate. As an example dear to my heart, we are having a CDT Summit on the Tuesday (I'll post here and on twitter @dougschaefer the details once I know them) where CDT contributors, and even those who having a passing fancy they may contribute, will get together and talk about the next CDT release for Kepler. There's some cool stuff going on there which you will also see in the sessions like multi-core debug visualization and more. And, as usual, we'll have a BOF where anyone can come and join in the CDT discussion.

So, if you haven't already, register now. I hear the hotel rooms are going fast at the conference center so get in early so you can stay up late. And I look forward to seeing you there! http://www.eclipsecon.org/2012

Friday, February 03, 2012

Eclipse C/C++ IDE reaches 750,000 downloads for Indigo-SR1

Tuesday, January 31, 2012

Change, sometimes it just happens.

Well, it's been almost two weeks since my previous employer decided it was time for me to make a career change. Of course there's more to it than that but that's all I'm going to say about that. "It is what it is," and I'm actually pretty excited to see where my career takes me next.

While I'm an independent developer (which sounds much better than unemployed, no?), I have a few things I want to work on. Writing again in this blog is definitely one of them. It's been way too long and I've gotten used to spewing things in Twitter which is very handy but doesn't stay around long enough and isn't long enough to capture my thoughts in time. I have lots of opinions on things and it's good therapy for me to write them down.

The main technical area I continue to be very interested is, of course, Eclipse and the CDT. I've spent a lot of time over the last few months learning and thinking about usability and the importance of design and user experience. Pretending to be a newbie CDT user and walking through normal day-to-day activities shows me a few areas that need to be addressed. And since I'm still a CDT committer, I have the power to fix them.

I continue to be fixated with mobile and the new world that mobile UI and application architectures brings us. There's a reason these devices are flying off the shelves at your local phone and electronic store. They're so easy for the regular consumers to learn and use, and so powerful. It's that kind of user experience I'd like to see brought over to the desktop as well. I continue to follow the progress of Qt 5, which I believe can be a great framework not just for new desktop paradigms, but for mobile as well. It still seems to have a ways to go before it's stable, but I'm going to start experimenting with it as soon as I can get a build that works on my laptop.

The third area is a new one for me that I started chewing on in my spare time over the last few months, and that's web app development. Node.js has caught my eye as it has with numerous other developers. It's asynchronous programming model is very similar to the way we often program in embedded to produce scalable systems that react to events in the real world. While JavaScript is the cool thing in the web world these days, I have wondered whether we could provide similar APIs in a type-safe world, say using Java. People use Java on servers, no? And the convergence of server-side apps and mobile clients and embedded devices is a natural. It's the "Internet of Things".

So stay tuned for more over the upcoming days. As I mentioned, writing is good therapy, whether it be text in a blog or code in the exciting new world of mobile/web.

Monday, January 02, 2012

Happy New Year, Out with the Old One.

Surprise! I haven't blogged in a long time (except for the blurbs about the EclipseCon 2012 program, which has turned out great, BTW). There's probably a few good reasons why I haven't spent much time here. The main one, I guess, to quote poor Flyers goaltender Ilya Bryzgalov, I've been a bit "lost in the woods" myself. But like him, that's more a state of mind than fact. And for 2012, I see a few paths that will lead me out of this cloud (or into one which would be one of the paths :).

We lost a lot of great people last year. I'm not sure if it's just my perception because of what happened in my life, but it seems more than usual. For me, it was the loss of my Dad to cancer after a year long battle. He inspired me to live my life with honour and respect for everyone, something which I try to do a lot in my work as the CDT project lead. Communities built based on respect and openness to all comers is the key to success.

Of course, there was Steve Jobs. My wife got me his biography for Christmas and I finished it a couple of days ago. The parallels in his physical condition with my Dad's was amazing. While Steve waited too long to get treatment, my Dad waited too long to get diagnosed and both ended up with their cancer metastasized to their livers which brought about their end. Dad was pretty weak at the end, couldn't eat due to the morphine, but he made one last trip to my dear cousin's wedding where everyone got to see him one last time. Steve was the same and had his last trip to resign as Apple's CEO and had a nice chance to say goodbye. All in all, it's a lesson to take care of yourselves. Treatments are getting pretty good but you got to catch it and act early.

As for Jobs' life and times, I'll dedicate a whole blog article on that. Reading the book was pretty eye opening. I learned a lot about how he really operated and the true reason for his success. And I also got a look into the history and life in Silicon Valley which you don't learn much out here in the wilderness other than the occasional visit. One thing is for sure, I'm pretty sure that life has passed me by and I only regret it a little :).

There were other famous people that passed. Dennis Ritchie being the foremost for me. He doesn't get enough credit for the changes he brought to our industry. Yes, he invented C and helped create Unix, but more importantly, those technologies let average programmers in on the action. Unix machines have always been everywhere and accessible and with their built-in C compiler, you just needed an account to join in on the fun. It's where most of my generation started and why I'm so passionate about the CDT and enabling new generations to learn how to play with fire.

Well, let's stop there for now. I have a lot more to write about and have a new found energy to write about it. I'm hoping this year will be a much better year for me and a great year for you all. Expect to see more in this spot than you have in a long time.

:D