Wednesday, November 6, 2013

How (not?) to design an operating system

IOS/OSX: Take 3-4 use case scenarios for example, forget the words "for example" and implement only those to perfection.

Android: Don't bother use case scenarios - just go with the functional requirements and let the user jump through hoops.

Symbian: Have an extensive list of functional requirements, as well as an extensive list of limitations. UI response time is not a functional requirement.

Windows: Those are the specifications, mockups and APIs from 60 years ago. It is important to not change them, because that's what people are used to.

Linux: Companies A, B and C design solutions X, Y and Z respectively. Meanwhile, solution W is community-born somewhere else. After endless flamewars on mailing lists, each distribution adopts one standard, but people end up using them all concurrently.

ChromeOS: The main design principle is that "everything is a browser". As a result, casual browsing works fine, but anything more complicated is out of specs.

Meego: Implement something good for the community, good for the company, great for both newbies and advanced users, then proceed to announce the end of it before the first device is out.

OpenBSD: Our main concern is security. After all, it's harder to break into a system that doesn't work at the first place.