overview

Information edit

Information that is usable consists of representation of that information (Data) and tools to manipulate it (Programs), (to decode and encode the information). Only when you have the tools can you call the Data information, otherwise its meaning is lost to you.

Freedom of speech edit

One important freedom is that of personal expression. That is also not always given, due to topic moderation and censorship. Not all free software projects allow any type of posting or discussion on it. Hosting of content is always dependent on topic, if you have a collection of pictures of trees, you should not post cats pictures there.

non free (proprietary) edit

non free (proprietary) information is information or data that you do not have the rights to copy, publish, study or change.

Free/Libre Open Source Software (F/LOSS) edit

F/LOSS is software that is open under the http://opensource.org/osd.html you have the rights to study the source code and publish new versions of it under various terms. The most widely used license is the GPL www.gnu.org/licenses/gpl.html which gives you a wide range of freedoms and protections.

Creative Commons edit

creativecommons.org defines a set of licenses under which you can publish data and make it open for change and sharing to different degree. Not all data that is published can be processed with

Data edit

Data is what a program operates on, data is encoded information stored in bits of information packed together into bytes. Data can be licensed under copyright, and creative commons is a way to publish data. Only when data is in an open format, can be read by open source programs and has an open source license for the data itself is it truly open.

DOCUMENTATION edit

DOCUMENTATION is information encoded into data files that documents the program. You need this to understand the purpose and function of a program. Some times the source code is so well written that the program itself is the documentation, but only when you have the tools to decode it. Basic documenation should be understood as metadata in a simple metalanguage that everyone can understand. (Dublin core metadata dublincore.org)

Some documentation is published in a format that cannot be edited or reused (pdf or tiff) this is suboptimal. Others publish them with DRM restrictions so that you cannot copy them.

Access edit

Access is the most basic need to interact with a device. You need physical access and also legal access to a device or file to be able to change it. You have basic read and write access.

CHIP edit

The chip is the basic physical unit where the software runs on.

CHIP DESIGN edit

The chip design are all the schematics, and VHDL designs for a chip. they can be used to fabricate a chip They are mostly published in non open formats and can be read by only non free (proprietary) Chip Design Software.

Chip Design Software edit

The design software is the software that is used to process the chip designs. It is mostly not open, this is a problem.


CHIP FAB edit

The chip fabricator is the person or company who built the chip.

CHIP DOCUMENTATION edit

The chip documenation as defined here. http://www.oshwa.org/definition/

RAM edit

Random access memory, where the program is loaded into for execution. It

ROM edit

Read only memory, normally slow memory where the program and static data is stored when the chip is off.

PROGRAM edit

Programs are tools that can manipulate information, decode and encode it.

EDITOR edit

The editor it the basic program that processes source code and data files.

EXECUTABLE edit

The EXECUTABLE program is the basic data file, the binary representation that a chip can load and execute.

Operating System edit

The operating system is an abstraction of the chip and hardware to simplify the access to it and run multiple programs at the same time.

COMPILER edit

The compiler turns source code to executable code.


Program Data edit

PROGRAM DATA is broken up into the following parts :

  • Input data
  • Constant data is the data that a program needs at compile time
  • Static data that a program needs internally to reference and can change globally in the program
  • Run time data is data the is temporarly needed to process input data and turn it into output data.
  • Database data or external data is data stored in other programs in permanent form.
  • Executable code is machine language code that a program can execute directly
  • Dynamic Executable code is data that can be interpreted by other Executable code that a chip can execute indirectly. This includes virtual machine code etc. Some Dynamic Executable can be compiled just in time to Executable code.
  • Output data


Build System edit

The Build system is a set of programs and data that will run the compiler and turn a projects source code into an executable artifact.

Operating Loader edit

The loader is the basic tool that loads a program into RAM from disk or rom.


RUNNING PROGRAM edit

A running program is a program on a chip, loaded into ram, that is processing input and producing output.

RUNTIME edit

The runtime lib is the set of common software functions needed to run the program, this is normally libc and other toolkits needed to run your program.

SOURCE CODE edit

The basic source code of the program, read by the compiler and turned into binary executables. Source code files are data files.

Summary edit

Now, you can see that there is a recursive definition. In order to be truly free, you dont only need a creative commons document, but also the FLOSS software to process it. You need not only the designs of the chip but also the software to view and edit those designs and the documentation of them. Software does not only have to be open, but also the libraries you link with them, the build system and the documentation of them. Only if you have all these parts can you consider yourself to be truly free. Often we have only small parts of this puzzle which are free.