Just Work, Baby
I use Microsoft Windows on my laptop. I used to use Linux. In fact, I used to work really hard to make Linux work on my laptop, compiling kernels, fixing driver issues, downloading patches, and so forth. I was determined. Then, a couple of laptops ago, I had this fateful moment where I unpacked my new laptop, booted it into Windows, shut it down, got out the Linux installation DVD, and then thought -- "Wait, why do I need to do this? Windows just works."
I didn't develop some sudden love of Microsoft, or some sudden dislike of Linux; I just didn't feel like it was worth the trouble. I wanted to get to work, and work meant reading email and browsing the web and that all worked fine in the operating system that had been pre-installed. If Linux had been pre-installed, I would have used that happily. Anyhow, this post isn't intended to contribute to the perennial Windows vs. Linux debate. This is a post about things that just work. Or don't.
Today, there I was using Windows. More specifically, I was reading email in Thunderbird. I saved a Word document (let's call it "foo.doc") that was attached to an email. When I saved the file, it somehow ended up without an extension. I have no idea if this was a Thunderbird oddity, or something I did when saving the document, but there it was, on my desktop with no extension. I could double-click on it all I wanted, but Windows had no idea it was a Word document, and wasn't about to open it for me.
So, I renamed it to have a .docx extension. Instantly, the icon changed to the Word icon, and I merrily double-clicked. Only to find out that Word popped up an error message because apparently it wasn't a document in the new Office 2007 format. It was actually an old-school .doc file, not a new-fangled .docx file. So, I renamed the file again to have the .doc extension. But, Windows didn't believe me; so convinced was it that this was a .docx file that it named it foo.doc.docx! I had to use Google to find some setting in the Control Panel that allowed me to actually rename the extension so that I could eventually open the file.
What went wrong here?
- Thunderbird didn't warn me I was saving the file in a way that would make it impossible to open it.
- Windows didn't auto-detect what kind of file it was.
- Word didn't auto-convert it when I gave it the wrong extension.
- Windows wouldn't let me change the extension without jumping through hoops.
Now, I'm not picking on the folks who build Thunderbird or Windows. I use both products every day, and happily so.
CodeSourcery's products have the same kind of problems that I described above.
And that is what this post is really about.
Software development is hard. CodeSourcery's tools are not going to make it easy. To be a good software engineer you need deep insight into your target domain, solid knowledge of computer science, and the soul of an artist. Nothing we can do can give you those things.
But, we should be able to deal with some of the annoying problems that get in your way. We should be able to set things up so that when you connect your target board to your JTAG device and plug that into the USB port on your computer, we figure out what JTAG device you're using, what board you're using, and then show you an example program for that board. We should be able to connect to a Linux target, detect that its Linux kernel is too old to support the debug facilities GDB needs, and tell you that. And perhaps tell you how to get a newer kernel.
I've asked our product development team to focus on this core idea: tools that Just Work. Our product managers and I read every support request that CodeSourcery receives. We're paying attention to the things that people tell us don't Just Work, and we're going to fix them. That's not to say that we're not going to add new features. But, we're going to go for depth, not for breadth; it's far better that we have fewer features that Just Work than more features that don't.
Marketing may not be happy that I'm admitting our products aren't perfect. Of course, there are lots of things in our products that already Just Work! That's why people buy them. But, they can be much, much more powerful and much, much more simpler. That's where we're going.
