Just a quick post on the different ways that I’ve seen software companies delivering their software to the client.
In an ideal world, there are two main ways to do this. Quite often, a company might choose to sell the software that they produce for a client, delivering a (hopefully!) working application and the source code. Typically in this scenario, there is no major reason for the company to retain any rights to the code they wrote for the client, because the software has been customised to such an extent that it is only useful for one client.
In some other situations, though, companies might choose to license the software to the client. The company retains all ownership of the software, and they might provide regular bug updates and patches in exchange for a licence fee.
The third example, which I have unfortunately seen in a number of places over the years, sort of merges these two models together. The client pays for the source code, receives a “working” application and the code, but it is written in such a poor manner that if anyone other than the original developer worked on it, they would rapidly go insane!
Sadly, I’ve seen that third model occur more often than I would like to!