Tuesday, December 29, 2009

Thoughts About the Open Source Movement...

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):
  1. Free Redistribution
  2. Source Code
  3. Derived Works
  4. Integrity of the Author's Source Code
  5. No Discrimination Against Persons or Groups
  6. No Discrimination Against Fields of Endeavor
  7. Distribution of License
  8. License Must Not Be Specific to a Product
  9. Licenses Must Not Restrict Other Software
  10. Licenses Must Be Technology Neutral
At the time this article was written, the Open Source Initiative has a list of sixty-five approved open source licenses of which versions of the GPL/LGPL constitute four.

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.

Thursday, September 4, 2008

Genesis of a Technologist

I vividly recall my love of technology and software development starting as a nine year old in a fourth grade Enrichment class in Fayetteville, Georgia. On a table against the outer wall of the classroom sat a black and gray Radio Shack computer.

Everyone in the class was afforded some time on the computer to complete educational assignments. I believe, for the most part, our computer work consisted largely of mathematics exercises and quizzes. There were a few spelling and vocabulary activities as well. When we completed our work, or as a reward for particularly good behavior, we were given the opportunity to play some games. The one I remember playing the most was a turn-based game where I drove a dog sled while exploring the frozen arctic. The goal was to reach to the North Pole while traveling to specific destinations along the way. How much could you explore?

On every "turn", I had to determine the direction in which I wanted to travel and how far I wanted to go. When my dogs were hungry, I had to feed them. When they were tired, I had to let them rest. If a dog became sick or wounded, I had to decide how to care for it. The game would be over if I ran out of "turns" before arriving at the assigned destination. I could bring about the end of the game if the decisions I made caused me to get sick or mortally wounded. Alternately, if I did not take proper care of my dogs and lost too many of them, then I would be lost in the arctic forever.

There were no graphics. Players were forced to use their imagination to picture the sled racing across the snow. At each "turn" the game presented a brief summary of your current state and the environmental conditions. Decisions were made and actions taken by navigating through various menus with a myriad of keystrokes. One could inquire as to the health and condition of the pack, take inventory on current supplies, or determine the current location. The most fascinating aspect of the game was that no two sessions were the same.

I remember being in awe at the amount of control I had over the outcome of the game. All the decisions I had to make in order to ensure that my dogs and I safely arrived at our destination. I wondered how the computer made it all work? How did it keep track of everything? How did it determine which of the many hardships I would have to overcome as my team and I trudged through the snow? How was it possible that no two games I played were the same?

I was smitten. From that moment on, I knew what I wanted to do as a career.