Introspector/Summary
Information
editInformation 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
editOne 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)
editnon 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)
editF/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
editcreativecommons.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
editData 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
editDOCUMENTATION 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
editAccess 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
editThe chip is the basic physical unit where the software runs on.
CHIP DESIGN
editThe 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
editThe design software is the software that is used to process the chip designs. It is mostly not open, this is a problem.
CHIP FAB
editThe chip fabricator is the person or company who built the chip.
CHIP DOCUMENTATION
editThe chip documenation as defined here. http://www.oshwa.org/definition/
RAM
editRandom access memory, where the program is loaded into for execution. It
ROM
editRead only memory, normally slow memory where the program and static data is stored when the chip is off.
PROGRAM
editPrograms are tools that can manipulate information, decode and encode it.
EDITOR
editThe editor it the basic program that processes source code and data files.
EXECUTABLE
editThe EXECUTABLE program is the basic data file, the binary representation that a chip can load and execute.
Operating System
editThe 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
editThe compiler turns source code to executable code.
Program Data
editPROGRAM 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
editThe 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
editThe loader is the basic tool that loads a program into RAM from disk or rom.
RUNNING PROGRAM
editA running program is a program on a chip, loaded into ram, that is processing input and producing output.
RUNTIME
editThe 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
editThe basic source code of the program, read by the compiler and turned into binary executables. Source code files are data files.
Summary
editNow, 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.