# Public Domain Computer

Public domain computer is yet nonexistent but planned and highly desired [simple](kiss.md) ethical [computer](computer.md) (in the common meaning of the word) whose specification is completely in the public domain and which is made with completely [selfless](selflessness.md) [LRS](lrs.md)-aligned goal of being absolutely non-malicious and maximally helpful to everyone. It should be the "people's computer", a simple, [suckless](suckless.md), user-respecting hackable computer offering maximum [freedom](free_software.md), a computer which anyone can study, improve, manufacture and repair without paying any "[intellectual property](intellectual_property.md)" fees, a computer which people can buy for extremely low price and use for any purpose without being abused or oppressed.

The project is basically about asking: what if computers were designed to serve us instead of corporations?

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).

Even a pretty simple computer without an [operating system](os.md) is able to:

- Browse much of the [Internet](internet.md), e.g. [smol web](smol_internet.md) (no [JavaScript](js.md) websites, [gopher](gopher.md), ...).
- Handle communication, e.g. [email](email.md), [IRC](irc.md), ...
- Allow reading, writing and storing [books](book.md), e.g. those from [Project Gutenberg](gutenberg.md) or offline [Wikipedia](wikipedia.md) -- this can tremendously help education e.g. in the third world.
- Run basic [software](software.md) such as calculator, stopwatch, calendar, note taking, alarm clock, memory-card reader, picture viewer, even simple [games](game.md) etc.
- Serve as an [embedded](embedded.md) computer, e.g. [DYI](dyi.md) people and small business may use the computer in similar ways [Raspberry pi](rpi.md) is used nowadays (auto switching lights, opening doors, recording data from sensors, tiny robots, ...).
- Control [peripherals](peripheral.md) through simple interfaces.

## Details

The project wouldn't aim to create a specific single "model" of a computer but rather blueprints that may be easily adjusted and mapped to any specific existing technology -- the goal would be to create an abstract [hardware](hardware.md) specification as well as basic [software](software.md) for the computer.

Abstract hardware specification means e.g. description on the [logic gate](logic_gate.md) level so that the computer isn't dependent on any contemporary and potentially proprietary lower level technology such as [CMOS](cmos.md). The project would simply create a big logical circuit of the computer and this description could be "compiled" to a lower level circuit board description. The hardware description could also be parametrized so that certain features could be adjusted -- for example it might be possible to choose the amount of [RAM](ram.md) or disable specific CPU instructions to make a simpler, cheaper circuit board.

**The computer would have to be created from the ground up**, with every design aspect following the ultimate goal. The project roadmap could look similarly to this one:

1. Design a simple [instruction set architecture](isa.md) (ISA). This isn't that hard.
2. With current [free](free_software.md) technology, e.g. [C](c.md) and [GNU](gnu.md), create custom tools for designing, simulating and testing logic gate circuits. Also not extremely difficult if we keep it simple.
3. With these tools design a simple [MCU](mcu.md) computer based on the above mentioned ISA. This is doable, there are hobbyists that have designed their own 8bit CPUs, a few collaborating people could definitely create a nice MCU if they keep it simple (no caching, no floating point, no GPUs, ...).
4. Design a simple (e.g. [FORTH](forth.md)-like) self-hosted [programming language](programming_language.md), create its compiler with support for the above mentioned ISA so that it is possible to write software for the computer. This may preceded or succeeded by adding the ISA support to an existing languages such as [C](c.md), e.g. by adding a new backed to [gcc](gcc.md). Again, pretty doable.
5. Write basic [software](software.md) for the computer. [EZ](ez.md).
6. Compile the MCU logic-level description to an actual circuitboard, possibly even with [proprietary](proprietary.md) tools if other aren't available -- this may be fixed later.
7. Manufacture the first physical computer, test it, debug it, improve it, give it to people, ...
8. Now the main goal has been touched for the first time, however the real [fun](fun.md) only begins -- now it is needed to spread the project, keep improving it, write advanced software such as an [operating system](os.md) etc.

## See Also

- [Varvara](varvara.md) computer