In the beginning software was developed by scientists and engineers and shared freely to improve the new, raising, Computer Science.
Shortly after, computers became an attractive commercial solution and customers would build their own software or contract it to outside companies (often the hardware vendor provider itself) or get it bundled with the computer. In all cases, software would be provided both in machine- and human-readable format so that users would be able to study, analyze, maintain and fix it themselves, if needed. Many of these pioneering systems are still available today in either electronic or hard-copy form and constitute the basis for most of modern software development techniques.
As software became more complex and popular, the ability of customers to modify or maintain it, reduced. This was soon exploited by software companies to make it closed, gaining a stron grip on its development, distribution and use, and limiting the ability of others -most specially competitors- to further extend and develop existing or new tools.
Many developers, mainly in the academic and amateur world, strived to maintain and share their knowledge helping each other to further development of computer science technologies. This crystallized during the 1980’s in what is now known as FLOSS (Free and Libre Open Source Software).