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.