[Acer Iconia A500] WereCatf:
Since no one here likely reads my Google+ updates I'll quote some of things that I've written:

Sometimes I wish I had the knowledge and resources to start OS programming; I find all the current OSes lacking on several key aspects and believe that someone should just start all over from scratch.

To be more precise, here are some of things that I've been thinking about:

1) A lot more fine-grained security. Applications should not by default have read permissions to any other files than what their own files, NO access to user's files, NO access to system files, NO access to other applications' files, and NO permission for directory listing either outside of the application's own installation directory, possible configuration files directory and work directory. Disallow execution of files that do not belong to the OS itself or which hasn't been installed via OS's application installation facilities, only allow advanced users to allow execution of other files but make this a several step process so that non-advanced users cannot be easily fooled into doing so.

Allow users to set which locations the application can read, which locations it can write, and during installation time show a list for the locations that the application asks for permissions to and warn the user if the application is trying to get access to suspect locations. Why? Because often the most valuable files on any given computer are the users' files, not the system files, and thus access to them needs to be a lot more restricted than it is.

Similarly, allow users to define which applications even have access to the Internet and local network, either input or output, and by default deny all; warn the user if the application at installation time requests Internet access and make it clear that if the application in question shouldn't need network access then likely it's doing something it shouldn't; a notepad/photo editor/etc. shouldn't need such.

2) Disallow applications/games/whatnot from using custom installers and updaters. Mandate using system facilities. System facilities should support the currently-regular stuff, ie. downloading from HTTP/HTTPS (always prefer HTTPS if supported) , FTP, bittorrent, and so on, but also should allow for installation of plugins for new methods. Though obviously, installation of such should again warn the user of the dangers of such and the system should check online if the plugin that is being installed has been deemed malicious/dangerous.

Why? Because currently everything features their own, custom installers, some of which fool users into installing crap on the side and so on. Similarly, having every single god damn thing feature their own updaters is a terrible mess and makes keeping everything up-to-date just plain painful. A system-provided solution would on the other hand make it much easier to manage updates, schedule them, and roll back on them if needed.

The system facility should allow one to schedule all installed applications to be updated at once, or allow setting individual or group schedules. It should also allow one to roll back on all installed applications, should such a need arise, and it should also allow one to manage the rollback cache, ie. remove one or several rollback states, clear the cache for all applications, etc.

3) Ship the OS with an anti-virus. Yes, it does consume some resources and very advanced users often don't even need such, but the general populace really does need one. And the thing is, even if your machine doesn't get infected you could still possibly be forwarding infected files, and that's what this would prevent. Spreading infected files is almost as bad as getting infected.

4) By default deny general users from installing applications/games/whatnot from outside an "app store"; ship the OS with a few pre-defined, trusted "app stores" and deny the user the ability to install more. Allow the user to turn on installation of applications from outside an "app store" for a limited time, say 15 minutes, but warn very clearly of all the dangers this has, including that if the user has for example been sent a file via e-mail that the user should likely not install it as even completely legitimate-looking e-mails can be fake and/or the sender's computer could have been infected and thus sending automated messages. Also, make it an obnoxiously irritating process to allow such, like e.g. require 3 confirmations or similar. Yes, regular users do need all the protection they can get, and even more.

Allow advanced users to turn the limitations off, but again, make this a multi-step process that requires some general expertise just so that a general user cannot be fooled into doing so.

Similarly, apply all the above to installation of device drivers.

5) Use a modern filesystem designed for modern computers, take for example BTRFS or ZFS. But also make certain that the filesystem behaves nicely on non-rotating media: flash-memory-based storage is on the grow and will sooner or later completely replace traditional media.

6) Make as many OS-features extendable and/or replaceable as possible: assume that anything that can be accelerated will sooner or later be accelerated.

7) Take a clue from GStreamer and the like: applications should be mostly filetype-agnostic and be able to read/write any filetypes for which a plugin has been installed (as long as the data is of supported-by-the-application type). Ie. a photo editor issues an Open File - dialog, the user selects a file, then the system and the application negotiate a data format that the editor supports, say, 16bit RGBA + metadata in XML, and the OS facilities handle reading the actual file.

Benefits of such a system should be fairly obvious to any programmer, but I'll still reiterate some of them here: application developers could focus on actual features instead of having to maintain support for different kinds of filetypes, reducing both the application codebase and complexity. Similarly, support for new filetypes could be added for all installed applications by just installing one plugin, no more "I cannot open this file in this application, so I have to juggle between several different intermediate formats."

The OS itself should not be written or dependant on any VM language and it shouldn't mandate anything; all applications should be possible to be written in lower-level languages. However, the OS should still ship with a VM just so that there is guaranteed common base for which application developers can aim for if they want or need to use a VM language. This would also help if the OS was ported to several architechtures as now the applications written for the OS-supplied VM would work on multiple architechtures.

In relation to the above, a binary format that can contain code for multiple platforms inside it so that the OS can choose the correct one. Why? Simply to aid end-users at 'click this to run', no need to know which platform you are running and selecting correct binary based on that.

In relation to #5: I would like the system to cache all metadata and allow for virtual directories where you can define which criteria to match for, and all matching files would show up there. Also, you could define that copying files to that virtual directory would automatically add a tag or several tags to those files. I am still working on this as there are plenty of things that would be possible with a fully database-like system and the security concerns for example require some attention.

----------------

That is the OS I would like. As for the hardware... well, let's see:

1x HDMI 1.4, either micro- or full-size. 3D-support, and support for atleast 720p and 1080p resolutions.

1x Full-size USB-host.

1x microUSB for charging.

1x Bluetooth.

1x NFC.

1x Wifi 802.11n.

Possibly WiMax.

CPU & GPU: Tegra 3 or better. GPU could also be discrete should such a solution be feasible, though SoCs tend to be a better choice for mobile devices these days.

A reasonably-sized user-serviceable SSD for OS and application storage, a slower Flash-media storage for larger files. This is also where applications should store any larger files, like e.g. games should store textures, audio, cinematics and map data there, not on the SSD.

Now the important ones:

1x docking port, clearly documented and available for free even for commercial use. Yes, I know CEOs and general management love the idea of locking people to the company's own products, but that is counter-intuitive here: if the device is locked only to one company's docks it limits the users ability of being able to fully utilize the tablet and getting replacement parts should the dock fail. However, freely available, customizable docks for multiple purposes, and with the option that in the future someone will release even more useful ones, would make the tablet a safer choice for end-users to pick up.

Either no camera whatsoever, or actually make it worth it to include; do not slap a crappy camera on a mobile device that will most of the time be used in-doors and tick LED flash on it in the hopes that it'll be enough to take barely-useable indoors-pictures. I personally would want a Lytro lightfield-camera in mobile form on it; while it would increase the cost of the device and quite likely also make it more thick due to having to make room for all the optics, the lightfield-camera allows for instant pictures, ie. no waiting for shutter or anything, you don't need to wait for the device to focus on what you want as you can focus the picture later on, and it works impeccably well even in low-light situations, ie. indoors.