Recent sales figures may not be a direct indication of long term success for tablets. When people get a PC, they tend to use it until it breaks in some way. Modern PCs are so powerful, you would never need to upgrade them unless you're doing something which makes use of all available resources. In comparision, tablets still have a way to go. Hardware vendors manage to cram in more and more computing power into the portable format each year. So, upgrading tablets makes sense. I have friends who have an iPad, an iPad mini and are considering to upgrade to the newer iPad. Tablets will sooner or later reach the point where it doesn't make sense to upgrade. When that happens, there might be more tablet users than there are PC users, but there are some places where PCs will have to be in use.
For instance, office jobs need workstations with big screens, keyboards, ethernet connections, multiple USB ports, etc. You could hook up all these to a tablet and use it as a workstation, but then your system is no longer a tablet. It's just another kind of PC with a removable motherboard. At that point, the selection of the PC system depends on which one is more interoperable with other systems. Applications, databases, printers, security cameras, Outlook, what have you. This in turn depends on the operating system used. It doesn't matter whether a computer is made of discrete parts or an ARM SOC.
Android (I believe it's the most popular tablet OS, but I'm not sure) was not designed for this purpose. It's designed to be a content-viewing system and would probably need a lot of work before it can compete with Windows in interoperability. So we come to the same point again. Somebody would have to make a general-purpose operating system with a stable API. A stable API for application developers, so that a security update (which is only available in the next release of the distribution due to some kernel dependency) which also changes the Qt version doesn't break their programs. A stable API for device driver authors, so that their hardware will still be usable after two years.
Windows has so much momentum that it would take a lot of time and money to kill it, at least in the work place. For home use, we might get stuck between expensive workstations and crappy tablets which don't work well with other devices.
This is a bit off-topic but I'm very disappointed with the way Wayland, MIR and the general UNIX desktop community is headed for. Of course, these guys are very experienced people working on X11 for decades but I simply don't understand their motivation making Wayland the way it is.
As I understand, Wayland/MIR are simply frame buffers and event reporters, nothing else. There is no drawing code in them, no text, nothing. The creator of these servers maintain that everybody should do their own drawing and event interpretation. This is good for some types of applications but not all. Specifically, games and video playing programs will benefit from this since they don't have to deal with X11's quirks to get a frame buffer. However, other programs which simply use the display to present a user interface consisting of controls like buttons, text entries etc. will continue to suffer as they do under X11.
Since the GUI controls are separate from the display server under UNIX-like systems, there is nothing which stops the GUI toolkit authors from making massive changes in their APIs. This causes a lot of unnecessary maintainance. For instance, I have an application written for GTK+-1 from about 6-7 years ago and now it doesn't even compile for GTK+-2. I could somehow install GTK+1 along with GTK+2, but it's a lot of work. There is no way I could distribute the GTK+1 program to a client since they have to duplicate the same effort on their machines. So now, I have to port it to GTK+2 since that's what everybody has.
In the last ten years, GTK+ hasn't changed all that much from a user's point of view. There may be new widgets, the internal structure of the library might have been improved, but there is no change in the things it can do for me. I don't care about how Cairo can use the printer as well as the screen, I don't care about bidirectional text which I never encounter, I just want to display a button and do something when the user clicks it. Why exactly do we need 10 different GUI toolkits for this simple and very common task?
If the display server itself somehow provided controls, I believe many people would prefer that to the wide array of different GUI toolkits which have to exist due to current circumstances. One advantage of native controls would be consistent look and behaviour. I have tons of applications on my machine and they all use different GUI toolkits, which don't behave or look the same. I can't theme my system because it works only for the 'primary' GUI toolkit, everybody else is ignorant of those settings. Windows did this, they implemented native controls as part of their OS and everybody uses them. Some do it directly, some do it thru a wrapper but in the end all programs present you the same kind of radio button, same kind of combo box etc. The Windows applications I wrote ten years ago look and behave exactly the same as applications I wrote last year.
If we had such a thing as a native control on Linux, I think many people would use it. In response to this, the display server guys (now also the GUI toolkit guys) would probably be more cautious about changing the APIs because such changes would effect a lot of people. I say this because it's what happened with the Windows display people. They didn't want to break old applications so they kept their APIs.
For example, I have some programs written in the same time frame as the GTK+ application, which use only Xlib calls. These still work flawlessly on my brand new computer with a brand new graphics card. Same applies to my Windows programs from the same time frame as well. I had used native controls for them and they still work, nobody changed the necessary APIs behind my back, and they didn't really need to. A button is a button. You print some text on it, the user clicks it. That's it.
If I had so much developer power as these guys, I would at least give a thought to this issue, but they seem to prefer optimizing games and video instead of providing a stable, clean and fast interface for other programs that use the display. It's the year 2013 and I'm still dealing with clipboard problems, sound problems and whatnot. They are all solved problems elsewhere but the GUI toolkit makers and OS distributors simply can't agree on one thing and implement it everywhere. The display server guys don't want to meddle and we end up wondering which version of which distribution the customer wants to run.
If such an effort was made, it could lead to even further improvement of the UNIX desktop. Once you kill off gtk, qt, wxwindows, foxtk, fltk stuff, you could continue to improve other parts of the system such as sound, internet access, etc. It could end up providing a path for escaping the hell that is POSIX for people who don't want to use Windows.
You know, UNIX was not made in heaven. It was hacked together by a couple of guys. It worked well for a while but now we have much more information about the problems it tried to solve. We could do so much better and stop wasting our time on yet another way of doing the same things.
/usr/news/gotcha