I recently received an email from a BMW enthusiast asking about my experience in the open source tuning community. The guy wanted to hear some of the lessons I learned and pitfalls he should be aware of as he and a few others begin to release their own work. Thinking about how to respond has me reminiscing about a part of my life I haven't given much thought over the last few years and wanting to talk about it. There are a number of different angles, but I think the best bet is to just tell my story. I'm the original author of RomRaider/Enginuity, an open source tuning suite for Subarus. My experience was equally rewarding and disappointing, grand and frustrating, technical and political.
I was always interested in cars, but 10 years ago I bought my 2004 WRX and really became engrossed. I met other car guys, started autoxing and, as is my nature, wanted to know as much as possible. I started upgrading the WRX, often later deciding that whatever parts I had bought weren't the right ones and replacing them. With a limited budget, I always had a list of parts I wanted to upgrade, browsing ebay, online stores and the classified forums and buying whatever I deemed a good deal. I joined a car club, me a lot of great people and spent more evenings working on cars than not. I did all of the work myself, because for whatever reason I can't bring myself to pay for anything I know I'm capable of doing myself and I am bitterly opposed to buying anything I think is overpriced. The impact of this was twofold. First, up to this point, I hadn't tuned the ECU because the options were so expensive and not a good "bang for the buck." Then, by the time the WRX got to the point that it really needed tuning in mid-2005, EcuFlash gave me the wild idea that all I needed was a $70 cable and I could handle the rest.
In those early days, flashing a ROM and bare bones datalogging were as far as the community had gotten. There were forum posts listing the locations of different bits of data in the ROM for a scarce few different ECU revisions. One helpful person made a few modifications to my own ROM to reduce the delay between closed and open loop fueling, which had been a thorn in the side of WRX owners since they were brought here from Japan. The catch was that my car became a test bed. After I flashed the new ROM to my car, logged a few runs and saw a marked improvement in the fuel mode changeover, I wanted to know how he did it, and the answer never ceases to amaze me.
He made the changes with a hex editor.
I'm a computer nerd and, at that time, had about 5 years of programming experience. I understand that, behind the scenes, every piece of tuning software is just manipulating binary data. But they make it readable! This guy had opened a big binary file, scrolled through 192kb of nonsense, changed a few bytes and made my car run better than it did from the factory. The disassembly and reverse engineering that made this (and eventually much more) possible is an art I've never picked up. But, even for someone capable, tuning fuel and timing that way would have been impossible. With that legwork out of the way, I could handle writing a tool to modify a ROM.
With a handful of data identified in a few different ROMs and limited programming experience on a single database project, I started writing Enginuity. It simply parsed a binary file, pulled out the data a tuner needs, put it in tables that a person could actually make sense of, then let them modify and save that data. It was this humble "black magic" that would later cause the much of my heartache.
Writing Enginuity was an iterative learning experience. I didn't know what I didn't know, and that lack of foresight stalled my work multiple times in the first few months, throwing out code and starting over. Early on I realized, to a limited extent, what an overwhelming number of different ROM revisions existed, and that defining them would require an external mechanism. I created a rudimentary XML spec, weak both because I didn't have a good understanding of everything it would need to define and because I wasn't well versed in XML best practices. It was around this time that I decided that, since I wasn't going to be capable of writing these definitions myself, it would be best to release Enginuity as open source so others could contribute. I wasn't an open source zealot, but it made sense, and was probably one of the few good decisions I made with the project. The extensibility gave me wild ideas of a tuning suite not just specific to Subaru, but all manufacturers.
All of this happened in the first few months. In January of 2006 I registered a domain and set up a forum at enginuity.org. Within a few months the project had its second major contributor, building definitions for more ROMs than I ever would have imagined. Later that year a user had started building basemaps, "Stage 1 2004 USDM WRX," "Stage 4 2003 WRX," that users could use as a starting point for their tuning. In retrospect, the growth in number of users flashing their cars with EcuFlash and tuning with Enginuity was amazing yet somehow it wasn't changing the world like I envisioned. Some people were as excited as I was, some were skeptical, some were outright opposed, but most remained unaware or just ignored open source tuning. It blew my mind when a friend bought a commercial product for $700. I suppose growth can only happen at a certain rate, but I was young and naive, and I expected a free tuning solution to set the world on fire. In reality Enginuity did grow. More and more people (though still not what I anticipated) contributed to the project. People were tuning their own cars, flashing basemaps, or having friends tune their cars. As their potential customers started using free alternatives, the commercial entities began to take notice.
Around the fall of 2006, these companies began mentioning open source tools in passing and behind closed doors with their "authorized tuners." The first time I spoke with the owner of one company, he clearly didn't see them as a threat to his business, but was doing his due diligence to investigate. Later he interviewed me for a job, a better offer for which might have saved his company a lot of money over the long term. By the end of the year, these companies had launched campaign of propaganda, defaming open source tools with rumors, conveniently omitted information, conjecture and outright lies. Their authorized tuners were part of the machine, convinced that free tools would somehow make their services obsolete. One well renowned tuner in particular called me multiple times under the guise of interest in my work. It was obvious he was looking for dirt, hoping I'd slip up and misstate something he could use against open source tuning.
In October of 2007 I separated from the Air Force and moved home to Iowa from Alabama and ultimately moved away from Enginuity. Shortly before the move, I received a letter from an attorney representing a company called AutoEnginuity, a manufacturer of scan tools. In my typical fashion, after a little research I ignored it. A month later, I had started my new job and was living in Iowa with my (now ex-) wife while we shopped for a house. One Friday night we went out, saw a crappy cover band and drank a lot of beer. When I got home I had an email stating my web host had dropped enginuity.org's service in response to a complaint.
It was sort of a perfect storm. I had left all of my car friends behind, I was busy shopping for a house (and later spent the entire summer renovating the new house after the flood in 2008), and now a trademark the dispute. With little interest in a fight and no budget for representation, I settled on renaming the project to RomRaider. The extent of my involvement over the next few years was securing hosting and migrating and rebranding the website. I traded my car buddies for a new set of friends, working on cars for home renovations. I had a new life and RomRaider didn't fit. I've made a couple attempts to get back in to the project since. Part of me accepts that I'm just not that guy anymore, and part of me blames my previous failings and the corporate greed of companies that decided to position themselves as competitors.
Somehow, I could never get past the people who weren't using RomRaider. I feel like I was part of something huge, but it never became what I thought it would. It surprises me, even after a 5 year absence, that no one knows who I am. Working on RomRaider was an incredible experience and a source of great pride, yet somehow the negatives have left me bitter and thinking maybe I would have been better off just getting a side job and buying the commercial software.
These days, I work for a small communications company, work on projects around the house and mostly keep to myself. The RomRaider forum has about 10,000 registered users and I would guess at least as many cars tuned. My quick market analysis says that's about $7,000,000 in lost revenue for you-know-who. I have a huge stack of vinyl enginuity.org stickers, a pair of RomRaider coasters and a half-tuned WRX that I just don't have the motivation to finish.