Update
This commit is contained in:
parent
c11683a811
commit
82af4ac894
10 changed files with 269 additions and 27 deletions
224
assembly.md
224
assembly.md
|
@ -1,42 +1,111 @@
|
|||
# Assembly
|
||||
|
||||
Assembly (also ASM) is, for any given hardware computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the lowest level [programming language](programming_language.md) that expresses a linear (typically unstructured) sequence of instructions -- it maps (mostly) 1:1 to [machine code](machine_code.md) (the actual [binary](binary.md) CPU instructions) and basically only differs from the actual machine code by utilizing a more human readable form (it mostly just gives human friendly nicknames to combinations of 1s and 0s). Assembly is converted by [assembler](assembler.md) into the the machine code. Assembly is similar to [bytecode](bytecode.md), but bytecode is meant to be [interpreted](interpreter.md) or used as an intermediate representation in [compilers](compiler.md) while assembly represents actual native code run by hardware. In ancient times when there were no higher level languages (like [C](c.md) or [Fortran](fortran.md)) assembly was used to write computer programs -- nowadays most programmers no longer write in assembly (majority of zoomer "[coders](coding.md)" probably never even touch anything close to it) because it's hard (takes a long time) and not [portable](portability.md), however programs written in assembly are known to be extremely fast as the programmer has absolute control over every single instruction.
|
||||
Assembly (also ASM) is, for any given hardware computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the lowest level [programming language](programming_language.md) that expresses typically a linear, unstructured sequence of CPU instructions -- it maps (mostly) 1:1 to [machine code](machine_code.md) (the actual [binary](binary.md) CPU instructions) and basically only differs from the actual machine code by utilizing a more human readable form (it gives human friendly nicknames, or mnemonics, to different combinations of 1s and 0s). Assembly is converted by [assembler](assembler.md) into the the machine code. Assembly is similar to [bytecode](bytecode.md), but bytecode is meant to be [interpreted](interpreter.md) or used as an intermediate representation in [compilers](compiler.md) while assembly represents actual native code run by hardware. In ancient times when there were no higher level languages (like [C](c.md) or [Fortran](fortran.md)) assembly was used to write computer programs -- nowadays most programmers no longer write in assembly (majority of zoomer "[coders](coding.md)" probably never even touch anything close to it) because it's hard (takes a long time) and not [portable](portability.md), however programs written in assemCbly are known to be extremely fast as the programmer has absolute control over every single instruction.
|
||||
|
||||
**Assembly is NOT a single language**, it differs for every architecture, i.e. every model of CPU has potentially different architecture, understands a different machine code and hence has a different assembly; therefore **assembly is not [portable](portability.md)** (i.e. the program won't generally work on a different type of CPU or under a different [OS](os.md))! For this reason (and also for the fact that "assembly is hard") you shouldn't write your programs directly in assembly but rather in a bit higher level language such as [C](c.md) (which can be compiled to any CPU's assembly). However you should know at least the very basics of programming in assembly as a good programmer will come in contact with it sometimes, for example during hardcore [optimization](optimization.md) (many languages offer an option to embed inline assembly in specific places), debugging, reverse engineering, when writing a C compiler for a completely new platform or even when designing one's own new platform.
|
||||
**Assembly is NOT a single language**, it differs for every architecture, i.e. every model of CPU has potentially different architecture, understands a different machine code and hence has a different assembly (though there are some standardized families of assembly like x86 that work on wide range of CPUs); therefore **assembly is not [portable](portability.md)** (i.e. the program won't generally work on a different type of CPU or under a different [OS](os.md))! And even the same kind of assembly language may have several different [syntax](syntax.md) formats which may differ in comment style, order of writing arguments and even instruction abbreviations (e.g. x86 can be written in [Intel](intel.md) and [AT&T](at_and_t.md) syntax). For the reason of non-portability (and also for the fact that "assembly is hard") you shouldn't write your programs directly in assembly but rather in a bit higher level language such as [C](c.md) (which can be compiled to any CPU's assembly). However you should know at least the very basics of programming in assembly as a good programmer will come in contact with it sometimes, for example during hardcore [optimization](optimization.md) (many languages offer an option to embed inline assembly in specific places), debugging, reverse engineering, when writing a C compiler for a completely new platform or even when designing one's own new platform. **You should write at least one program in assembly** -- it gives you a great insight into how a computer actually works and you'll get a better idea of how your high level programs translate to machine code (which may help you write better [optimized](optimization.md) code) and WHY your high level language looks the way it does.
|
||||
|
||||
The most common assembly languages you'll encounter nowadays are **[x86](x86.md)** (used by most desktop [CPUs](cpu.md)) and **[ARM](arm.md)** (used by most mobile CPUs) -- both are used by [proprietary](proprietary.md) hardware and though an assembly language itself cannot (as of yet) be [copyrighted](copyright.md), the associated architectures may be "protected" (restricted) e.g. by [patents](patent.md). **[RISC-V](risc_v.md)** on the other hand is an "[open](open.md)" alternative, though not yet so wide spread. Other assembly languages include e.g. [AVR](avr.md) (8bit CPUs used e.g. by some [Arduinos](arduino.md)) and [PowerPC](ppc.md).
|
||||
|
||||
To be precise, a typical assembly language is actually more than a set of nicknames for machine code instructions, it may offer helpers such as [macros](macro.md) (something aking the C preprocessor), pseudoinstructions (commands that look like instructions but actually translate to e.g. multiple instructions), [comments](comment.md), directives, named labels for jumps (as writing literal jump addresses would be extremely tedious) etc.
|
||||
|
||||
Assembly is extremely low level, so you get no handholding or much programming "safety" (apart from e.g. CPU operation modes), you have to do everything yourself -- you'll be dealing with things such as function [call conventions](call_convention.md), [interrupts](interrupt.md), [syscalls](syscall.md) and their conventions, memory segments, [endianness](endianness.md), raw addresses/[goto](goto.md) jumps, call frames etc.
|
||||
Assembly is extremely low level, so you get no handholding or much programming "safety" (apart from e.g. CPU operation modes), you have to do everything yourself -- you'll be dealing with things such as function [call conventions](call_convention.md), [interrupts](interrupt.md), [syscalls](syscall.md) and their conventions, how many CPU cycles different instructions take, memory segments, [endianness](endianness.md), raw addresses/[goto](goto.md) jumps, [call frames](call_frame.md) etc.
|
||||
|
||||
Note that just replacing assembly mnemonics with binary machine code instructions is not yet enough to make an executable program! More things have to be done such as [linking](linking.md) [libraries](library.md) and converting the result to some [executable format](executable_format.md) such as [elf](elf.md) which contains things like header with metainformation about the program etc.
|
||||
|
||||
## Typical Assembly Language
|
||||
|
||||
Assembly languages are usually unstructured, i.e. there are no control structures such as `if` or `while` statements: these have to be manually implemented using labels and jump ([goto](goto.md)) instructions. There may exist macros that mimic control structures. The typical look of an assembly program is however still a single column of instructions with arguments, one per line.
|
||||
Assembly languages are usually unstructured, i.e. there are no control structures such as `if` or `while` statements: these have to be manually implemented using labels and jump ([goto](goto.md)) instructions. There may exist macros that mimic control structures. The typical look of an assembly program is however still a single column of instructions with arguments, one per line, each representing one machine instruction.
|
||||
|
||||
The working of the language reflects the actual [hardware](hardware.md) architecture -- most architectures are based on [registers](register.md) so usually there is a small number (something like 16) of registers which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory.
|
||||
The working of the language reflects the actual [hardware](hardware.md) architecture -- most architectures are based on [registers](register.md) so usually there is a small number (something like 16) of registers which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory (with instructions called something like *move*, *load* or *store*).
|
||||
|
||||
Writing instructions works similarly to how you call a [function](function.md) in high level language: you write its name and then its [arguments](argument.md), but in assembly things are more complicated because an instruction may for example only allow certain kinds of arguments -- it may e.g. allow a register and immediate constant (kind of a number literal/constant), but not e.g. two registers. You have to read the documentation for each instruction. While in high level language you may write general [expressions](expression.md) as arguments (like `myFunc(x + 2 * y,myFunc2())`), here you can only pass specific values.
|
||||
|
||||
There are also no complex [data types](data_type.md), assembly only works with numbers of different size, e.g. 16 bit integer, 32 bit integer etc. Strings are just sequences of numbers representing [ASCII](ascii.md) values, it is up to you whether you implement null terminated strings or Pascal style strings. [Pointers](pointer.md) are just numbers representing addresses. It is up to you whether you interpret a number as signed or unsigned (some instructions treat numbers as unsigned, some as signed).
|
||||
|
||||
Instructions are typically written as three-letter abbreviations and follow some unwritten naming conventions so that different assembly languages at least look similar. Common instructions found in most assembly languages are for example:
|
||||
|
||||
- MOV (move): move a number between registers and/or memory.
|
||||
- JMP (jump): unconditional jump to far away instruction.
|
||||
- BEQ (branch if equal): jump if result of previous comparison was equality.
|
||||
- ADD (add): add two numbers.
|
||||
- NOP (no operation): do nothing (used e.g. for delays).
|
||||
- CMP (compare): compare two numbers and set relevant flags (typically for a subsequent conditional jump).
|
||||
- **MOV** (move): move a number between registers and/or main memory (RAM).
|
||||
- **JMP** (jump): unconditional jump to far away instruction.
|
||||
- **BEQ** (branch if equal): jump if result of previous comparison was equality.
|
||||
- **ADD** (add): add two numbers.
|
||||
- **NOP** (no operation): do nothing (used e.g. for delays or as placeholders).
|
||||
- **CMP** (compare): compare two numbers and set relevant flags (typically for a subsequent conditional jump).
|
||||
|
||||
Assembly languages may offer simple helpers such as macros.
|
||||
## How To
|
||||
|
||||
On [Unices](unix.md) the [objdump](objdump.md) utility from GNU binutils can be used to **disassemble** compiled programs, i.e view the instructions of the program in assembly (other tools like ndisasm can also be used). Use it e.g. as:
|
||||
|
||||
```
|
||||
objdump -d my_compiled_program
|
||||
```
|
||||
|
||||
Let's now write a simple Unix program in [x86](x86.md) assembly (AT&T syntax). Write the following source code into a file named e.g. `program.s`:
|
||||
|
||||
```
|
||||
.global _start # include the symbol in object file
|
||||
|
||||
str:
|
||||
.ascii "it works\n" # the string data
|
||||
|
||||
.text
|
||||
_start: # execution starts here
|
||||
mov $5, %rbx # store loop counter in rbx
|
||||
|
||||
.loop:
|
||||
# make a Linux "write" syscall:
|
||||
# args to syscall will be passed in regs.
|
||||
mov $1, %rax # says syscalls type (1 = write)
|
||||
mov $1, %rdi # says file to write to (1 = stdout)
|
||||
mov $str, %rsi # says the address of the string to write
|
||||
mov $9, %rdx # says how many bytes to write
|
||||
syscall # makes the syscall
|
||||
|
||||
sub $1, %rbx # decrement loop counter
|
||||
cmp $0, %rbx # compare it to 0
|
||||
jne .loop # if not equal, jump to start of the loop
|
||||
|
||||
# make an "exit" syscall to properly terminate:
|
||||
mov $60, %rax # says syscall type (60 = exit)
|
||||
mov $0, %rdi # says return value (0 = success)
|
||||
syscall # makes the syscall
|
||||
```
|
||||
|
||||
The program just writes out `it works` five times: it uses a simple loop and a [Unix](unix.md) [system call](syscall.md) for writing a string to standard output (i.e. it won't work on [Windows](windows.md) and similar shit).
|
||||
|
||||
Now assembly source code can be manually assembled into executable by running assemblers like `as` or `nasm` to obtain the intermediate [object file](obj.md) and then [linking](linking.md) it with `ld`, but to assemble the above written code simply we may just use the `gcc` compiler which does everything for us:
|
||||
|
||||
```
|
||||
gcc -nostdlib -no-pie -o program program.s
|
||||
```
|
||||
|
||||
Now we can run the program with
|
||||
|
||||
```
|
||||
./program
|
||||
```
|
||||
|
||||
And we should see
|
||||
|
||||
```
|
||||
it works
|
||||
it works
|
||||
it works
|
||||
it works
|
||||
it works
|
||||
```
|
||||
|
||||
As an exercise you can objdump the final executable and see that the output basically matches the original source code. Furthermore try to disassemble some primitive C programs and see how a compiler e.g. makes if statements or functions into assembly.
|
||||
|
||||
## Example
|
||||
|
||||
TODO: some C code and how it translates to different assembly langs
|
||||
Let's take the following [C](c.md) code:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
char incrementDigit(char d)
|
||||
{
|
||||
return
|
||||
return // remember this is basically an if statement
|
||||
d >= '0' && d < '9' ?
|
||||
d + 1 :
|
||||
'?';
|
||||
|
@ -48,4 +117,131 @@ int main(void)
|
|||
putchar(incrementDigit(c));
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
We will now compile it to different assembly languages (you can do this e.g. with `gcc -S my_program.c`). This assembly will be pretty long as it will contain [boilerplate](boilerplate.md) and implementations of `getchar` and `putchar` from standard library, but we'll only be looking at the assembly corresponding to the above written code. Also note that the generated assembly will probably differ between compilers, their versions, flags such as [optimization](optimization.md) level etc. The code will be manually commented.
|
||||
|
||||
{ I used this online tool: https://godbolt.org. ~drummyfish }
|
||||
|
||||
The [x86](x86.md) assembly may look like this:
|
||||
|
||||
```
|
||||
incrementDigit:
|
||||
pushq %rbp # save base pointer
|
||||
movq %rsp, %rbp # move base pointer to stack top
|
||||
movl %edi, %eax # move argument to eax
|
||||
movb %al, -4(%rbp) # and move it to local var.
|
||||
cmpb $47, -4(%rbp) # compare it to '0'
|
||||
jle .L2 # if <=, jump to .L2
|
||||
cmpb $56, -4(%rbp) # else compare to '9'
|
||||
jg .L2 # if >, jump to .L4
|
||||
movzbl -4(%rbp), %eax # else get the argument
|
||||
addl $1, %eax # add 1 to it
|
||||
jmp .L4 # jump to .L4
|
||||
.L2:
|
||||
movl $63, %eax # move '?' to eax (return val.)
|
||||
.L4:
|
||||
popq %rbp # restore base pointer
|
||||
ret
|
||||
|
||||
main:
|
||||
pushq %rbp # save base pointer
|
||||
movq %rsp, %rbp # move base pointer to stack top
|
||||
subq $16, %rsp # make space on stack
|
||||
call getchar # push ret. addr. and jump to func.
|
||||
movb %al, -1(%rbp) # store return val. to local var.
|
||||
movsbl -1(%rbp), %eax # move with sign extension
|
||||
movl %eax, %edi # arg. will be passed in edi
|
||||
call incrementDigit
|
||||
movsbl %al, %eax # sign extend return val.
|
||||
movl %eax, %edi # pass arg. in edi again
|
||||
call putchar
|
||||
movl $0, %eax # values are returned in eax
|
||||
leave
|
||||
ret
|
||||
```
|
||||
|
||||
The [ARM](arm.md) assembly may look like this:
|
||||
|
||||
```
|
||||
incrementDigit:
|
||||
sub sp, sp, #16 // make room on stack
|
||||
strb w0, [sp, 15] // load argument from w0 to local var.
|
||||
ldrb w0, [sp, 15] // load back to w0
|
||||
cmp w0, 47 // compare to '0'
|
||||
bls .L2 // branch to .L2 if <
|
||||
ldrb w0, [sp, 15] // load argument again to w0
|
||||
cmp w0, 56 // compare to '9'
|
||||
bhi .L2 // branch to .L2 if >=
|
||||
ldrb w0, [sp, 15] // load argument again to w0
|
||||
add w0, w0, 1 // add 1 to it
|
||||
and w0, w0, 255 // mask out lowest byte
|
||||
b .L3 // branch to .L3
|
||||
.L2:
|
||||
mov w0, 63 // set w0 (ret. value) to '?'
|
||||
.L3:
|
||||
add sp, sp, 16 // shift stack pointer back
|
||||
ret
|
||||
|
||||
main:
|
||||
stp x29, x30, [sp, -32]! // shift stack and store x regs
|
||||
mov x29, sp
|
||||
bl getchar
|
||||
strb w0, [sp, 31] // store w0 (ret. val.) to local var.
|
||||
ldrb w0, [sp, 31] // load it back to w0
|
||||
bl incrementDigit
|
||||
and w0, w0, 255 // mask out lowest byte
|
||||
bl putchar
|
||||
mov w0, 0 // set ret. val. to 0
|
||||
ldp x29, x30, [sp], 32 // restore x regs
|
||||
ret
|
||||
```
|
||||
|
||||
The [RISC-V](risc_v.md) assembly may look like this:
|
||||
|
||||
```
|
||||
incrementDigit:
|
||||
addi sp,sp,-32 # shift stack (make room)
|
||||
sw s0,28(sp) # save frame pointer
|
||||
addi s0,sp,32 # shift frame pointer
|
||||
mv a5,a0 # get arg. from a0 to a5
|
||||
sb a5,-17(s0) # save to to local var.
|
||||
lbu a4,-17(s0) # get it to a4
|
||||
li a5,47 # load '0' to a4
|
||||
bleu a4,a5,.L2 # branch to .L2 if a4 <= a5
|
||||
lbu a4,-17(s0) # load arg. again
|
||||
li a5,56 # load '9' to a5
|
||||
bgtu a4,a5,.L2 # branch to .L2 if a4 > a5
|
||||
lbu a5,-17(s0) # load arg. again
|
||||
addi a5,a5,1 # add 1 to it
|
||||
andi a5,a5,0xff # mask out the lowest byte
|
||||
j .L3 # jump to .L3
|
||||
.L2:
|
||||
li a5,63 # load '?'
|
||||
.L3:
|
||||
mv a0,a5 # move result to ret. val.
|
||||
lw s0,28(sp) # restore frame pointer
|
||||
addi sp,sp,32 # pop stack
|
||||
jr ra # jump to addr in ra
|
||||
|
||||
main:
|
||||
addi sp,sp,-32 # shift stack (make room)
|
||||
sw ra,28(sp) # store ret. addr on stack
|
||||
sw s0,24(sp) # store stack frame pointer on stack
|
||||
addi s0,sp,32 # shift frame pointer
|
||||
call getchar
|
||||
mv a5,a0 # copy return val. to a5
|
||||
sb a5,-17(s0) # move a5 to local var
|
||||
lbu a5,-17(s0) # load it again to a5
|
||||
mv a0,a5 # move it to a0 (func. arg.)
|
||||
call incrementDigit
|
||||
mv a5,a0 # copy return val. to a5
|
||||
mv a0,a5 # get it back to a0 (func. arg.)
|
||||
call putchar
|
||||
li a5,0 # load 0 to a5
|
||||
mv a0,a5 # move it to a0 (ret. val.)
|
||||
lw ra,28(sp) # restore return addr.
|
||||
lw s0,24(sp) # restore frame pointer
|
||||
addi sp,sp,32 # pop stack
|
||||
jr ra # jump to addr in ra
|
||||
```
|
|
@ -27,4 +27,9 @@ In the book Lessig gives an overview of the history of copyright -- it has been
|
|||
|
||||
Free culture has become a relative success, the free Creative Commons licenses are now widely used -- e.g. **[Wikipedia](wikipedia.md) is part of free** culture under the [CC-BY-SA](cc_by_sa.md) license and its sister project [Wikimedia Commons](wm_commons.md) hosts over 80 million free cultural works! There are famous promoters of free culture such as [Nina Paley](nina_paley.md), webcomics, books, songs etc. In development of libre [games](game.md) free cultural licenses are used (alongside free software licenses) to liberate the game assets -- e.g. the [Freedoom](freedoom.md) project creates free culture content replacement for the game [Doom](doom.md). There are whole communities such as [opengameart](oga.md) or Blendswap for sharing free art, even sites with completely public domain stock photos, vector images, music and many other things. Many scientists release their data to public domain under [CC0](cc0.md). And of course, [LRS](lrs.md) highly advocated free culture, specifically [public domain](public_domain.md) under [CC0](cc0.md).
|
||||
|
||||
**BEWARE of fake free culture**: there are many resources that look like or even call themselves "free culture" despite not adhering to its rules. This may be by intention or not, some people just don't know too much about the topic -- a common mistake is to think that all Creative Commons licenses are free culture -- again, this is NOT the case (the NC and ND ones are not). Some think that "free" just means "gratis" -- this is not the case (free means freedom, i.e. respecting the above mentioned criteria of free cultural works). Many people don't know the rules of copyright and think that they can e.g. create a remix of some non-free pop song and license it under CC-BY-SA -- they CANNOT, they are making a derivative work of a non-free work and so cannot license it. Some people use licenses without knowing what they mean, e.g. many use CC0 and then ask for their work to not be used commercially -- this can't be done, CC0 specifically allows any commercial use. Some try to make their own "licenses" by e.g. stating "do whatever you want with my work" instead of using a proper waiver like CC0 -- this is with high probability legally unsafe and invalid, it is unfortunately not so easy to waive one's copyright -- DO use the existing licenses. Educate yourself and if you're unsure, ask away in the community, people are glad to give advice.
|
||||
**BEWARE of fake free culture**: there are many resources that look like or even call themselves "free culture" despite not adhering to its rules. This may be by intention or not, some people just don't know too much about the topic -- a common mistake is to think that all Creative Commons licenses are free culture -- again, this is NOT the case (the NC and ND ones are not). Some think that "free" just means "gratis" -- this is not the case (free means freedom, i.e. respecting the above mentioned criteria of free cultural works). Many people don't know the rules of copyright and think that they can e.g. create a remix of some non-free pop song and license it under CC-BY-SA -- they CANNOT, they are making a derivative work of a non-free work and so cannot license it. Some people use licenses without knowing what they mean, e.g. many use CC0 and then ask for their work to not be used commercially -- this can't be done, CC0 specifically allows any commercial use. Some try to make their own "licenses" by e.g. stating "do whatever you want with my work" instead of using a proper waiver like CC0 -- this is with high probability legally unsafe and invalid, it is unfortunately not so easy to waive one's copyright -- DO use the existing licenses. Educate yourself and if you're unsure, ask away in the community, people are glad to give advice.
|
||||
|
||||
## See Also
|
||||
|
||||
- [free software](free_software.md)
|
||||
- [free universe](free_universe.md)
|
7
free_universe.md
Normal file
7
free_universe.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Free Universe
|
||||
|
||||
Free universe (also "open" universe) is a [free culture ](free_culture.md) ("free as in freedom") fictional universe that serves as a basis/platform for creating [art](art.md) works such as stories in forms of [books](book.md), movies or [video games](game.md). Such a universe provides a consistent description of a fictional world which may include its [history](history.md) and [lore](lore.md), geography, characters, theme and art directions, and possibly also assets such as concept art, maps, music, even ready-to-use 3D video game models etc. A free universe is essentially the same kind of framework which is provided by [proprietary](proprietary.md) universes such as those of Start Wars or [Pokemon](pokemon.md), with the exception that free universe is [free](free_culture.md)/"open", i.e. it comes with a free [license](license.md) and so allows anyone to use it in any way without needing explicit permission; i.e. anyone can set own stories in the universe, expand on it, [fork](fork.md) it, use its characters etc. (possibly under conditions that don't break the rules of [free culture](free_culture.md)). The best kind of free universe is a completely [public domain](public_domain.md) one which imposes absolutely no conditions on its use.
|
||||
|
||||
But if anyone is allowed to do anything with the universe and so possibly incompatible works may be created, then **what is canon?!** Well, anything you want -- it's the same as with proprietary universes, regardless of official canon there may be different groups of fans that disagree about what is canon and there may be works that contradict someone's canon, there is no issue here.
|
||||
|
||||
**Existing free universes**: existence of a serious project aiming purely for the creation of a free universe is unknown to us, however free universes may be spawned as a byproduct of other free works -- for example free [books](book.md) of fiction or [libre games](libre_game.md) such as [FLARE](flare.md), [Anarch](anarch.md) or [FreeDink](freedink.md) probably spawn a free universe. If you want to start a free universe project, go for it, it would be highly valued!
|
|
@ -8,4 +8,8 @@ We can see that e.g. [real time](real_time.md) [Earth](earth.md)-Mars communicat
|
|||
|
||||
For things like [Web](web.md), each planet would likely want to have its own "subweb" (distinguished e.g. by [TLDs](tld.md)) and [caches](cache.md) of other planets' webs for quick access. This way a man on Mars wouldn't have to wait 40 minutes for downloading a webpage from the Earh web but could immediately access that webpage's slightly delayed version, which is of course much better.
|
||||
|
||||
Research into this has already been ongoing for some time. InterPlaNet is a protocol developed by [NASA](nasa.md) and others to be the basis for interplanetary Internet.
|
||||
Research into this has already been ongoing for some time. InterPlaNet is a protocol developed by [NASA](nasa.md) and others to be the basis for interplanetary Internet.
|
||||
|
||||
## See Also
|
||||
|
||||
- [world broadcast](world_broadcast.md)
|
16
kiss.md
16
kiss.md
|
@ -1,14 +1,24 @@
|
|||
# KISS
|
||||
|
||||
KISS (Keep It Simple, Stupid!) is a design philosophy that favors simplicity, solutions that are **as simple as possible** to achieve given task (but no more). This comes from the fact that higher [complexity](complexity.md) comes with increasingly negative effects such the cost of development, cost of [maintenance](maintenance.md), greater probability of bugs and security vulnerabilities. More about this can be read in the article on [minimalism](minimalism.md).
|
||||
KISS (Keep It Simple, Stupid!) is a design philosophy that favors simplicity, solutions that are **as simple as possible** to achieve given task. This philosophy doesn't primarily stem from laziness and a want to save time (though these are valid reasons too), but mainly from the fact that higher [complexity](complexity.md) comes with increasingly negative effects such the cost of development, cost of [maintenance](maintenance.md), greater probability of [bugs](bug.md) and failure, more [dependencies](dependency.md) and more [security](security.md) vulnerabilities. This stance is related to technology [minimalism](minimalism.md).
|
||||
|
||||
Apparently the term *KISS* originated in the US Army plane engineering: the planes needed to be repairable by *stupid* soldiers with limited tools under field conditions.
|
||||
|
||||
Compared to [suckless](suckless.md), [unix philosophy](unix_philosophy.md) and [LRS](lrs.md), KISS is a more general term and isn't tied to any specific group or movement, it doesn't imply any specifics but rather the general overall idea of simplicity being an advantage ([less is more](less_is_more.md)).
|
||||
**Examples** of KISS "[solutions](solution.md)" include:
|
||||
|
||||
- Using a [plain text](plain_text.md) TODO.txt file instead of a dedicated [bug](bug.md) tracker.
|
||||
- Creating website in plain [HTML](html.md) instead of using some complex web framework such as [Wordpress](wordpress.md).
|
||||
- Implementing a web left-right sweeping image gallery with HTML [iframe](iframe.md) instead of some overcomplicated [JavaScript](js.md) library.
|
||||
- Using a trivial [shell](shell.md) script for compiling your programs rather than using a complex build system such as [CMake](cmake.md).
|
||||
- ...
|
||||
|
||||
Compared to [suckless](suckless.md), [unix philosophy](unix_philosophy.md) and [LRS](lrs.md), KISS is a more general term and isn't tied to any specific group or movement, it doesn't imply any specifics but rather the general overall idea of simplicity being an advantage ([less is more](less_is_more.md), [worse is better](worse_is_better.md), ...).
|
||||
|
||||
[KISS Linux](kiss_linux.md) is an example of software developed under this philosophy and adapting the term itself.
|
||||
|
||||
## See Also
|
||||
|
||||
- [minimalism](minimalism.md)
|
||||
- [KILL](kill.md)
|
||||
- [suckless](suckless.md)
|
||||
- [KILL](kill.md)
|
||||
- [LRS](lrs.md)
|
|
@ -30,7 +30,7 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m
|
|||
|
||||
**Criminality doesn't exist**, there is no motivation for it as everyone has abundance of everything, no one carries guns, people don't see themselves as competing with others in life and everyone is raised in an environment that nurtures their peaceful, collaborative, selfless loving side. People with "criminal genes" have become extinct thanks to natural selection by people voluntarily choosing to breed with non-violent people. Conflict between people is minimized by the elimination of self interest (and need for it) -- a lot of violence in current society comes from disagreement which comes from everyone's different goals (everyone aims to benefit oneself); in our society this is no longer the case, people rarely disagree on essential decisions because decisions are driven by pure facts collected without distortion or suspicion of self interest.
|
||||
|
||||
**[Technology](technology.md) is simple, powerful, efficient, [future proof](future_proof.md), ecological, generally good and maximally helps people**. [Internet](internet.md) is actually nice, it provides practically all [information](information.md) ever digitized, for example there is a global database of all videos ever produced, including movies, educational videos and documentaries, all without [ads](ad.md), [DRM](drm.md) and [copyright](copyright.md) strikes, coming with all known [metadata](metadata.md) such as tags, subtitles, annotations and translations and are accessible by many means (something akin websites, [APIs](api.md), physical media ...), all videos can be downloaded, mirrored and complex search queries can be performed, unlike e.g. with [YouTube](youtube.md). Satellite images, streams from all live cameras and other sensors in the world are easily accessible in real time. Search engines are much more powerful than [Google](google.md) can dream of as data is organized efficiently and friendly to indexing, not hidden behind paywalls, [JavaScript](javascript.md) obscurity or registrations to websites, which means that for example all text of all e-books is indexed as well as all conversations ever had on the Internet and subtitles of videos. All source code of all programs is available for unlimited use by anyone. There are only a few models of standardized [computers](computer.md) -- a universal **[public domain computer](public_domain_computer.md)** -- not thousands of slightly different competing products as nowadays. There is a tiny, energy efficient computer model, then a more powerful computer for complex computations, a simple computer designed to be extremely easy to manufacture etc. None of course have malicious features such as [DRM](drm.md), gay teenager aesthetics, consumerist "killer features" or planned obsolescence. All schematics are available. People possibly wear personal [wrist-watch-like computers](less_retarded_watch.md), however these are nothing like today's "[smart](smart.md)" watches/phones -- our wrist computers are completely under the user's control, without any bullshit, spyware, ads and other malicious features, they last weeks or months on battery as they are in low energy consumption mode whenever they're not in use, they run [extremely efficient software](lrs.md) and are NOT constantly connected to the Internet and [updating](update_culture.md) -- as an alternative to connecting to the Internet (which is still possible but requires activating a transmitter) the device may just choose to receive a world-wide broadcast of general information (which only requires a low power consumption receiver) if the user requests it (similarly to how [teletext](teletext.md) worked), e.g. info about time, weather or news that's broadcasted by towers and/or satellites and/or small local broadcasters. Furthermore wrist computers are very durable and water proof and may have built-in solar chargers, so one wrist computer works completely independently and for many decades. They have connectors to attach external devices like keyboards and bigger displays when the user needs to use the device comfortably at home. The computing world is NOT split by competing standards such as different programming languages, most programmers use just one programming language similar to [C](c.md) that's been designed to maximize quality of technology (as opposed to capitalist interests such as allowing rapid development by incompetent programmers or [update culture](update_culture.md)).
|
||||
**[Technology](technology.md) is simple, powerful, efficient, [future proof](future_proof.md), ecological, generally good and maximally helps people**. [Internet](internet.md) is actually nice, it provides practically all [information](information.md) ever digitized, for example there is a global database of all videos ever produced, including movies, educational videos and documentaries, all without [ads](ad.md), [DRM](drm.md) and [copyright](copyright.md) strikes, coming with all known [metadata](metadata.md) such as tags, subtitles, annotations and translations and are accessible by many means (something akin websites, [APIs](api.md), physical media ...), all videos can be downloaded, mirrored and complex search queries can be performed, unlike e.g. with [YouTube](youtube.md). Satellite images, streams from all live cameras and other sensors in the world are easily accessible in real time. Search engines are much more powerful than [Google](google.md) can dream of as data is organized efficiently and friendly to indexing, not hidden behind paywalls, [JavaScript](javascript.md) obscurity or registrations to websites, which means that for example all text of all e-books is indexed as well as all conversations ever had on the Internet and subtitles of videos. All source code of all programs is available for unlimited use by anyone. There are only a few models of standardized [computers](computer.md) -- a universal **[public domain computer](public_domain_computer.md)** -- not thousands of slightly different competing products as nowadays. There is a tiny, energy efficient computer model, then a more powerful computer for complex computations, a simple computer designed to be extremely easy to manufacture etc. None of course have malicious features such as [DRM](drm.md), gay teenager aesthetics, consumerist "killer features" or planned obsolescence. All schematics are available. People possibly wear personal [wrist-watch-like computers](less_retarded_watch.md), however these are nothing like today's "[smart](smart.md)" watches/phones -- our wrist computers are completely under the user's control, without any bullshit, spyware, ads and other malicious features, they last weeks or months on battery as they are in low energy consumption mode whenever they're not in use, they run [extremely efficient software](lrs.md) and are NOT constantly connected to the Internet and [updating](update_culture.md) -- as an alternative to connecting to the Internet (which is still possible but requires activating a transmitter) the device may just choose to receive a [world-wide broadcast](world_broadcast.md) of general information (which only requires a low power consumption receiver) if the user requests it (similarly to how [teletext](teletext.md) worked), e.g. info about time, weather or news that's broadcasted by towers and/or satellites and/or small local broadcasters. Furthermore wrist computers are very durable and water proof and may have built-in solar chargers, so one wrist computer works completely independently and for many decades. They have connectors to attach external devices like keyboards and bigger displays when the user needs to use the device comfortably at home. The computing world is NOT split by competing standards such as different programming languages, most programmers use just one programming language similar to [C](c.md) that's been designed to maximize quality of technology (as opposed to capitalist interests such as allowing rapid development by incompetent programmers or [update culture](update_culture.md)).
|
||||
|
||||
**Fascism doesn't exist**, people no longer compete socially and don't live in [fear](fear_culture.md) (of immigrants, poverty, losing jobs, religious extremists etc.) that would give rise to militarist thought, society is multicultural and [races](race.md) highly mixed. There is no need for things such as [political correctness](political_correctness.md) and other censorship, people acknowledge there exist differences -- differences (e.g. in competence or performance) don't matter in a non-competitive society, discrimination doesn't exist.
|
||||
|
||||
|
@ -56,7 +56,9 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m
|
|||
|
||||
**Research advances faster, people are smarter, more rational and more moral**. Nowadays probably the majority of the greatest brains are wasted on bullshit activity such as studying and trying to hack the market -- even professional researchers nowadays waste time on "safe", lucrative unnecessary bullshit research in the "publish or perish" spirit, chasing grants, patents etc. In our ideal society smart people focus on truly relevant issues such as curing cancer, without being afraid of failure, stalling, negative results, lack of funds etc. People are responsible and practice e.g. voluntary birth control to prevent overpopulation. However people are NOT cold rational machines, emotions are present much more than today, for example the emotion of love towards life is so strong most people are willing to die to save someone else, even a complete stranger. People express emotion through rich art and good deeds. People are also spiritual despite being highly rational -- they know rationality is but one of many tools for viewing and understanding the world. **Religion still exists** commonly but not in radical or hostile forms; Christianity, Islam and similar religions become more similar to e.g. Buddhism, some even merge after realizing their differences are relatively unimportant, religion becomes much less organized and much more personal.
|
||||
|
||||
**People live much longer and are healthier** thanks to faster research in medicine, free healthcare, higher living standard, minimization of stress and elimination of the [antivirus paradox](antivirus_paradox.md) from medicine.
|
||||
**Art is rich and unrestricted** (no [copyright](copyright.md) or other "[IP](intellectual_property.md)" exists), with people being able to fully dedicate their lives to it if they wish and with the possibility to create without distraction such as having to make living or dealing with copyright. People collaborate and reuse each other's works, many [free universes](free_universe.md) exist, everyone can enjoy all art without restriction and remix it however he wishes.
|
||||
|
||||
**People live much longer and healthier lives** thanks to faster research in medicine, free healthcare, better food, higher living standard, more natural life closer to nature, minimization of stress and elimination of the [antivirus paradox](antivirus_paradox.md) from medicine. They also die more peacefully thanks to having lived a rich, fulfilling lives, they die in the circle of their family and are not afraid of death, they take it as natural part of life. [Euthanasia](euthanasia.md) is allowed and common for those who wish to die for whatever reason.
|
||||
|
||||
## FAQ
|
||||
|
||||
|
@ -80,6 +82,7 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m
|
|||
- **Without any censorship how will you prevent "hate speech" or protect people's personal data?** As mentioned above, racism and issues of so called "hate speech" will simply disappear in a non-competitive society. The issues of abuse of personal information will similarly disappear without any corporations that abuse such data and without conflict between people, in the ideal society there won't even be any need for things such as passwords and encryption.
|
||||
- **How will you prevent psychopaths from just going and killing people?** In the ideal society maximum effort will be made to prevent wrong psychological development of people which can happen due to crime, poverty, discrimination, bullying etc., so the cases of lunatics killing for no reason would be extremely rare but of course they would happen sometimes, as they do nowadays, they cannot be prevented completely (they aren't completely prevented even nowadays, a psychopath is not afraid of police). Our society would simply see such events as unfortunate disasters, just like natural disasters etc. In transition states of our society there may still exist imperfect means of solving such situations such as means for non lethal immobilization of the attacker and his isolation (but not punishment, i.e. not a prison).
|
||||
- **Would such society be stable? Wouldn't people revert back to "old ways" over time?** We believe the society would be highly stable, much more than current society plagued by financial crises, climate changes, wars, political fights etc. The longer a good society stays, the more stable it will probably become as its principles will become more and more embedded in the culture and there will be no destabilizing forces -- no groups revolting "against the system" should appear because no one will be oppressed and therefore unhappy about the situation.
|
||||
- **Will you allow abortions?** There is no strict YES/NO answer here, as with everything there will be no simple allowing or forbidding laws, decisions about abortions will be made in the spirit of the common goal, handled on a case-by-case basis and strong prevention of unwanted and/or risky pregnancy. There will be more people willing to adopt children, birth control means will be better and accessible to anyone for free, children will not pose any financial burden or be an "obstacle to one's career", so this issue won't be nearly as great as it is today.
|
||||
- **You say you want equality of all living beings -- does this mean you will force animals to not kill each other or that you will refuse to e.g. kill viruses?** Ideally we would like to maximize the happiness and minimize suffering of all living beings, even primitive life forms such as bacteria, and if that cannot be achieved at the time, we will try to get as close to it as we can and do the next best thing. Sometimes there are no simple answers here but the important thing is the goal we have to keep in mind. For example provided that we want to sustain human life (i.e. we don't decide to starve to death) we have to choose what to eat: nowadays we will try to be vegan so as to spare animals of suffering but we are still aware that eating plants means killing plants which are living beings too -- we don't think the life of a plant is less worthy of an existence than that of an animal, but from what we know plants don't show signs of suffering to the degree to which e.g. mammals do, so eating plants rather than animals is the least evil we can do. Once we invent widely available artificial food, we will switch to eating that and we'll stop eating plants too.
|
||||
|
||||
## How To Implement It
|
||||
|
|
|
@ -4,6 +4,8 @@ Public domain computer is yet nonexistent but planned and highly desired [simple
|
|||
|
||||
The project is basically about asking: what if computers were designed to serve us instead of corporations?
|
||||
|
||||
In our [ideal society](less_retarded_society.md), one of the versions of the public domain computer could be the [less retarded watch](less_retarded_watch.md).
|
||||
|
||||
Note that **the computer has to be 100% from the ground up in the true, safe and worldwide [public domain](public_domain.md)**, i.e. not just "[FOSS](foss.md)"-licensed, partially open etc. It should be created from scratch, so as to have no external [dependencies](dependency.md) and released safely to the public domain e.g. with [CC0](cc0.md) + patent waivers. Why? In a [good society](less_retarded_society.md) there simply have to exist basic tools that aren't owned by anyone, tools simply available to everyone without any conditions, just as we have hammers, pencils, public domain mathematical formulas etc. -- computing has become an essential part of society and it certainly has to become a universal "human right", there HAS TO exist an ethical alternative to the oppressive [capitalist technology](capitalist_technology.md) so that people aren't forced to accepting oppression by their computers simply by lack of an alternative. Creating a public domain computer would have similarly positive effects to those of e.g. [universal basic income](ubi.md) -- with the simple presence of an ethical option the oppressive technology would have a competition and would have to start to behave a bit -- oppressive capitalist technology nowadays is possibly largely thanks to the conspiracy of big computer manufacturers that rely on people being de facto obliged to buy one of their expensive, [proprietary](proprietary.md), [spyware](spyware.md) littered non-repairable consumerist computer with secret internals.
|
||||
|
||||
**The computer can (and should) be very [simple](KISS.md)**. It doesn't -- and shouldn't -- try to be the way capitalist computers are, i.e. it would NOT be a typical computer "just in the public domain", **it would be different by basic design philosophy** because its goals would completely differ from those of capitalists. It would follow the [LRS](lrs.md) philosophy and be more similar to the very first personal computers rather than to the "[modern](modern.md)" HD/[bloated](bloat.md)/superfast/fashion computers. Let us realize that even a very simple computer can help tremendously as a great number of tasks people need can actually be handled by pretty primitive computers -- see what communities do e.g. with [open consoles](open_console.md).
|
||||
|
|
|
@ -6,4 +6,8 @@ Teletext is now pretty much obsolete technology that allowed broadcasting extrem
|
|||
|
||||
The principal difference against the [Internet](internet.md) was that teletext was [broadcast](broadcast.md), i.e. it was a one-way communication. Users couldn't send back any data or even request any page, they could only wait and catch the pages that were broadcast by TV stations (this had advantages though, e.g. it couldn't be [DDOSed](ddos.md)). Each station would have its own teletext with fewer than 1000 pages -- the user would write a three place number of the page he wanted to load ("catch") and the TV would wait until that page was broadcast (this might have been around 30 seconds at most), then it would be displayed. The data about the pages were embedded into unused parts of the TV signal.
|
||||
|
||||
The pages allowed fixed-width text and some very blocky graphics, both could be colored with very few basic colors. It looked like something you render in a very primitive [terminal](terminal.md).
|
||||
The pages allowed fixed-width text and some very blocky graphics, both could be colored with very few basic colors. It looked like something you render in a very primitive [terminal](terminal.md).
|
||||
|
||||
## See Also
|
||||
|
||||
- [world broadcast](world_broadcast.md)
|
12
wikipedia.md
12
wikipedia.md
|
@ -1,10 +1,10 @@
|
|||
# Wikipedia
|
||||
|
||||
Wikipedia is a non-commercial, [free/open](free_culture.md) [pseudoleftist](pseudoleft.md) [online](www.md) encyclopedia written mostly by volunteers, running on [free software](free_software.md), allowing almost anyone to edit its content (i.e. being a [wiki](wiki.md)); it is the largest and perhaps most famous encyclopedia created to date. It is licensed under [CC-BY-SA](cc_by_sa.md) and is run by the [nonprofit](nonprofit.md) organization Wikimedia Foundation. It is accessible at https://wikipedia.org.
|
||||
Wikipedia is a non-commercial, [free/open](free_culture.md) [pseudoleftist](pseudoleft.md) [online](www.md) encyclopedia of general knowledge written mostly by volunteers, running on [free software](free_software.md), allowing almost anyone to edit its content (i.e. being a [wiki](wiki.md)); it is the largest and perhaps most famous encyclopedia created to date. It is licensed under [CC-BY-SA](cc_by_sa.md) and is run by the [nonprofit](nonprofit.md) organization Wikimedia Foundation. It is accessible at https://wikipedia.org. Wikipedia is a mainstream information source and therefore politically censored^1234567891011121314151617181920.
|
||||
|
||||
Wikipedia used to be a great project, however by 2022 it has become kind of a [politically correct](political_correctness.md) [joke](jokes.md). A tragic and dangerous joke at that. It just hardcore censors facts and even edits direct quotes to push a [pseudoleftist](pseudoleft.md) propaganda. **Do not trust Wikipedia on anything even remotely touching politics**, always check facts elsewhere, e.g. on [Metapedia](metapedia.md), in old paper encyclopedias etc. You may also browse older, less censored versions of Wikipedia articles, either on Wikipedia itself, or -- if you don't trust it -- on [Internet Archive](internet_archive.md).
|
||||
Wikipedia used to be a great project, however by 2022 it has become kind of a [politically correct](political_correctness.md) [joke](jokes.md). A tragic and dangerous joke at that. It's still useful in many ways but it just hardcore censors facts and even edits direct quotes to push a [pseudoleftist](pseudoleft.md) propaganda. **Do not trust Wikipedia on anything even remotely touching politics**, always check facts elsewhere, e.g. on [Metapedia](metapedia.md), in old paper encyclopedias etc. You may also browse older, less censored versions of Wikipedia articles, either on Wikipedia itself, or -- if you don't trust it -- on [Internet Archive](internet_archive.md).
|
||||
|
||||
Wikipedia exists in many (more than 200) versions differing mostly by the language used but also in other aspects; this includes e.g. Simple English Wikipedia or Wikipedia in [Esperanto](esperanto.md). In all versions combined there are over 50 million articles and over 100 million users. English Wikipedia is the largest with over 6 million articles.
|
||||
Wikipedia exists in many (more than 200) versions differing mostly by the [language](language.md) used but also in other aspects; this includes e.g. Simple English Wikipedia or Wikipedia in [Esperanto](esperanto.md). In all versions combined there are over 50 million articles and over 100 million users. English Wikipedia is the largest with over 6 million articles.
|
||||
|
||||
There are also many sister projects of Wikipedia such as [Wikimedia Commons](wm_commons.md) that gathers [free as in freedom](free_culture.md) media for use on Wikipedia, [WikiData](wikidata.md), Wikinews or Wikisources.
|
||||
|
||||
|
@ -12,7 +12,7 @@ Information about hardware and software used by Wikimedia Foundation can be foun
|
|||
|
||||
Wikipedia was created by [Jimmy Wales](jimmy_wales.md) and [Larry Sanger](larry_sanger.md) and was launched on 15 January 2001. It was made as a complementary project alongside [Nupedia](nupedia.md), an earlier encyclopedia by Wales and Sanger to which only verified experts could contribute. Wikipedia of course has shown to be a much more successful project.
|
||||
|
||||
There exist [forks](fork.md) and alternatives to Wikipedia. Simple English Wikipedia can offer a simpler alternative to sometimes overly complicated articles on the main English Wikipedia. [Citizendium](citizendium.md) is a similar online encyclopedia co-founded by [Larry Sanger](larry_sanger.md), a co-founder of Wikipedia itself, which is however [proprietary](proprietary.md) ([NC](nc.md) license). Citizendium's goal is to improve on some weak point of Wikipedia such as its reliability or quality of writing. [Metapedia](metapedia.md) is a Wikipedia fork that's written from a [rightist](left_right.md) point of view. [Infogalactic](infogalactic) is also a Wikipedia fork that tries to remove the [pseudoleftist](pseudoleft.md) bullshit etc. Encyclopedia Britannica can also be used as a nice resource: its older versions are already [public domain](public_domain.md) and can be found e.g. at [Project Gutenberg](gutenberg.md), and there is also a modern online version of Britannica which is [proprietary](proprietary.md) (and littered with ads) but has pretty good articles even on modern topics (of course facts you find there are in the public domain). Practically for any specialized topic it is nowadays possible to find its own wiki on the Internet.
|
||||
There exist [forks](fork.md) and alternatives to Wikipedia. Simple English Wikipedia can offer a simpler alternative to sometimes overly complicated articles on the main English Wikipedia. [Citizendium](citizendium.md) is a similar online encyclopedia co-founded by [Larry Sanger](larry_sanger.md), a co-founder of Wikipedia itself, which is however [proprietary](proprietary.md) ([NC](nc.md) license). Citizendium's goal is to improve on some weak points of Wikipedia such as its reliability or quality of writing. [Metapedia](metapedia.md) and [Infogalactic](infogalactic.md) are a Wikipedia forks that are written from a more [rightist](left_right.md)/neutral point of view. [Infogalactic](infogalactic) is also a Wikipedia fork that tries to remove the [pseudoleftist](pseudoleft.md) bullshit etc. Encyclopedia Britannica can also be used as a nice resource: its older versions are already [public domain](public_domain.md) and can be found e.g. at [Project Gutenberg](gutenberg.md), and there is also a modern online version of Britannica which is [proprietary](proprietary.md) (and littered with ads) but has pretty good articles even on modern topics (of course facts you find there are in the public domain). Practically for any specialized topic it is nowadays possible to find its own wiki on the Internet.
|
||||
|
||||
## Good And Bad Things About Wikipedia
|
||||
|
||||
|
@ -30,6 +30,7 @@ And the bad things are (see also this site: http://digdeeper.club/articles/wikip
|
|||
|
||||
- Wikipedia is **[censored](censorship.md), [politically correct](political_correctness.md), biased and pushes a harmful political propaganda**, even though it [proclaims the opposite](https://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_censored) (which makes it much worse by misleading people). "Offensive" material and material not aligned with [pseudoleftist](pseudoleft.md) propaganda is removed as well as material connected to some controversial resources (e.g the link to 8chan, https://8kun.top, is censored, as well as [Nina Paley](nina_paley.md)'s Jenndra Identitty comics and much more). There is a heavy **[pseudoleft](pseudoleft.md), [pseudoskeptic](pseudoskepticism.md) and [soyence](soyence.md) bias** in the articles. It creates a list of **banned sources** ([archive](https://web.archive.org/web/20220830004126/https://en.wikipedia.org/wiki/Wikipedia:Reliable_sources/Perennial_sources)) which just removes all non-[pseudoleftist](pseudoleft.md) sources -- so much for their "neutral point of view".
|
||||
- Wikipedia includes material under **[fair use](fair_use.md)**, such as screenshots from proprietary games, which makes it partially [proprietary](proprietary.md), i.e. Wikipedia is technically **NOT 100% free**. Material under fair use is still proprietary and can put remixers to legal trouble (e.g. if they put material from Wikipedia to a commercial context), even if the use on Wikipedia itself is legal (remember, proprietary software is legal too).
|
||||
- Wikipedia is **intentionally deceptive** -- it supports its claims by "citations" ("race is a social construct"^1234567891011121314151617181920) to make things look as objective facts, but the citations are firstly cherry picked (there is a list of banned sources), self-made (articles of Wikipedians themselves) and secondly the sources often don't even support the claim, they're literally there just for "good look". Not only do they practice censorship, they claim they do NOT practice censorship and then write article on censorship so as to define censorship in their own convenient way :) Furthermore their articles intentionally omit points of view of their political opponents.
|
||||
- Wikipedia often suffers from writing inconsistency, bad structure of text and **poor writing** in general. In a long article you sometimes find repeating paragraphs, sometimes a lot of stress is put on one thing while mentioning more important things only briefly, the level of explanation expertness fluctuates etc. This is because in many articles most people make small contributions without reading the whole article and without having any visions of the whole. And of course there are many contributors without any writing skills.
|
||||
- Wikipedia is **too popular** which has the negative side effect of becoming a **political battlefield**. This is one of the reasons why there has to be a lot of **bureaucracy**, including things such as **locking of articles** and the inability to edit everything. Even if an article can technically be edited by anyone, there are many times people watching and reverting changes on specific articles. So Wikipedia can't fully proclaim it can be "edited by anyone".
|
||||
- Wikipedia is **hard to read**. The articles go to great depth and mostly even simple topics are explained with a great deal of highly technical terms so that they can't be well understood by people outside the specific field, even if the topic could be explained simply (Simple English Wikipedia tries to fix this a little bit at least). Editors try to include as much information as possible which too often makes the main point of a topic drown in the blablabla. Wikipedia's style is also very formal and "not [fun](fun.md)" to read, which isn't bad in itself but it just is boring to read. Some alternative encyclopedias such as [Citizendium](citizendium.md) try to offer a more friendly reading style.
|
||||
|
@ -66,13 +67,14 @@ Due to mass censorship and brainwashing going on at Wikipedia it is important to
|
|||
|[WikiSpooks](wikispooks.md) | CC BY-SA | no SJW censorship, seems only focused on politics |
|
||||
|[LRS wiki](lrs_wiki.md) | CC0 | best encyclopedia |
|
||||
|[Conservaedia](conservapedia.md) | PROPRIETARY | American fascist wiki, has basic factual errors |
|
||||
|[Encyclopedia Dramatica](dramatica.md) | CC0 | informal/fun but valuable info (on society, tech, ...), basically no censorship, no propaganda |
|
||||
|[Encyclopedia Dramatica](dramatica.md) | CC0 | informal/fun/"offensive" but valuable info (on society, tech, ...), basically no censorship, no propaganda |
|
||||
|[Tor Hidden Wiki](http://zqktlwiuavvvqqt4ybvgvi7tyo4hjl5xgfuvpdf6otjiycgwqbym2qad.onion) | PROPRIETARY | Deepweb wiki on [Tor](tor.md), probably less censored. |
|
||||
|
||||
TODO: darknet wikis
|
||||
|
||||
## See Also
|
||||
|
||||
- [Wiki](wiki.md)
|
||||
- [Intellipedia](intellipedia.md)
|
||||
- [Citizendium](citizendium.md)
|
||||
- [Infogalactic](infogalactic.md)
|
||||
|
|
9
world_broadcast.md
Normal file
9
world_broadcast.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# World Broadcast
|
||||
|
||||
{ I don't know too much about radio transmissions, please send me a mail if something here is a complete BS. ~drummyfish }
|
||||
|
||||
*WIP!*
|
||||
|
||||
World (or world-wide) [broadcast](broadcast.md) is a possible [technological](tech.md) service (possibly complementing the [Internet](internet.md)) which could be implemented in a [good society](less_retarded_society.md) and whose main idea is to broadcast generally useful [information](information.md) over the whole globe so that simple and/or energy saving [computers](computer.md) could get basic information without having to perform complex and costly two-way communication.
|
||||
|
||||
It would work on the same principle as e.g. [teletext](teletext.md): there would be many different [radio](radio.md) transmitters (e.g. towers, satellites or small radios) that would constantly be broadcasting generally useful information (e.g. time or news) in a very simple format (something akin text in [Morse code](morse_code.md)). Any device capable of receiving radio signal could wait for desired information (e.g. waiting for certain keyword such as `TIME:` or `NEWS:`) and then save it. The advantage would be [simplicity](kiss.md): unlike with [Internet](internet.md) (which would of course still exist) the device wouldn't have to communicate with anyone, there would be no servers communicating with the devices, there would be no communication protocols, no complex code, no [DDOS](ddos.md)-like overloading of servers, and the receiving devices wouldn't waste energy (as transmitting a signal requires significant energy compared to receiving it -- like shouting vs just listening). It would also be more widely available than Internet connection, e.g. in deserts.
|
Loading…
Reference in a new issue