The client-server concept has been around for a long time. The first computers were mainframes that took commands from other computers over the network and sent back the output of that command. At that point it was because it wasn’t feasible to have a computer in most places. Now they’re everywhere but lack a certain amount of cohesiveness that really should be there.
The client should be have the capabilities to display a UI and connect securely to the server. Also it should be able to, if the systems processing abilities permit, shoulder the load of it’s own process when possible. So it needs:
- Secure connection system of some kind
- Real time distrib uted computing system
- UI Client that takes care of rendering windows and graphics based on locally stored data and data on the server.
- Network connection management
- Other client software to connect to Cloud services
In addition to running the UI and connecting to the server the client needs to look nice from boot to log in all the way through shutdown. Particularly becase there isn’t anything else on the system but the UI client, network connection management services, and a small number of client applications there is definately room to develop a seamless graphical experience without skimping on the small number of other features in the client OS.
This is the complicated, and interesting, part. The server needs to run the processes of multiple users in a reasonable amount of time, send rendering data to the clients, listen for input, generate output, and manage all of their data in a secure fashion without crashing, ever. This entire system also needs to be insanely secure. Nobody’s data should ever be compromised for the sake of mobility.