Some features:
- Boots quickly,
- has a nice GUI,
- not buggy,
- can show its interface in Danish, Spanish, English, and other languages,
- accessible,
- supports a bunch of hardware,
- plenty of userspace software,
- support for showing local time and date,
- nice source code,
- there's probably lots of things I'm missing.
And then I guess I should try to explain those in detail:
Boots quickly? I guess that's more of a problem if you don't show a progress bar than if you do. But having to wait several seconds for the progress bar to appear (or even for the screen to turn on!) isn't very nice. Also, not booting fifty times slower on some days than others just because it downloaded an update that it needs to install while booting. I guess I'd like something that gets to the login screen in less than eight seconds, and from that to the desktop in one second, would be nice.
And what's a nice GUI? One that won't randomly change icons and move them around so that I can't find the buttons I'm looking for and have to learn a new GUI every time the developer chooses to release a new cosmetic update. I like having the clock at the top of the screen, but others like it at the bottom, so I guess it would be nice to have something that lets people choose. And if someone wants a clock in each corner of the screen or no clock at all, let them have that. Also, I want a clock with hours, minutes and seconds, because without the seconds I can't see quickly if the clock has frozen/crashed. And getting into the light/dark debate, I think I like black text on pastel-colour backgrounds, if that makes sense. But like the clock, it should be configurable. Actually, cosmetic updates might be okay, but make it very easy for people to choose whether they want them or not.
I don't like bugs. So I guess I shouldn't like programming then. (Lowers eyebrows) but I think I do. (Back to a "normal" facial expression) I don't want it crashing all the time, or only booting half the times I tell it to, the other times showing a black screen (or an abstract painting). Useful error messages might make the occasional error a bit more reasonable.
Showing the interface in different languages, ideally being able to change the language without having to log out and back in. Maybe even being able to change the language of all running applications as easily as you can change the keyboard layout. I also want to be able to use the OS when writing text in any language, so non-Latin font rendering should work too.
Accessibility? Well, I mentioned pointless interface changes already. I guess you could add a screenreader, a screen section magnifier, interface customization (already mentioned that), input method customization, speech input, Braille device support, maybe even a sign language interface (or maybe just documentation on video in some sign languages).
Hardware support? I guess it depends on the OS. I don't expect MAC OS to be compatible with non-mac computers, but I would like to be able to buy any keyboard, printer or other "normal" USB device and expect it to work out of the box. Or maybe for the less common devices (except network cards!) the OS downloading drivers automatically (maybe asking first, in case I don't want to do that right now) would work too. And make it a microkernel or similar so that installing the drivers won't require restarting the computer.
In the userspace, I'd like a text editor, a shell, a calender, development tools, an image editor, a web browser, a file manager and a bunch of other things.
In my country (Denmark... although I grew up in Spain, but I'm also male, left-anded and born on a Wednesday), there's nothing odd about refering to today as the Tuesday in the 29th week of 2020. Calendar apps made in English-speaking countries tend to not know that format though. I think if I make an OS myself and it has a calendar, it should support both English timing and Danish timing.
And nice source code? Well, I don't like messy source code. Variables should have reasonable names, code should be readable, indentation consistent, comments useful... And if I'm writing it myself, I probably want it to be open-source, although I'm not quite sure which lisence to use. (Is that how you spell lisence? I don't have speech recognition on this laptop yet, so I typed everything by hand.)
At this point I have a kernel I tried to write in 2017, and it seems fast to boot in QEMU, but there's no GUI, it's buggy, everything is in English, no colour changing, no non-visual output, no input (I do have some ramdisk reading code, in a language I don't have a cross compiler for, but is that even input?), just text mode output, no userland (I hope to add it sometime, along with ELF loading), and no concept of time. I guess the source code is readable though, but I might want to move some of the header files to another folder.
And there's probably lots of things I haven't even thought about, but which I will care about before I even get half of the above things right.
Stuff learned/learnt while writing this post:
- Using [*] without [list] doesn't make a list, it seems.
- It doesn't like like backslashes escape the square brackets. The only alternative I could find was bolding them.
- Today is the 197th day of 2020, according to my printed calendar. I wonder where in the world they use that date format.