It seems that it is time to leave the window based concept behind. Users tend to like the new and modern interfaces, where important is to be able to concentrate on what you are currently doing instead seeing every window on a screen.
We have to also deal with the screen ratio. Nowdays monitors are all widescreen. 16 to 10 or even 16 to 9. Popular desktop environments have the main panel vertically and the window haders on the top. This makes the content to be even more narrowed down vertically.
Some mechanizms were introduced to merge the main panel and window header when the app is maximized or these get hidden and shown only on hover. Most web pages are about textual content. Articles and Blogs for example. These contents are best read when lines are short but many lines are visible. Even now in my web-based text editor: Sixty percent on the right side is empty on the screen, while the window header takes space from me to see more content.
The main panel of the desktop environment should be horizontal on the side of the screen. There would be enough space to put a system menu and a workspace or application switcher. Even some basic widgets. I also think that a tiling window manager should be used but best is probably to let users get their windows back.
Basically the system API and the App Framework would provide methods to create an application in two ways: Standard and Full Screen. Full Screen simply means that the whole screen would be given as a space where one could add widgets or draw directly. This is usually good for games or a movie player. A method for switching to Full Screen runtime should also exist.
For power users who like to use the operating system from a command line interface, there would also be an option to start apps without the DesktopServer running. When opening apps this way, the dock and main menu and workspace manager would be disabled but the UI still could be loaded. There would be three ways to open application from the command line:
open --GUIOnly appname open --CLIOnly appname open --Lines n appname open --Cols n appname open --Shell --Lines n appname open --Shell --Cols n appname
The GUIOnly would open the app simply maximized. The CLIOnly would only show the command line fot standard input or it may exit with the message that the app does not support it. An app could also be opened mixed. The given line number at bottom or the given column number on the right would be kept for command line input. It sould be also possible to open an app and have rest of the command line stay in the shell.
The easier part is that the developer has to decide wether he wants to use command line inteface and how. The more troublesome issue is with sizes. The developer can only respond to resize events but cannot request a window size due to the fact that sizes are all set by user. Therefor he should write his GUI for every possible size between Full Screen and the smallest tile.
Every interaction and drawing on screen would be based on the unit REP or realtive pixel. This basically means that developers could draw on screen as in traditional UI systems but REP values would be converted to pixels based on the main REP ratio setting. This means the user could set it to two to use a 1600 by 1000 screen as 800 by 500 retina display for example.