# Public Domain Computer

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

"Public domain computer" is just a temporary placeholder/general term, the actual project would probably be called something different.

The project is basically about asking: what if computers were designed to serve us instead of corporations? Imagine a computer that wouldn't stand in your way in whatever you want to do.

In our ideal society, one of the versions of the public domain computer could be the less retarded watch.

Note that **the computer has to be 100% from the ground up in the true, safe and worldwide public domain**, i.e. not just "FOSS"-licensed, partially open etc. It should be created from scratch, so as to have no external dependencies and released safely to the public domain e.g. with CC0 + patent waivers. Why? In a good society 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 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 -- 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, spyware littered non-repairable consumerist computer with secret internals.

**The computer can (and should) be very simple**. 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 philosophy and be more similar to the very first personal computers rather than to the "modern" HD/bloated/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.

Even a pretty simple computer without an operating system is able to:

- Browse much of the Internet, e.g. smol web (no JavaScript websites, gopher, ...).
- Handle communication, e.g. email, IRC, ...
- Allow reading, writing and storing books, e.g. those from Project Gutenberg or offline Wikipedia -- this can tremendously help education e.g. in the third world.
- Run basic software such as calculator, stopwatch, calendar, note taking, alarm clock, memory-card reader, picture viewer, even simple games etc.
- Serve as an embedded computer, e.g. DYI people and small business may use the computer in similar ways Raspberry pi is used nowadays (auto switching lights, opening doors, recording data from sensors, tiny robots, ...).
- Be programmed and serve as an educational tool for programming.
- Do many scientific calculations.
- Control peripherals through simple interfaces.
- Handle simple multimedia such as low-res images and animations, 8bit sounds... 
- ...

## Details

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

Abstract hardware specification means e.g. description on the logic gate level so that the computer isn't dependent on any contemporary and potentially proprietary lower level technology such as CMOS. The project would simply create a big logic circuit of the computer and this description could be compiled/synthesized to a lower level circuit board description. The hardware description could also be parameterized so that certain features could be adjusted -- for example it might be possible to choose the amount of RAM 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. Create a programming language that will be usable both as a scripting and compiled language for the computer. We already have one -- comun -- though it is not fully finished yet. Now we can already start writing software for the computer. Optionally make other languages such as C compile to our ISA.
2. Design a simple instruction set architecture (ISA). This will provide some challenge but will be doable.
3. Write basic software in our language, mainly:
  - Custom tools for designing, simulating and testing logic circuits. Not extremely difficult if we keep it simple.
  - Emulator of our custom ISA so that we can run and test it on our current computers. It will also be useful to make our computer possible to be run as a virtual hardware on other platforms.
  - Shell that will serve to performing basic tasks with the computer, e.g. using it as a calculator or interactively programming it in simple ways. The shell will also serve as a kind of operating system, or rather a simple program loader. For now the shell can run on our current computers where we can test it and fine tune it. Implementation of this could be the comun shell.
  - Compiler -- this basically just means self hosting our compiler.
  - Basic tools like a text editor, compression utility, image editor etc.
4. With the logic circuit tools design a simple MCU 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, ...).
5. Compile the MCU logic-level description to an actual circuitboard, possibly even with proprietary tools if other aren't available -- this may be fixed later.
6. Manufacture the first physical computer, test it, debug it, improve it, give it to people, ...
7. Now the main goal has been touched for the first time, however the real fun only begins -- now it is needed to spread the project, keep improving it, write more software such as games etc. :)

## See Also

- Project Oberon
- comun
- comun shell
- uxn
- less retarded watch
- PDOS