Blockchain Byte - Week 16 : Open Source Software

Blockchain Byte - Week 16 : Open Source Software
Photo by James Harrison / Unsplash

Table of Contents

  1. Recap
  2. Open Source
  3. Computer Software
  4. Source Code

Recap

In Week 15, we delved into incentives in terms of how a system or code can incentivize actors in an ecosystem based on certain parameters or conditions being satisfied. Incentives in a Blockchain can be earned through

  1. Mining or
  2. Transaction fees

Mining is the process of appending new blocks to the Blockchain data structure. To be eligible for mining incentives, a transaction has to be recorded & added to the Blockchain.

If the output value of a transaction is less than its input value, the difference is a transaction fee.

This week we will diverge from Blockchain and talk about another topic which existed much before blockchain was even a word. It is called open source. What is open source and why are we talking about it in the context of Blockchain?

It is more to understand the open source based development model in Blockchains (more applicable to Public Blockchains than private ones) & to understand the concept of forking.

Open Source

As per wikipedia,

a. Open source is source code that is made freely available for possible modification and redistribution. The open source model is a decentralized software development model that encourages open collaboration.

b. Open source refers to a computer program in which the source code is available to the general public for use or modification from its original design. Code is released under the terms of a software license. Depending on the license terms, others may then download, modify and publish their version (called a FORK) back to the community.

Let us elaborate on

a. What is source code?

b. What is a computer software?

Dive in....

Computer Software

Before we understand open source software, let us start with software that we use at work or home on a daily basis e.g., for preparing documents, we use word processing software like Microsoft word, Apple pages, spreadsheets like Microsoft Excel or Google sheets for financial analysis or simple calculations & so on.

ed-hardie-xG02JzIBf7o-unsplash.jpg

Photo by Ed Hardie on Unsplash

Software released by companies like Microsoft or Apple and similar ones were developed by these companies to earn revenue on the sales or license fees that they collect from the users. The business model of these products require users to pay for using these software packages on sale and on periodical basis (monthly, yearly, quarterly etc) for ongoing use. Also, the packages will be updated only on payment of subscription fees. You would have noticed that when we first download and start using these applications, we are shown some terms & conditions which most of us don't bother to read and click "I agree". Why does Microsoft or Apple want us to agree on these terms and conditions?

Source Code

A software or computer program is written using "code" (using a programming language like C, Python etc). This code then "instructs" the computer to do certain actions based on user interaction with the software. For example, if we click on "save", the code instructs the computer to "save" the file by writing the data to persistent storage. So, a code is like a blueprint for a computer software. A good example of a blueprint is the recipe for coca cola. It is a well kept secret and Coca Cola earns its revenue from sales of the beverage.

coca cola bottle on white table
Photo by Hamed Mohtashami pouya / Unsplash

Similarly, software companies do not give third party access to their software source code since it drives their revenue. Now, let us imagine a scenario where these companies start sharing their source code. What will happen in such a scenario?

  1. The source code of these products will be public. That means everyone can see the source code that makes the software work.
  2. Some of them will download this code and make improvements or enhancements which will be incorporated back into the product thus improving it's performance.
  3. Any vulnerabilities in the source code can be rectified by a programmer who can modify the code to mitigate the risk thus hardening the software against hacks.

Thus, the maintenance & upkeep of the software shifts from the company to a community oriented co-operation model .

This model where the development of software is "open sourced" meaning anyone can access the code and contribute to its improvement is called open source.

So open source software & source code is defined as below : (Source : here)

Open source Software is software with source code that anyone can inspect, modify & enhance.

"Source code" is the code computer programmers can manipulate to change how a piece of software - a "program" or "application

Programmers who have access to a computer program's source code can improve that program by adding features to it or fixing parts that don't always work correctly.

Open source software is collaborative & rely on community production and peer review to modify, use and share source code with each other.

Software like Microsoft office suite, apple keynotes etc are called "Proprietary" or "closed source" software meaning only the organization has exclusive access to the source code to modify it. The software is encrypted so only the staff of the organization which created the software can legally copy, modify & update the source code.

To use proprietary software, users must agree that they will not use the software other than for what it is permitted. This is what we as users "agree" to when using a proprietary software for the first time.

There is a license for open source software too but the terms are radically different where the users get permission to use the software more freely compared to proprietary software.

Now, just because open source software is free to use doesn't mean that it is free of charge. In other words, just because open source software is freely available does not mean it cannot generate revenue.

More on open source examples, forking etc next week!!