Show me your underpants code
I’ve briefly mentioned my Coordinate Exchange application before. This application started as a simple plug-in for MS MapPoint to enter and extract pushpin data (latitude and longitude data) but quickly grew into something more. While still restricted to working within MapPoint it has many features hat work independently of MapPoint. This application can read and write GPS data to and from several different file formats and communicate directly with some GPS units. While writing it I attempted to make it easy to add new file formats and GPS units as time goes on. Matter of fact every once in a while I receive an e-mail asking if I can support a new file format and it generally takes me less then a hour to add it (as long as it is text based). At the core of CoordEx is a simple macro language that translate the data at ease. It is easy for me to read data in one format and out put in another and even scale the value along the way in case of a needed unit conversion (i.e. meters to feet). This macro language is something that nobody has ever seen. It is embedded inside my code and not available to the users but every time I need to add something to CoordEx I appreciate the work I did early on to make this system flexible.
Well, now to the point of my post. I was recently approached by a small GPS unit manufacture (I wont mention the name as I don’t have their permission). I was asked if I’d be interested in contributing to an application they were developing that can read data form their GPS unit and output several different file formats for use in other mapping applications. At first I was very interested in this. I spent several days discussing the list of required features and how deliverables will be made and so on. As time when on I began to think more about this. What they wanted was that because my CoordEx application was already constructed it would be quick and simple to reuse some of my code for their applications.
Well, as I thought about it more I realized that that portion of my code needed to make their application work was the core of CoordEx and includes the macro-language that I’ve come to love an appreciate so much over the years. How much was that worth to me. Sure there was no requirement that I stop development on CoordEx and the time it would have taken me to embed the CoordEx core inside there application would be minimal but is it worth it? I’d earn a few hundred dollars easily and they would sell there applications and make some more for themselves. They are not going to get rich off my code and it is easily re-creatable. It is not like I’m sitting on the foundations of MS-DOS (QDOS) and they are going to go off and make millions. No, they will probably hire a few freelance programmers to knock out a simple application that fits their needs and someone will make several hundred.
But I guess it is not the money. It is the felling that by handing over the core of this application that I’ve spent so long developing I’m losing something of much more sentimental value then what it is worth in real value. Sure, for a large sum or some type of royalty rights I could be convinced to hand over a copy and reveal my
underpants code but I don’t think anyone is willing to pay for the sentimental value of code.
On a side note; now that I have figured out the debugging issue in VS 2003 I’ve been working (although rather slowly) on converting CoordEx to .NET. After the conversion CoordEx will run independently of MapPoint and will be a convenient GPS data conversion tool for a much wide audience.