Max Polun's blog

On the future of computing

I’ve been listening to the accidental tech podcast recently and one of John Siracusa’s hobbyhorses is that something like iOS has to be the way forward for computing, as opposed to classic desktop OSes. While I think everyone agrees that desktop OSes aren’t going to get much more popular than they are now, my problem with this statement is that it’s so vague that it doesn’t mean anything. Being like iOS can mean many things, and the only really concrete thing he throws out is no exposed filesystem, which I doubt is going to be an essential part of the future since iOS is the only OS that doesn’t expose the filesystem. I mean is the future more like iOS? chromeOS? android? windows 10? All of these seem possible to me. And iOS being the most extreme of these in many ways makes me suspect that it’s not what the future’s going to look like.

So it annoys me when he says this (especially coming from someone so usually precise as he is), but just posting a compaining blog is boring, so I’m going to break down what seperates iOS from desktop OSes and what I think how important these are to the future. My perspective is as a developer, how are you going to use these platforms to write code? Right now you really can’t do that in general on iOS, android, chromeOS, or windows store apps.

Touch

OK, so touch interfaces are definitely part of the future. But are a mouse and keyboard part of the future? I think that keyboards probably are. They’re just so much more efficient than virtual keyboards for lots of text input that I can’t imagine them going away. Mice could go away, but if they do they’ll probably be replaced by pens or somethign else for precise input. ALso keep in mind that touch can exist in a desktop OS. The only problem is legacy applications with too small of touch targets. Touch is in some ways more accessible than mouse/keyboard, but also less accessible in other ways (compare gestures to keyboard shortcuts. How do you show that there are gesture shortcuts in the same way to you can show keyboard shortcuts now?).

I suspect that the platform of the future will come in all sorts of formfactors, with different input devices: phones and tablets will use touch almost exclusivly, laptops will have keyboards and possibly mice/touchpads, and convertable devices of various sorts will exist and support differnent devices at different times.

Sandboxing

This (like touch) can exist in desktop OSes, and in fact a web browser is really a form of sandboxing, letting you download applications from the internet safely. Sandboxing is going to be a part of the future since it’s part of the present, however I do think that having a way to escape the sandbox is important for lots of workflows (certainly developers need it). Maybe letting apps escape the sandbox should be hard enough that regular users won’t do it, but if you want developers on the platform of the future there needs to be a way to do various unsafe things. Maybe it even voids the waranty, but it should be possible.

Appstores

Most platforms have an appstore (at least one) at this point. They’re going to be with us for the forseeable future. However I’m not sure that an iOS style appstore with people reviewing every version and banning whole classes of apps is sustainable for the platform of the future. At the very least in order for the platform to be one that is suitable for doing real work, you need to be able to add custom apps. I believe that iOS does have a provision for this for corporate apps, but I think long term there needs to be some option for this for non-corporate apps so that things like developer tools can be installed. I also think it’s totally inappropriate for the only source of software for a system to censor not just things that my be objectionable for legal reasons (porn, emulators, etc), but even just applications centered around competing platforms. Remember that android magazines have been rejected from the appstore just for talking about different platform. That is not really acceptble for the platform of the future.

Non user-visible filesystem

I’ll be short here: I think it was an interesting experiment for there to not be a user visible filesystem on iOS, but I think it’s a failure. No other OS has replicated this aspect of iOS, and although the sitution has greatly improved after the introduction of extensions in iOS 8, it’s still a major issue. How can you have a workflow where multiple apps access different files in the same project without them being able to access the same shared files? You can copy between them for small files but that becomes a problem fast for large files, and putting all of the functionality in one big app is not feasible.

I don’t think the filesystem has to be exposed by default. Android has a user accessible filesystem, but you can use a lot of functionality without it. However if you need it, it’s there.

Fullscreen / tiled apps

This is as opposed to classic windowing systems. Now obviosly you don’t want fully overlapping windows on a phone screen (or even a tablet screen really. 2 apps tiled next to each other is really the limit as far as tablets go), however I don’t think that there will be no big screen devices. Once you get to a certain screen size you really do want to be able to overlap windows. Android recently showed off an experimental overlapping windows mode, and I think that will get use and opens up the possibility of android laptops.

So I think that the platform of the future will be responsive: small screens will have one fullscreen app. Larger ones will be able to tile 2 or 3 apps, and then after a certain point overlapping windows.

No backwards compatibility

Apple has no problem with killing of features and APIs it doesn’t want apps to use anymore. It’s possible some non-updated versions of iOS appstore launch apps will still work, but there’s no garauntee. On the other hand, microsoft and google have done huge amounts of work to ensure backwards compatibility. This isn’t just a nice to have thing, but to be the primary platform of the future, you can’t rely on apps getting updated for better or worse. The stronger sandboxing of modern platforms hopefully makes making changes without breaking compatibility easier, but there’s still a level of responsibility that a platform owner needs to avoid breaking all of their working (but maybe old) apps.

No peripherals

This is another area where I think future platforms will be more like current PCs than current mobile devices — you’ll need a lot of peripherals. However, hopefully at some point we get a better wireless protocol than bluetooth (or a future version of bluetooth that doesn’t suck at least), because that’s probably how most peripherals will connect.

Conclusion

Overall I think the main distinguishing feature of modern OSes is not their limitations, but how they’re written: they are sandboxed and have a more complex lifecycle than a classic Mac or Windows app — the OS can start or stop them at will. Over time mobile OSes will grow to have the functionality of classic OSes, but keep the security and power savings of their current incarnation.