# The Design of AbleOS ## The unix philosophy and why it shouldn't exist small is only beautiful if its complete. grep for example supports the `-r` flag which should instead be `grep`+`find` Everything is not a stream of bytes. programs can do multiple things well `cat`, `head` and `tail` could all be one program with a flag `which head` `which tail` `which cat` should all return the same binary with different flags ``` which head == /bin/cat range=0-10 which tail == /bin/cat reverse_index=true range=0-10 which cat == /bin/cat ``` build a prototype quickly only applies if you are being pressured. do thing quickly then refine 'choose portability over effeciency' this is a flawed idealogy choose modularity over pure portability 'store data in flat text files' this leads to a psuedostandardization on KVPair configuration languages that all sit in a flat text file. Instead pick a configuration format that gets loaded into a tree structure ## File Systems ### The amount of files inside of a folder 32765. Why you might ask? ### Dot files `dotfiles` were a mistake given to us by bad programmers mocking better programmers. [link](https://web.archive.org/web/20230413171520/http://xahlee.info/UnixResource_dir/writ/unix_origin_of_dot_filename.html) ### File name case sensitivity Case sensitivity seems like a great idea! But in practice leads to the following filetree ``` /kernel /Kernel /kErnEl /KeRnEl ``` which is a nightmare and you should be erradicated if you think this is a positive provide a display name for files that allows case and save the file as caseless ### File name character limits unix is a plauge upon this earth. name a file `:(){ :|:& };:` and try listing it. You have lost access to your terminal. if you defined a sane method of listing files and allowing programs to provide the OS a standard method of providing argument suggestions and being aware you would never run into this issue ## CLI vs GUI Graphics are not your enemy unix lovers. You mustn't be stuck in 1981. Times have changed! You can have a graphical shell enviroment. SGI Irix was aware of this in 1988, not perfect of course but 7 years after dos is an impressive leap. FFMPEG??? Why no gui? Give me a good git ui ### Emails plain text Unix believes in plain text emails. Quotes are `>` ### Unix Wizards and Instability [Do not meddle in the affairs of Unix, for it is subtle and quick to anger.] ### Unix why are your mouse a file? This list is incomplete `/dev/input/event1` The PS2 Mouse `/dev/input/psaux` The PS2 Mouse `/dev/input/psmouse` The PS2 Mouse `/dev/input/mice` The Not(?) PS2 Mouse I think? `/dev/input/mouse0` The not Not(?) ps2 mouse? First usb mouse I think? `/dev/input/usbhid` USB mice (should be autodetected) `/dev/input/sermouse` Most serial mice `/dev/input/logibm` Bus mouse connected to Logitech adapter card `/dev/input/inport` Bus mouse connected to ATI or Microsoft InPort card `/dev/input/by-id/usb-` A usb mouse via its id I propose a unified system for input via a Device Tree of sorts