March 14, 2012

Why Windows 8 Does The Right Thing The Wrong Way

Yesterday, I saw a superb presentation called "When The Consoles Die, What Comes Next?" by Ben Cousins. It demonstrates that mobile gaming is behaving as a disruptive technology, and is causing the same market decline in consoles that consoles themselves did to arcades in the 1990s. He also demonstrates how TV crushed cinema in a similar manner - we just don't think of it like that because we don't remember back when almost 60% of the population was going to the movie theaters on a weekly basis. Today, most people tend to go to the movie theater as a special occasion, so the theaters didn't completely die out, they just lost their market dominance. The role the movie theater played changed as new technology was introduced.

The game industry, and in fact the software industry as a whole, is in a similar situation. Due to the mass adoption of iPads and other tablets, we now have a mobile computing experience that is distinct from that of say, a console, or even a PC. Consequently, the role of consoles and PCs will shift in response to this new technology. However, while many people are eager to jump on the bandwagon (and it's a very lucrative bandwagon), we are already losing sight of what will happen to stabilize the market.

People who want to sound futuristic and smart are talking about the "Post-PC Era", which is a very inaccurate thing to say. PCs are clearly very useful for some tasks, and its unlikely that they will be entirely replaced by mobile computing, especially when screen real-estate is so important to development and productivity, and the difficulty of replicating an ergonomic keyboard. The underlying concept of a PC, in that you sit down at it, have a keyboard and mouse and a large screen to work at, is unlikely to change significantly. The mouse will probably be replaced by adaptive touch solutions and possibly gestures, and the screen might very well turn into a giant glass slab with OLEDs on it, or perhaps simply exist as the wall, but the underlying idea is not going anywhere. It will simply evolve.

Windows 8 is both a surprisingly prescient move on part of Microsoft, and also (not surprisingly) a horrible train wreck of an OS. The key concept that Microsoft correctly anticipated was the unification of operating systems. It is foolish to think that we will continue on with this brick wall separating tablet devices and PCs. The difference between tablets and PCs is simply one of both user interface and user experience. These are both managed by the highest layers of complexity in an operating system, such that it can simply adapt its presentation to suit whatever device it is currently on. It will have to once we introduce monitors the size of walls and OLED cards with embedded microchips. There will be such a ridiculous number of possible presentation mediums, that the idea of a presentation medium must be generalized such that a single operating system can operate on a stupendous range of devices.

This has important consequences for the future of software. Currently we seem to think that there should be "tablet versions" of software. This is silly and inconvenient. If you buy a piece of software, it should just work, no matter what you put it on. If it finds itself on a PC, it will analyze the screen size and behave appropriately. If its on a tablet, it will enable touch controls and reorganize the UI appropriately. More importantly, you shouldn't have to buy a version for each of your devices, because eventually there won't be anything other than a computer we carry around with us that plugs into terminals or interacts with small central servers at a company.

If someone buys a game I make, they own a copy of that game. That means they need to be able to get a copy of that game on all their devices without having to buy it 2 or 3 times. The act of buying the game should make it available to install on any interactive medium they want, and my game should simply adapt itself to whatever medium is being used to play it. The difference between PC and tablet will become blurred as they are reduced to simply being different modes of interaction, with the same underlying functionality.

This is what Microsoft is attempting to anticipate, by building an operating system that can work on both a normal computer and a tablet. They even introduce a Windows App Store, which is a crucial step towards allowing you to buy a program for both your PC and your tablet in a single purchase. Unfortunately, the train-wreck analogy is all too appropriate for describing the state of Windows 8. Rather than presenting an elegant, unified tablet and PC experience, they smash together two completely incompatible interfaces in an incoherent disaster. You are either presented with a metro interface, or a traditional desktop interface, with no in-between. The transition is about as smooth as your head smashing against a brick wall. They don't even properly account for the fact that their new metro start menu is terribly optimized for a mouse, but try to make you use it anyway. It does the right thing, the wrong way.

The game industry has yet to catch on to this, since one designs either a "PC game" or a "mobile game". When a game is released on a tablet, it's a special "mobile version". FL Studio has a special mobile version. There is no unification anywhere, and the two are treated as separate walled gardens. While this is currently an advantage during a time where tablets don't have the kind of power a PC does, it will quickly become a disadvantage. The convenience of having familiar interfaces on all your devices, with all of the same programs, will trump isolated functionality. There will always be games and programs more suited to consoles, or to PCs, or to tablets, but unless we stop thinking of these as separate devices, and instead one of many possible user experiences that we must adapt our creations to, we will find ourselves on the wrong side of history.

10 comments:

  1. uhh, dude, console gaming is not going anywhere. and i don't want my console game partially designed with touchscreen tablets in mind. nor do i expect to pay $60 for a game that isn't optimized for my console and its controller.

    if you want to talk about computer software in general, then you should get the same version on desktop, laptop and tablet - but don't reduce functionality just to make it run on a tablet. that's balls deep insanity

    ReplyDelete
    Replies
    1. If a program's functionality on a tablet is reduced in order to get it working on the tablet at all, how does that affect you at all as a console or PC gamer? The article clearly stated that the program would recognize what type of device it's running on and adapt itself accordingly, so playing a game on a console or PC, you wouldn't notice the "reduced functionality" of it being able to run on a tablet. And isn't it better to have the option to play it on a tablet perhaps not as comfortably as on other devices than to not have that option at all?

      Delete
    2. Sony is already doing this with VITA

      Delete
    3. The support for several platforms doesn't come for free. I'd rather pay only for what I use. And I'd rather play shooter games when there's a big screen around and puzzle games when I'm on the move, I can adapt, you know ;)

      Delete
  2. I don't see the Win8 UI in that black'n'white manner.

    What I think MS is doing, is that they correctly take advantage of the situation that in the current market it is expected to come up with a new user experience which fits mobile devices such as tablets, and that's what the Metro UI is for.

    But, MS has always valued backwards compatibility very high, so they keep supporting the old desktop UI for users who continue to use a desktop computer, are used to the traditional desktop PC experience, or just need to use legacy programs.

    For those users, there is no point to try forcibly make some mis-matched "transition" with the new UI. It is just reasonable to keep the "old" desktop stuff as is, to make as smooth as possible experience for backwards compatibility, and let the newer UI live on the side for apps designed for that.

    The backwards compatibility thing is a nice aspect of Windows. I've lately started appreciating it a lot more, when I have realized how eagerly some device-hw or OS vendors deprecate their stuff, making things obsolete the minute you carry them out from the store.

    Sometimes I feel this even extends to the software side (APIs), where stuff can get deprecated faster than a developer buys new socks, basically needing rewrite/re-port of stuff every 1-2 years!

    ReplyDelete
  3. "If you buy a piece of software, it should just work, no matter what you put it on."

    "More importantly, you shouldn't have to buy a version for each of your devices..."

    What about crossing between operating systems? You have to do more work or could possibly get away by making sacrifices to support multiple platforms. Is the latter less of a hit with Mono or other cross-compiled solutions?

    ReplyDelete
    Replies
    1. I've structured my utility libraries such that when I get time, I will be able to do the vast majority of porting to various operating systems on a low-level. I have yet to solve the problem of "all cross-platform GUI widget toolkits are absolutely terrible", however. This includes porting to mobile OSes or consoles. I have insisted for years that if you build a program, you should make it work on EVERYTHING, and I continue to work towards that goal (but it obviously isn't easy). The fact that people consider this to to be difficult is one of the problems I'm trying to solve.

      Delete
    2. This comment has been removed by the author.

      Delete
  4. The dream of one software running on different devices should die already. We've been there first with Java, then with Flash, then with HTML mobile apps and what not. Every time it turns out you have to rewrite the app or at the very least the UI (but more often everything). The interface will never resize itself because it is easier to simply rewrite it than make such an interface work. If it works for Angry Birds this is because Angry Birds is really simple game (and insultingly stupid but I digress). StarCraft will never make sense with touch controls.

    ReplyDelete
    Replies
    1. That is because people write bad software, not that it is impossible or even too difficult to ever do correctly. The point isn't to avoid rewriting the interface - the point is to rewrite the interface without touching the rest of the application. If most of your program IS the interface, you are either doing something wrong or you are an edge case.

      Delete