summaryrefslogtreecommitdiff
path: root/md/notes/xos.md
blob: 20ed1497db52684b74896e03e449879b6c4884a8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
title:XOS
keywords:linux,qemu,raspi,linux,x201,x230,x260

# XOS


## Intro

XOS is X-os like Mac-OS but X-os. Idea behind the name is that main hardware
where its suppose to run is thinkpads X series. As I have few x201,x230 and 
next upgrade is for x260 then thats the hardware. And its just one-man army
project then its enought. Also you can get x201 for sometime less then <100usd
then its not some kind of elitist 1000usd lappy people or some diy soldering 
guru SoC project. So yes here is main thing anyone with some common lappy could 
run it especially from those countries whom western-politicians call by 3rd world
countries. Yes 100USD is still big money for someone, but what could be cheaper 
and still be some sensible and good hw. There is enought of thinkpad X series
fans soooo ... for sure there is alot of support and info around.

## Mini projects

| name | descr | 
| --- | --- |
| [nmount](./xos/nmount.md) | mount alternative |

## Philosophy

Make it simple, make it portable, no dependencies, make it static. 
Simple its about simple to use rather then make its so technicaly hard to use
that any alternative is better. Portable means works on any distro with compilcation
or without recompilation, anu distro means any version distro. No specific
version of distro should be supported, only thing is supported is kernel versions
and kernel features, dont care about libc or anything standart.
Static only static can combain all of that. MacOS and Windows have alot of programms
that just installs and works without downloading dependencies. So idea is same,
you download it and it works, no anything extra is needed. If you cant pack
workable binary for everyone then its your issue not user issue. 


### Command line

As usual core-utils and most of the tools lack of sensible options and some of
the tasks are hard to do with core-utils then thats should be fixed. All commands
should have good enought help, and help should be good enought that there is no
need for man pages. 

All commands are configurable and match in functionality if they have GUI. And
all commands are compatible with pipelining. There is few attempts from rust community
to do something like this for few utils. But more is needed to change general 
expirience from using command line utils. One of the simplies example is ls.
Why i can in windows sort by any field I whant? Why I can just list files in dir, 
I need to use "find ./". So there is alot of should change and be rethinked 
how command line should work. Functionality should be as good as GUI tools, all
tools have common interfaces for piping without hacks, POSIX incompatability is the must now.

### Manuals

Man pages ... who reads them if there is better interface to search and view 
information like google that points to man7.org or to api providers or documentation
of actual projects. Something like turbo pascal help would  be nice to have,
and something like MacOS where there is enought docs without connecting to
internet. Internet is hostile place not all people have access to external
resource because of cenzorship or poor internet connection. 

### Services

Each service should just run without any config files, if its doesnt work as 
single binary it should be fixed. So when you start some http service it should
work and reply that if there is no interface then announce error, and where interface
appears then start working. Should be possible to run everything in any order,
no any kind of dependenices even they seams logical, it should have recovery state 
and work.

## Hardware

All hardware from X series should work out of the box, there should be clear
and single way how to run all capabilites of hardware, all should be usable.
BT just works, cameras can play videos and all buttons on laptop are working.
All HW have defined tested profiles so everything is tested to work.

## Languages

C,Ocaml,Go 

C - as its universal portable language, where you can write API once and 
reuse it from all other languages. All system interfaces should be written in it
as it allows to expse them to all other languages.

Ocaml - anything that needs parsing or complex problems to solve. Good feature
is its compiles to static lib, all parsers and shells should be wriiten in it

Go - standart library have everything that may be needed to communicate with
internet so its good language for that.

Its good enought combo of languages to address all fields system programming,
parsing and internet technologies.


## GUI

Probably GUI is never be the case for it, too much work needs to make GUI work,
one possible solutions is dwm style GUI or just qemu output display, or just remote
browser desktop so no real GUI implementation needed. And its sounds more
interesting and flexible to run.

## Goals

Get system booting, get ethernet working, get ip address and get irc client.
Thats would be nice goal to archive. Plan maximum is to get 
some KVM load any distro and show virtual display, that will make possible distro
to run and never update and never brake anything. 

And on journey to those goals produce ar much as possible notes.