Start the slideshow

Why Free and Open Source Software ?

One of the aims of the CCC program is to provide you with the tools and understanding to help you to be self-sufficient with your computer.

We hope to provide you with the ability to help others in your community, today, tomorrow and for the future.

This means that we have to choose an OS and software that is

  • Free to start with
  • Will remain free

Which means that for you the software will be

  • Free to change and
  • Free to share

This obviously rules out software we have to pay for. But what about free software?

In this section we talk about what 'free' means when we talk about software… the difference between 'Free as in beer' and 'Free as in speech'.

Some companies give you software for free. If you own an Apple computer, Apple will give you a new version of OSX. Adobe lets you download Adobe Flash player.

This is given as a gift, like a free beer, no need to pay for it.

However, it is given to you with a license attached. If you've used a computer, you have seen software licenses.

Usually a wall of text we scroll past immediately to click on 'I agree' when we are on the web or installing software.

These licenses usually say things like:

 You are allowed to use this software for free on one computer but;
 you are but not allowed to modify the software, share the software
 and we and have total control over upgrades, functionality. We can
 restrict or take it away from you at any time, for any reason, 
 and we might make you pay for future upgrades........ but we might not. 

Despite the strong language, it may be that companies don't actually even read their own licenses or try to enforce them.

Such restrictive licenses are common, and have become the normal way of doing business in the world of computers since the 1970s, but there is an alternate way to look at software…….

By the middle of the 1980s the Free Software Foundation was established by Richard Stallman to help ensure that software users have four freedoms.

  • Freedom 0: The freedom to run the program for any purpose.1)
  • Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
  • Freedom 2: The freedom to redistribute and make copies so you can help your neighbour.
  • Freedom 3: The freedom to improve the program, and release your improvements

    (and modified versions in general) to the public, so that the whole community benefits.

Freedoms one, two and three require access to source code. Which we well deal with shortly.

To enforce these freedoms, software is licensed as Free and Open Source Software (FOSS).

There are many FOSS licenses used and once software is release under such a permissive license, then 'the cat is out of the bag'.

Depending on the software's popularity there may be hundreds or thousands of people working a program, using, adapting, giving it away or even selling it.

What does using FOSS for CCC mean in practice?

For a start we can freely offer FOSS resources for download on our wiki, or offer direct links to downloads.

In remote workshops, we can create a local store of software with over 30,000 packages and make them freely available to download, then leave it all behind in the community.

It also means we can use the world's most popular operating system.

Linux (also known as GNU/linux) is part of the Unix family of operating systems.

Here is the Unix 'family tree' for reference. Can you see where Linux, and OSX come from?

Unix timeline

“Unix timeline.en” by Guillem, Wereon, Hotmocha (copied from old version's history)Christoph S. (redrew the image with Inkscape) - Original image: Image:Unix.png. Licensed under Public Domain via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Unix_timeline.en.svg#/media/File:Unix_timeline.en.svg

The word Linux originally referred to the Linux kernel. A kernel is the central part of an Operating System.

Linux was created by Linus Torvalds in 1991 and has grown to 14,000 contributors by 2015.

It manages the basic tasks of the computer, directing programs access to the CPU, managing memory, internal devices and peripherals.

To be a complete OS, a kernel needs to be combine with tools for users create, manage and use their computers.

GNU

Fortunately the GNU project contained all the software required to make up a functional operating system. GNU stands for GNU's Not Unix and is a project to replace all the functionality of Unix with FOSS software, led by Richard Stallman.

The merging of these two projects resulted in the potential to have totally FOSS operation system. So where is Linux used?

The most powerful computer in the world Tianhe-2 used a version of Linux


By O01326 - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=45399546

This is Watson, a computer that beat the world's top jeopardy players in 2011. Watson ran on the SUSE Linux Enterprise Server 11 operating system.

Watson

“IBM Watson” by Clockready - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:IBM_Watson.PNG#/media/File:IBM_Watson.PNG

This is a raspberry pi, a tiny credit-card sized computer, that is usually run on a version of Debian Linux, called Rasberian.

Raspberry pi

We have installed a version of Linux on the wifi router we use to create our local wireless network.

Android is Linux

Linux is also inside the Android operating system, the most commonly used mobile operating system in the world.

There are now over one billion Android devices activated, across hundreds of different phones, tablets and other portable devices.

So we've covered the 'free' part of our operating systems, which brings us to the question: What is Open Source?

What is Source?

Before we can compare closed source with open source, we need to know what source code is.

source code is the instructions for a computer program contained in a simple text document.

Source code is written or coded in a programming language. So, someone who writes computer programs is a programmer writing code.

Programmers are also called developers or hackers. Hacking in this case means putting something together to solve a problem, not 'hacking' into a computer system like in movies or on TV.

Using the Source

For a computer to run a program, the source code has to be compiled into binary machine code by a compiler. This file is executable - in this case execute just means can be read, understood and acted on by the computer.

Here is a example of source code. in this case its a simple program in the C programming language that shows on the screen “Hello, World”

  #include <stdio.h>

  int main(void)
 {
  printf("Hello, world!\n");
  return 0;
 }

Despite the strange symbols, if you know how the C language is written, this program is human readable.

Once this code is run through a compiler, we get a binary executable file - which is machine readable.

But with the right tools (like a HEX editor) we can still open the file and edit it.

Here is the binary for our “Hello World!” program.

Close Source

Closed Source software means only the owners of the program have access to the source code. It is then distributed as a binary executable.

An example of extremely popular closed sourced software is Adobe Photoshop. It is so popular that saying a heavily modified picture is 'photoshopped' or just 'shopped' has become a normal phrase.

This is great when the software runs well, is updated when needed to fix bugs and patch security flaws.

However, when a closed source program in not updated after a serious security flaw is discovered, many thousands or even millions of computers may be left vulnerable.

Users have no option but to wait for the owners of the software to find a fix the software, and hope to be informed when they are vulnerable.

Open Source

Dokuwiki (the software we are using for this wiki) is open source, and developed publicly, and freely available on the internet. Anyone is able to grab the source code and run it, modify it or redistribute it.

Below is and example of the open source code for this wiki, which is written in a language called php.

  // define all DokuWiki globals here (needed within test requests but also helps to keep track)
  global $ACT, $INPUT, $QUERY, $ID, $REV, $DATE_AT, $IDX,
  $DATE, $RANGE, $HIGH, $TEXT, $PRE, $SUF, $SUM, $INFO, $JSINFO;
  if(isset($_SERVER['HTTP_X_DOKUWIKI_DO'])) {
  $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO']));
  } elseif(!empty($_REQUEST['idx'])) {
  $ACT = 'index';
  } elseif(isset($_REQUEST['do'])) {
  $ACT = $_REQUEST['do'];
  } else {
  $ACT = 'show';
  }
 

How did we get hold of the source code for this wiki? In this case all we did was look in the dokuwiki source found here pick bit of code at random and throw it in our wiki.

So, finding the source for FOSS software is easy. but to do the same thing with closed source program is usually difficult or impossible. Either you purchase or are given access to the code. Any other method may break all manner of licenses and laws.

1)
Yes - it starts at zero - because computers count from zero…