Open Source is software that makes the underlying source code of an application available to the public. Commercial or proprietary software applications usually keep the source code securely locked away, to protect their financial interests. Open source software takes a completely different ideological stance, allowing users to freely examine and modify the source code to suit their needs, fix bugs, or to make enhancements to be distributed to others.
Open source software that becomes very popular begins to benefit from having a large population of programmers examining and improving the code, as opposed to a commercial application's typically smaller, funded staff. This can result in a much more resilient and robust software product. Open source software users need to make sure that they can get, or hire, the necessary technical support to maintain the application before they become dependent on it. If it is a widely used open source application there will be a large user community able to offer support in the form of message boards and support web sites. The truly ubiquitous open source applications like MySQL or Linux, even have organizations that make their revenue from offering paid support options, equal to that available on expensive commercial applications.
Some open source licenses allow companies to distribute customized or modified versions of the application and charge for it. However not all licenses permit this and even the ones that do sometimes carry legal provisions that require special attention by the redistributor, to insure compliance. It is very important for a potential commercial vendor of open source applications, to carefully examine the license provisions put forth by the application to be redistributed.
Why do developers contribute to open source projects?
Open source has played an important role in the development of the Internet by providing various software as: TCP/IP, BIND, Sendmail, Linux, Apache HTTPd, WU-FTPD, X Windows etc.