Understanding The Requirements
From ScribbleWiki: My Operating System
Lets brainstorm without thinking 'how to do something', lets think about 'what to do'. What does a user want to do? A user can be of many types.
Every type of user has a different use for the computer system, and existing ones more or less allow each one to have their things done, maybe some choose *nix and some use M$. Lets discuss what each user gets from their system.
Contents |
[edit] a layman user
A layman needs the computer to listen to songs or play small/big games. He still uses Windows 98, and trains his brain to do a sequence of things. He thinks that the 'Desktop refresh' in the context menu refreshes the entire OS, all devices, everything.
He calls everything that is copied into the computer as 'loading' and requires a technician to install 'messengers' and other 'pirated software'.
[edit] an advanced user
An advanced user uses Windows XP, has a firewall in place, does some browsing, chatting, music, and might occasionally have Firefox installed. Things like 'mplayer for windows' are in his 'achievements list' and brags his computer skills to people. He might know some word, excel, powerpoint and can 'print' documents!
[edit] a systems programmer
This is a tech savvy person who uses *nix or uses Windows XP professional/Windows Server. He knows the internals of the system, writes device drivers and other stuff. In the *nix land, recompiling kernel is a common day-to-day task for him. He knows how to patch kernels and do such stuff.
He mostly uses his computer to use 'gcc'. His firefox and irc is used to open only forums and chat sessions to talk on high level issues of the kernel, and gets pissed at newbies. He might use 'gaim/pidgin' and is a hardcore gnome fan.
[edit] a system administrator
He manages huge systems which run critical code. His desktop is a cool system, with so many shortcuts that only he can remember. The konsole is always open to monitor some activity on the system.
He opens vnc connections, ssh, web-interfaces to monitor his servers. He uses Firefox and Gaim and Thunderbird/Evolution. And all he does is remember configuration options and optimize things, write scripts on the servers.
[edit] an application developer
This guy is a supporter of vim/emacs/MSVs/Eclipse/Netbeans and so on. He generally is well versed in one scripting, one programming language and a GUI library. His life is simple. He uses KDE/Windows XP and writes cool applications that seems to do a lot of stuff, even if they are easy and buggy inside. He just needs a good development environment to code whatever looks great!
[edit] a web developer
He is similar to an application developer, but he uses IIS/Apache and keep tweaking the server. He gets instant results as he is developing on the web. He used Netbeans in case he is into J2EE, else some easy way to go like vim/emacs/quanta/MSFP. He is more into the artistic part of life, and has a cool wallpaper, uses Yahoo! messenger for Windows and Windows Live Messenger. All he wants is that his page looks good in IE and Firefox.
[edit] a businessman
This guy seldom opens his laptop, saves some files in notepad and then he's done. Something he gets mails from clients in XLS/PDF/DOC which he opens with caution.
If he is in the stock market, he might use the PC for looking up things online. His laptop mostly holds a dull wallpaper, empty desktop and is practically unused, not even music!
[edit] an academician
An academician basically uses his computer to check email from people. He uses his computer to demonstrate what the computer is. That is, if he was a *nix professor, he would demonstrate *nix, if he taught Windows, he'd do that. If he's a physics teacher, he'll just open ppts.
[edit] an application user
An application user has very specific needs. For example, a banking software user, or a pspice user, or a film maker using special effects. This software is highly specialized, needs special training and comes for Windows only! It can be cracked easily, and no one ever 'purchases' it.
Now that we know about the users concerned, we should first understand what type of users do we want the new operating system to be used? A psychological answer is 'all users'! Well, this isn't a possibility if the OS is not designed with everyone in mind. And in trying to do that, either we'll make something that everyone likes partially, or our design in perfect. I am not going with either of the options, but time will tell, when we actually have a plan.
Lets try to summarize a list of use cases for a computer system.
- Media - music, videos
- Gaming
- Internet browsing and chat
- Server
- Document processing
- Special purpose software
- Development environment - systems, application, web
- Administration
Now that we have a rough outline of the list of uses a computer can be put to, we need to come up with a plan that can do all these in a better way that the existing systems. In this brainstorm, we will not concentrate on 'how to do something', but 'what to do'.