One of my co-workers recently asked, via a discussion list, how we thought "... the open source trends [are] playing out."
It is my opinion that the Open Source Software (OSS) movement represents what will become the dominant mechanism for producing software in the not so distant future. It is important to note that the term open source is not exclusive to software licensed under the GNU General Public License. To be considered "open source," software must conform to the principles outlined in the Open Source Definition (OSD):
- Free Redistribution
- Source Code
- Derived Works
- Integrity of the Author's Source Code
- No Discrimination Against Persons or Groups
- No Discrimination Against Fields of Endeavor
- Distribution of License
- License Must Not Be Specific to a Product
- Licenses Must Not Restrict Other Software
- Licenses Must Be Technology Neutral
Software in and of itself is a commodity. In my opinion, a proper use for software is one that supports or contributes to the successful execution of an organization's primary line of business. A company's products, processes, and business practices are the key success in the marketplace. Any successful commercial venture whose key market differentiator is the software they use will ultimately cease to be competitive. This will happen because success attracts competition and sooner or later one of those competitors will either obtain the same (or functionally similar) software thereby negating the previous market leader's competitive advantage.
Contrary to what many perceive, the very nature of open source software fosters innovation. In software engineering, as is the case with many other disciplines, there are often times where many paths lead to the same destination. Given the notion that brilliance in software engineering knows no political, cultural or geographic boundaries and the precept "that many hands make light work" (John Heywood), it is more probable than not that like-minded individuals who have the opportunity to view, change and redistribute an application's source code will be able to make and share improvements.
The dominance of open source software does not have to represent an end to one's ability to build a successful career writing software. What this does represent is a fundamental shift in the perceived value of software away from the end product (i.e., the code) and toward the individual's understanding of the code. I think this will elevate the whole of software engineering because it will require software engineers to stay competitive in the market by constantly refining their skills.
No longer will simply writing code be sufficient. One will have to understand what they are writing as well as how the code they are writing actually performs it's work. For example, Simply knowing that System.out.println("Hello world.") writes "Hello world." to the computer's console will not be sufficient. The software engineer of tomorrow will have to understand that this single instruction directs the Java Virtual Machine (JVM) to use an output stream to pass data to the console.
Ironically, it will be traditional economics that will bring about a fundamental shift in the role that commercial software plays in the market. There will come a time where OSS alternatives to most pure-play commercial software solutions exist and those alternatives will match and in many cases exceed the feature points offered by their commercial counterpart. It will not make fiscal sense to pay exorbitant license fee solely for the right to acquire commercial software.