From language to platform…

Reading this article comparing applications platform, I couldn’t help but think: “nothing new under the sun”.

History is repeating itself

In the 1980’s, a war raged between programmers. The reason for the war? Which programming language to use for applications. There were many candidates, compiled languages such as C or Pascal, interpreted languages such as BASIC, and “bizarre” languages such as Lisp, Prolog or Smalltalk. For all the uncertainty, things were not really open for discussion: each side knew they were absolutely right. Total war! Example: Turbo Pascal vs. QuickC.

In the 1990’s, a war raged between programmers. The reason for the war? Which operating system to use for applications. There were many candidates, text-based DOS, elegant or copycat graphical user interfaces such as Macintosh or Windows, as well as “bizarre” server operating systems such as Unix, Novell Netware or Linux. For all the uncertainty, things were not really open for discussion: each side knew they were right, and they knew their side had to win for them to make money. Total war! Example: Apple suing Microsoft over the Graphical User Interface.

In the 2000’s, a war raged between programmers. The reason for the war? Which execution environment to use for application? There were many candidates: client side native environments such as Windows or MacOS, browser-based virtual machines such as Java, as well as bizarre models such as VMware-style virtual machines, massively distributed systems (aka “the cloud”) or web services. For all the uncertainty, things were not really open for discussion. Each side preferred their model, and they knew that the financial stakes were high. Total war! Example: Sun suing Microsoft repeatedly over Java.

In the 2010, a war rages between programmers. The reason for the war? Which platform to use for applications. There are many candidates: desktop clients that won’t die, the iOS and Android mobile platforms, as well as “bizarre” platforms such as Facebook, Google Wave, Twitter, even good old TVs. For all the uncertainty, things were not really open for discussion. Each side has to be compatible and integrate with everybody else, but the financial stakes are mind-boggling. Total war! Example: the iTunes Ping – Facebook integration debacle.

The open platform wins

Of course, one can draw many conclusions from this parallel. For example, that programmers didn’t really take to heart the Make Love, Not War slogan, and instead would rather rally to “make war, not love” cries. Cheap shot! Cheap shot!

More seriously, I find it more interesting to observe who won over time. And in each case, it looks to me like the “more open” side won:

  • Pascal was criticized as being too closed compared to C. Ultimately, C won over Pascal. As an aside, the article “Why Pascal is not my favourite programming language” seems hard to find on Google these days. I hope it’s not slowly disappearing from the Internet…
  • The Macintosh was perceived as less open than Windows. Ultimately, Windows won over the Macintosh.
  • Sun positioned Java as “write once, run anywhere”, making it the open alternative to closed systems such as Windows or Macintosh. Customers came to associate distributed systems with freedom. Perception matters here, because if you think about it, you own Google Docs contents much less than documents on your hard disk. Still, the cloud and distributed system came out as the winners.
  • Finally, there is a strong perception that the iPhone is closed and Android is open. There are enough privacy concerns about how the “closed” Facebook to spur an open-source alternative, Diaspora.

Features are less important

The result that the more open approach wins in the long run is not entirely intuitive. Naively, one is tempted to believe that platform control is important, that features and quality will help secure a position in the long run. And often, these things do wonders at the beginning.

But look who had the head start and the better features:

  • Pascal was published slightly before C (1970 vs. 1972), and most people at the time found it cleaner.
  • The Macintosh operating system appeared before Windows, and at least until Windows 95, was significantly more polished, on the user experience front as well as on the features it offered programmers.
  • Native operating systems had more features and higher performance than Java-style or VMware-style virtual machines.

The same holds true for the internal architecture, for the overall design, for the ease of integration, even for the pace at which things changed. Arguably, for example, Pascal changed more rapidly than C, Turbo Pascal introducing for example instant compilation, modules, graphics and what we would call an IDE today.

Keep it open!

If you build a system for developers today, you can make short term wins if you design it well, make it easy to extend, and secure a few control points. In the long run, however, what matters is whether your system will be perceived as “open”.

10 thoughts on “From language to platform…

  1. Interesting post. What about advertising and other market strategy? Will Android conquer the mobile market? It seems unlikely that the iPhone will ever fade like Pascal has.

    1. To Robert: you are right: there are many other ways to influence the market. The point is about the arguments developers apparently care about.

      I don’t have a crystal ball. It does indeed seem unlikely that the iPhone will fade, but then, there was a time when Apple was the big guy in town and Microsoft the runner up. There was a time when Microsoft dominated the desktop so completely that nobody would have bet on VMware or Google to become threats. Also, Apple is much smarter these days than they once were.

  2. I wish I could agree with this post, because as a programmer I do value openness and standards. But I believe that when it comes to tools and environments, programmers also value:
    – easy of use: Microsoft put a lot of effort in developer-friendly tools; and I think that a while back, Unix was more developer-friendly than its counterparts
    – popularity: a platform with more users means more potential sales; a platform with more developers means skills can be reused in other companies

    Was C really more “open” than Pascal? I don’t think so, and I think BMK just preferred a lower-level language, and one that was easier to implement because it was simpler. It was also probably easier to circumvent the lack of compiler optimizations with clever tricks (eg. Duff’s device), since C is really born as a kind of portable assembler.

    Was Windows more “open” than MacOS? I certainly don’t think so, only easier to develop for, and available on cheaper hence more popular machines. Wasn’t X more open than all of them? But it was only available on expensive workstations.

    Was Java open in any way? Certainly not, given how Sun could sue others on their VM implementations for trademark and patent infringement. Even long before the Oracle merger, they were very protective of their IP. But it was rather well documented, rather portable, not too new or exotic in its concepts.

    I think that on average, programmers just want “good enough” tools: not the best, not the most open, just good enough to do more in less time for more people.

    1. Foo,

      You are making good points and asking good questions. In all cases, we are talking about perception, so it’s shades of gray, not black and white.

      C was seen as less restrictive than Pascal. At least, that’s certainly Kernighan’s argument. Let me quote: “Comparing C and Pascal is rather like comparing a Learjet to a Piper Cub – one is meant for getting something done while the other is meant for learning“. In other word, the crux of K’s argument is that Pascal puts unnecessary restrictions on what the programmer can do. I’m not debating whether C was really more open than Pascal, rather whether it was perceived as such, whether C proponents made the argument or not.

      Similarly, Windows was perceived as more open because it ran on more hardware. Also, technologies such as DDE or OLE were designed (at least on the surface) to integrate third-party stuff as if it was Microsoft’s own.

      Regarding Java, it’s again a matter of perception. Sun always positioned Java as the open alternative to Microsoft. “Write once, run anywhere“, …

      Your “good enough” argument matches my own perception. But my question is how several “good enough” solutions stack up. Does the one with the best features or slickest user experience win? It looks like history proves this does not happen.

      1. I agree with Foo on this.

        I think this is a case of “History written by the Victorious”.

        Microsoft won the personal computer OS competition pretty decisively, and attributed it to “openness” (in this case of the target hardware platform) — so lots of people bought that as a deciding factor.

        Linux and some free BSD variants won important victories in the server market and attributed those victories (e.g., Hotmail farms, Google servers, etc.) to “openness” — so lots of people bought the argument and decided “open source” is the root of success.

        Sun touted Java as “open” because it was OS-independent and got enough success to cause quite a few people to buy their argument (but lately I sense much more skepticism, and perhaps not coincidentally, Sun is no longer perceived as being a “victor”).

        In all these cases (and more) “open” means something different. Also in all those cases, “open” means to their proponent “we do not wish to make money on the aspect that is actually open, and it’s convenient to diminish the income opportunities of competitors with a different business model”. E.g., Microsoft wasn’t interested in selling PC hardware, the open-source/free-software movements weren’t interested in selling shink-wrap software (in many cases the business model is to sell a “service” instead), Sun wasn’t interested in making money on operating systems, and Apple isn’t interested in selling web browsers.

      2. Why would Microsoft even need to talk about openness? Why did “Open” become such a catch phrase in our industry (Open Source, Open Office, Open VMS, Open Software Foundation, the list goes on…)? You don’t hear about cars being “open”…

        Just a guess, but since in general you tend to advertise what you are weak at, maybe software feels the urge to present itself as “open” because it is such a closed world, with closed, complex, arcane interfaces (both for users and developers). Just a thought.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s