When people create software, they have a choice. They can, if they wish, keep the method of how the program works a trade secret. Providing users with a compiled executable file version of the source code allows them to run the program but obscures the original code, making it difficult to modify. Trying to reverse engineer the software back to its source code is also an infringment of copyright law.
Alternatively, developers can provide the source code in its raw form, letting everyone know exactly how the program works.
There are benefits and drawbacks to both approaches, which we will discuss on the next few pages.