Maybe we should all stop describing software as "simple" or even not "simple" until we can agree on a shared definition.
On decommoditizing protocols:
The design of software is a constant struggle against complexity. On the one hand, the world is complex, and many difficult problems inherently require complex solutions. On the other hand, it's quite easy to add gratuitious complexity. The key difference is how much of the problem the complex software solves (i.e. how much complexity is exported to the other side of the protocol).
One example of this sometimes subtle distinction is the comparison of GX vs. OpenType layout by Dave Opstad. Dave points out that for an application to support, say, Tibetan using OpenType, it still has to do a lot of the work. In the GX model, it's done for you in the operating system. Thus, even though OpenType and GX are roughly comparable in complexity, from the point of view of the application GX is "simpler". Thus, overall complexity needs to be weighed against how much of the problem is solved.