Most modern large scale commericial applications have what's called an API (Application Programmers Interface). Basically, the API tells you how to write code that will "talk to" the company's software. This is almost mandatory for modern large scale apps, unless the company is super paranoid and/or does not want anybody developing add-ons.
When you download an API, you generally have to agree to some common sense terms (confidentiality, no compete, no disparaging remarks, etc) but the API's themselves are usually free. This is because the company benefits from the free marketing and increased functionality you will provide.
The API will effectively determine some of your add-in features: For example, will your add-in become a "menu item" in the actual program, or will it run as a separate app that communicates with the running program, or will it run as a separate program that accesses the company's data on it's own? The API determines which possibilities are available.
Finally, if there is no API, or you want independence (i.e. you don't like or agree with the licensing terms), you must "hack" to read the program data from disk yourself - which means you have to decipher it. - Hopefully, in this scenario, someone else has already done this and published their findings on the Net (hackers just love to brag).
So, writing an add-on to a commercial application boils down to these steps:
- Research the availablity of an API (which is sometimes called an SDK: Software Developer's Kit) for the application. Look at the company's web site or customer service department, as well as the search engines.
- See what the API offers and use this to define your add-on's functionality and user interface (technically called the functional and design specifications): What does the add-on do? What are the inputs and outputs? How can it be configured? Will there be a licence (blow up date), subscription, etc? Also, what platforms are you targeting (Windows, Mac, Linux)
- Write and test the code: This is the easiest step!
- Create help/documentation: If you did a good job on the functional and design specs, this should be easy; a lot of cutting and pasting combined with screen shots. If not, well...
- Deployment - This is not to be underestimated - Do you write a full scale installion program, or do you offer a download with some instuctions (copy to this folder, go to preferences,...) For a simple add-on, this can be the most difficult step. Also, if licensing and copy protection are involved this needs to be incorporated. Also, how will you handle customer support?
How Long Will It Take?
The above assumes you want a commercially viable app. It's considerably simpler to just "throw together" a custom tool for your own use! From my own experience, the following projects are illustrative:
- An elaborate suite of add-ons to automatically monitor and trade the financial markets via an API to a stock brokers realtime market data feed, required about three years to complete. This suite is repleate with reporting, backtesting, and itself offers an API for custom add-ons!
- On the other hand it only took a couple of days to write a simple add-on for Word that allows one to easily switch easily between Thai to English (to avoid having to toggle the Windows language setting every time).
These projects show what you can expect from a lone-wolf programmer who knows what he is doing. Note, that it has been my experience that teams of programmers usually don't help, until you get to the ongoing maintenence and upgrade phases of the products life cycle. But that's another issue.
Hope this helps, and obviously I'm very interested in "partnering up" with anyone who has a great development idea! I have tons of code and experience to leverage. Please contact me with ideas or proposals.