There are two main design philosophies behind software development, closed-source, and open-source. These terms refer to the source code of the software and the restrictions placed upon it, or lack thereof.
Tip: Source code is the code that the program is written in. Typically, software is compiled into more efficient machine code before being distributed making it hard to get back to the original source code. With the source code, however, you can see everything that the software is designed to do, how it does it, and replicate it perfectly.
What is closed-source?
In closed-source software the source code of the software proprietary and private. While it may be free or paid, you can only get a licence to use the software. This licence will include restrictions on things such as editing the software.
In comparison, open-source software freely publishes its source code and generally encourages people to contribute to it in order to add features or fix bugs. Open-source software is generally but not always free.
Advantages of closed-source software
The main advantage of closed-source software is the ease with which the developer can enforce their licencing policy and copyright. If the source code is closed, no-one else can use it to easily copy your software. By maintaining direct control over the project, it is easier to have a single coordinated vision for future development than it is in an open-source environment.
Being the only developer with the software means you can charge more money for it as there is less competition. This extra money can feedback into both the development of the software and support for the users that have purchased it.
Advantages of open-source software
With open-source software anyone can contribute their time and effort to the project if they want to. This can result in a much larger development community than a similar closed-source project, which means more eyes to discover security issues.
Tip: Just because there are more people that could be looking for security vulnerabilities, doesn’t mean that they are. There are plenty of instances of decades-old bugs being found in open software, that no-one had noticed before.
Open-source projects are often maintained by enthusiasts who are more likely to attempt to include new standards etc as quickly as possible.
Even if open-source software is released for free, it is possible to offer a paid support service or have other methods of providing a funding source.
Neither open- nor closed-source is necessarily a better design philosophy than the other. They both have advantages and disadvantages and are useful as competition between each other.