Software, like any original creative work, can by copyrighted and sent out into the world with any number of limitations and restrictions attached.
For example, take the case of the Media Console 1.0 that this website uses on pages that deliver streaming audio or video. We license this program to other website, and the licenses come in six flavors, as indicated below. You can download any of the flavors below (except the first one, that's illegal!), but each flavor has a distinctly different set of rights and responsibilities attached, even though the source code is identical for each.
Media Console 1.0 is a .NET utility program that allows visitors to your website to choose which media player they would prefer to be embedded in the webpage they are viewing.
The program was created by using algorithms found in various .NET cookbooks, advice given to me on Usenet newsgroups, and sundry other sources. The interface was coded by a visual programming tool (Visual Studio 2003). However, for all that help, and for all of the unoriginality of the program, copyright law vests in me the right to dictate to the world how this program shall be sent into the world and under what conditions it may be used by whom.
Copyhoarding is accomplished when you create an original piece of software, copyright it, and refuse to distribute or otherwise let anyone else copy the program.
Most software is distributed through licenses. In a license, the software producer basically allows the purchaser to use the software under certain specified conditions. The license also stipulates what the purchaser may or may not do with the software. Have you ever read a Microsoft Software License? If you have, then you know that you are only renting the software from Microsoft for specific purposes, and you will be in big trouble if you don't abide by their terms.
This version of Media Console 1.0 comes with a Microsoft style license. For an exhorbitant amount, say one million dollars ($1,000,000.00), you may download this program for your exclusive use only. You may only use this program on one machine, even if you use several machines in the course of the day. You may not make any copies of this program, with the exception of one archive copy. You may not reverse engineer the code object code (so don't download the source code!), or otherwise attempt to disassemble the object code (even in the privacy of your bedroom). Don't even think about exporting this program out of the country.
The Shareware model is a "try before you buy on the honor system" scheme in which copyrighted software is released with the proviso that if the recipient find the software of use, then the recipient will pay the producer of the software a license fee. The "Wolfenstein 3D" and "Doom" games were released as shareware and became very successful.
Copylefting is an ingenious scheme promulgated by the GNU Project under the aegis of the Free Software Foundation which uses the Copyright law to ensure that copylefted code remains freely available. The concept seeks to utilize the licensing mechanism to ensure that all subsequent users of a copylefted program will have access to the source code of the software, and that any improvements or modifications that they may make to the software will likewise be made available to all subsequent users.
Freeware is like shareware, except the software producer does not charge any license fees. With freeware, the software producer still retains copyright, and it generally comes with many of the restrictions found in shareware or fee licensed software about disassembly and reverse engineering of code.
All creative works end up in the public domain eventually. In the case of expired copyright, this can take quite some time. However, the software producer is free to forego his copyrights and grant the software to the Public Domain. In this case, anyone is free to use, copy, fold, spindle or mutilate the software. But as pointed out in the context of Copylefting, this is not always the best way to bequeath your software to the world since others are free to make modifications to the software, thus creating derivative works which can be protected as proprietary software by the modifier.