Software Distribution

So you've written a clever program. How do you let others use it? The answer to this simple question has changed several times over the years. In the early days (1950s-1960s) computers were rare so they brought their data to you and you ran your program using their data on your computer and then gave them the (fanfold lineprinter) output. This was inconvenient for you, but it was so cool to be a computer person you put up with it.

Later (1970s) more people began to have their own computers, and you would send them the program for them to run on their computer which took less of your time. Depending on their system you might send them a card deck, a magnetic tape, or even a paper tape, a bit later a floppy disk, but sometimes just a printout and they would type the program into their computer themselves. Originally it was mainly scientists doing this so you sent them the source code for the progam which they entered or loaded, compiled and then ran (because everyone who was a computer user had a compiler and knew how to use it).

Still later though (1980s!) business people began to develop software which they felt had value so they did not want to share it, and while many people had computers few of them had the knowledge to compile a program, so shrink-wrapped software was developed. This was a stand-alone precompiled program. The benefit for the user was that they just had to load it on their computer and run it. The drawback was that they could not modify it to correct or improve it. Also a different shrink-wrapped version was required for every operating system (sometimes one for each of several versions of each operating system).

With the advent of the web (1995+) there was a shift back to the old ways. People again use your software on your computer using their data, but they input the data themselves. This is what happens whenever you use software over the web: you are executing programs on a server somewhere else feeding it data through your system.

There are numerous advantages in web computing for both parties. For the provider there is only one installation to monitor (instead of dealing with the problems that can arise as users try to install software on numerous different platforms and potential conflicts from other pieces of software), and for the business-people they still control (and thus can charge for) access to the source code. For the user they don't have to worry about an installation step. For both, updates and upgrades are easy and immediate. As soon as an update is made to the server all the users benefit from it. There are of course also drawbacks, mainly for the user. Still no access to source code. Often a limited ability to back up their data since it lives on someone else's server. For the provider, the main problem is that they must also become system administrators and when a machine fails it's their problem 24x7.