Friday, January 06, 2006

Not Invented Here Syndrome

In my previous post, I mentioned that Moyo Go uses lots of third party components (Moyo Go's sources are almost one million lines of code, less than a tenth written by me).

The advantage is the ability to develop tremendously powerful applications in a hundreth of the time that would be required if I had to develop all those components from scratch - the disadvantage being the infamous "Not Invented Here Syndrome". This well-known syndrome - bugs in Other People's Code - can be ameliorated by Having The Source, which I always do. For those who are interested, I have source licences for:

- The toolbar
- The database system
- The docking system
- The Rich Text editor
- The memory manager
- The splitter used to show/hide the clock
- The HTML renderer
- The Exception tracking/emailing module
- The superfast graphics ibrary

Some of these licences are in the hundreds of USD, some cost peanuts.

In addition to non-freeware libraries, I use drop-in replacement libraries that speed up certain functions, Unicode libraries, a Base64 library, Communication protocol libs, visual component libs, a theming lib, a DirectX lib, a treeview lib, an XML lib and much, much more.

On top of those 3rd-party sources come lots of (mostly paid for) applications like an EXE compressor, an installer, an ISO creator, a memory leak checker and a profiler. Those applications speed up development/deployment. Not to forget Delphi itself. Again, some of these applications are free or cost peanuts, some are many hundreds, or even a few thousand USD (Delphi Enterprise).

Whatever you do when you develop software, ALWAYS make sure you have the sources for EVERYTHING, to be well-armed against Not Invented Here syndrome.

I will switch to an installer to which I will have the source as well, because basically nothing Just Works™, including my 600 USD installer, Ghost Install. I have NEVER seen an installer that Just Works™. This includes Wise and InstallShield. They occasionally REFUSE to create a Setup EXE, or they do, but that EXE does not install a working program (Moyo Go installs around seventyfive thousand files filled with semi-random data, and that excludes the four hundred thousand SGF files included with the product, as they are zipped up in a flat-file SQL databases).

Their tech guys said that it's very possible that their compressor crashes. "Try a lesser compression level", they said. Indeed, that worked. Until it didn't. Reverting to the best compression fixed it again, until I changed a file in the setup, and then it didn't any more, etc.

Developing software is a constant struggle against one's own and other people's bugs, and whatever you do, don't become a victim of Not Invented Here Syndrome..