How Expensive Is Free?
Isaac Newton wrote, "If I have seen further it is by standing on the shoulders of giants." This was actually a paraphrase of something Bernard of Chartres said in the twelfth century, but since most people have no idea who he was, we usually attribute the saying to Newton.
- Five New Laws of Anti-malware Protection: Keep Up with Evolving Threats
- Using Anomalies in Crash Reports to Detect Unknown Threats
- How to Mitigate Fraud & Cyber Threats with Big Data and Analytics
- IT and LOB Win When Your Business Adopts Flexible Social Cloud Collaboration Tools
With modern technology, we all stand on someone's shoulders — and often many sets of shoulders. I've brought several CPUs up "from scratch" and then built language and operating system support for them. It isn't easy. Even then, do I have the mechanical skills to have built those CPUs without an FPGA? Or the knowledge to fabricate the components from raw materials? On the other end of the spectrum, the software I built for that CPU relied on cross tools running somewhere else. If I had to start with absolutely nothing, how far could I get? Even if I had the knowledge, the time investment would be staggering.
So we need tools. We need lots of them.
I've mentioned before that I am not a big fan of IDEs, even though I use one from time to time. I mostly sit with a shell prompt and emacs (yes, I know vi; no, I don't care for it; yes, I hear vim is much better). When I debug though, I do like to have some sort of graphical interface. I appreciate a nice runtime library (one of the reasons I enjoy the Atmel AVR is the availability of Pascal Stang's AVRlib. For a lot of the smaller things I write, I don't always need an OS (or I use a very simple one of my own), but I have ported FreeRTOS to the LPC2119 and, as evidenced by my recent blogs, I enjoy using Linux for bigger projects.
The Internet has been a mixed blessing for tools. Sure, the Internet isn't the only way software has been passed around over the years. I remember years ago being on a circle list for a tape. A far away colleague would ship you a 9 track tape. You'd get things from it, add things you had to it, and then send it to the next person in the circle. But the Internet is much larger and way faster than that!
If I want to, say, start doing ARM development, I can go download pretty much everything I need. There are even some open source toolchains that try to gather everything I need into one place (e.g., the official GCC ARM Embedded in Launchpad or for Atmel, WinAVR ARM gcc port).
The situation is a little like Linux. It is entirely possible to go assemble your own Linux OS from all the free parts. But how many of us do that? Generally, I want to spend my time using Linux not building it.
Red Hat and Canonical have business models where they add value to Linux by aggregating and integrating the pieces into a cohesive whole. They also support the product so if something goes wrong, you expect them to help fix it in some way. There are a variety of companies that offer the same type of consolidation for embedded tools. Some of them target the vendor (when you use a TI chip, for example, you usually get some form of Code Composer Studio and tools for that chip from TI). Others attempt to woo end users with offerings either better than the free versions or vendor-supplied versions.
For ARM development, the CodeSourcery suite was perhaps the best-known of these. They were purchased by Mentor Graphics, although their offering seems to be largely the same. The product has several "editions" — a light edition is essentially just the command-line tools and is freely downloadable. The personal edition has an Eclipse-based IDE and tools but limited access to support. The standard edition adds better libraries and the ability to debug the libraries, updates, and better access to support. Then the professional edition includes things like simulation and priority support.
As you might expect, each level goes up in price. Although the Mentor website says that the personal edition "starts at" $99, realistically the price for anything you will want is at least $399 (although you can usually find a coupon to bring the price to $99). Typical prices for standard and pro versions are $1,600 and $2,800 per user. That's a pretty hefty price tag, especially per user. The premise, of course, is that you will save more money using the extra tools and support than you will spend on the increased cost of a license.
There's not one answer, of course. I've worked on projects where $2,800 is a drop in the bucket. Then again, those projects would probably need to negotiate a floating license anyway because of the number of developers on them. For a team of ten or less, though, that's a lot of cost when you can get something usable "for free."
Heinlein popularized the phrase "There ain't no such thing as a free lunch" and that's certainly true. The free tools take a little time to stand up and — presumably — the paid tools will reduce roadblocks. I do think the vendors overall need to do a better job of explaining just how the tools and support will really save me thousands of dollars on a typical project.
What's your take? Do you use free tools? What's the hidden cost of them? Have you paid for a premium set of tools? Are you satisfied with it or do you have buyer's remorse? Leave a comment and share what you've found.