Also, recently I've been looking at other peoples OSs, and how CC multishell and window APIs work (heard some complaints about different things).
Any way, I want to know what I should and should not do in writing an OS/shell. If you have made an OS/shell before, please share you what you've learned. Any essential/popular features?
P.S. I don't plan to add Pre-1.73 support
P.P.S. I'm aware that you can't make a proper OS in CC but that's what every one calls their shell so… yeah.
I've started work on the non-OS parts: http://www.computercraft.info/forums2/index.php?/topic/22421-wip-mit-hive-automating-the-things-that-automates-all-the-other-things/
My basic design idea is an improved shell with multi-tasking and non-colour.
My Notes
[namedSpoiler=Don'ts][list]
[*]Fake loading screen
[*]File spamming(why have 8 APIs just to get 1 API to function?)
[*]Sequels e.g. MyOS 2(unless the OS is revamped in GUI/Functionality)
[*]use default multi-shell nor window API
[/list]
[/namedSpoiler]
[namedSpoiler= Ideas]
[b]Key:[/b]
[s]Not possible[/s]
[i]When I develop, these features will be prioritised[/i]
[b]General[/b][list]
[*][i]multi-shell like interface with options to switch tabs (ctrl-tab? [url="http://en.wikipedia.org/wiki/Fn_key"]fn keys[/url]?) must be non colour compatible[/i]
[*][i]static program IDs[/i]
[*][i]inter program communication (via events, one program does a special queue action, perhaps os.message(programID,message), which sends an event to another program, the 2nd program collects the event the normal way)[/i]
[*][i]speed - default ui as comand line with optional gui[/i]
[*]colours must be "clean and matching"
[*]everything must be spaced out well - not [url="http://www.ssw.com.au/ssw/Standards/Rules/Images/badui2.jpg"]this[/url]
[*]optional gui
[*]customisation - UI Colours, language - store config in lua table
[*]Multilingual - lang files (I will need translators, google is only so good) also due to lua, this will be limited to characters in the ASCII range (use nearest equivalent, é will become e, best of luck with non-latin text)
[*][i]found a cool API loader which is compatible with file extensions [/i][i][url="http://pastebin.com/P5PCiPyg"]http://pastebin.com/P5PCiPyg[/url] - thanks ElvishJerricco for letting me use this[/i]
[*]remote startup files (take a startup file from another computer via rednet) - I have no idea what this would be useful for
[*][i]apiUnloader which allows api's to do stuff 'before they leave' http://www.computerc...__fromsearch__1
Shell
- tab auto-complete
- bash like?
- powershell like 'what if' - this may use alot of sandboxing
- super user mode - the OS tries to protect it's own files but will allow full access if the user types in a password
- hidden file - anything with a file name that starts with a . will be hidden (E.G. .git .meta .*), an argument to the ls command with show these (super user show too?)