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 speechEdit
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.
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 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 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 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.
The chip is the basic physical unit where the software runs on.
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 SoftwareEdit
The design software is the software that is used to process the chip designs. It is mostly not open, this is a problem.
The chip fabricator is the person or company who built the chip.
The chip documenation as defined here. http://www.oshwa.org/definition/
Random access memory, where the program is loaded into for execution. It
Read only memory, normally slow memory where the program and static data is stored when the chip is off.
Programs are tools that can manipulate information, decode and encode it.
The editor it the basic program that processes source code and data files.
The EXECUTABLE program is the basic data file, the binary representation that a chip can load and execute.
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.
The compiler turns source code to executable code.
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
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.
The loader is the basic tool that loads a program into RAM from disk or rom.
A running program is a program on a chip, loaded into ram, that is processing input and producing output.
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.
The basic source code of the program, read by the compiler and turned into binary executables. Source code files are data files.
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.