Tuesday, February 26, 2019

Linus Torvalds is wrong - PC no longer defines a platform

Hey, I can do these clickbait headlines too! Recently it has gotten media's attention that Linus is dismissive of ARM servers. The argument is roughly "Developers use X86 PCs, cross-platform development is painful, and therefor devs will use X86 servers, unless they get ARM PCs to play with".

This ignores the reality where majority of developers do cross-platform development every day. They develop on Mac and Windows PC's and deploy on Linux servers or mobile phones. The two biggest Linux success stories, cloud and Android, are built on cross-platform development. Yes, cross-platform development sucks. But it's just one of the many things that sucks in software development.

More importantly, the ship of "local dev enviroment" has long since sailed. Using Linus's other great innovation, git, developers push their code to a Microsoft server, which triggers a Rube Goldberg machine of software build, container assembly, unit tests, deployment to test environment and so on - all in cloud servers.

Yes, the ability to easily by a cheap whitebox PC from CompUSA was the important factor in making X86 dominate server space. But people get cheap servers from cloud now, and even that is getting out of fashion. Services like AWS lambda abstract the whole server away, and the instruction set becomes irrelevant. Which CPU and architecture will be used to run these "serverless" services is not going to depend on developers having Arm Linux Desktop PC's.

Of course there are still plenty of people like me who use Linux Desktop and run things locally. But in the big picture things are just going one way. The way where it gets easier to test things in your git-based CI loop rather than in local development setup.

But like Linus, I still do want to see an powerful PC-like Arm NUC or Laptop. One that could run mainline Linux kernel and offer a PC-like desktop experience. Not because ARM depends on it to succeed in server space (what it needs is out of scope for this blogpost) - but because PC's are useful in their own.

4 comments:

  1. From interviews, it sounds like Purism is thinking about that once they ship their ARM-based phone. Considering their distro atop their phone is set to be a standard glibc base (and the DE based on GNOME, I believe, or at least GTK), I wouldn't at all be surprised if they pulled it off, since it's almost literally a subset of their phone efforts then.

    ReplyDelete
  2. sure Purism can sell an ARM laptop, its not that we didn't have them in the past from various efforts - but will it be cheap and ubiquitous as Linus says is needed - probably not. 99% of customers have no idea that Purism even exists...

    ReplyDelete
    Replies
    1. Ubiquitous, surely not. Cheap, though? Perhaps! And in terms of people knowing about it, we're not talking all customers, just developers.

      Anyways I agree with the post here that it's not nearly as big of an issue as Linus says (particularly considering the rise of DevOps folks using Macs or Windows machines to develop for Linux servers), I was just responding to

      "But like Linus, I still do want to see an powerful PC-like Arm NUC or Laptop. One that could run mainline Linux kernel and offer a PC-like desktop experience. Not because ARM depends on it to succeed in server space (what it needs is out of scope for this blogpost) - but because PC's are useful in their own."

      And it seems quite possible that Purism could deliver *that* much.

      Delete
  3. No, Linus is exactly right. The x86/PC platform is pretty well defined. Do you see any NEC PC-98 systems any more? No, and there is nothing in the x86 space that is as different as they were. While ARM has no real platform at all comparable the IBM PC platform. (seems like they are trying to make such a thing for the server space, but I haven't seen evidence of it being in the wild yet, and then there is the question of if it will filter down to smaller devices)

    And it shows. I have an Odroid, and would like some more powerful ARM systems, but even aside from the difficulty of getting hardware with the feature set I want (and hopefully not costing 10x as much as a vaguely similar x86 system), the software compatibility is just not great.

    Sure, e.g. Debian has compiled program binaries for ARM, but getting a working kernel and base system on an ARM in the first place? Very tricky. Certainly nothing like the x86 experiance of making a boot USB drive, booting it and installing it. Usually you have to use the specific image from the manufacturer, not a generic Debian/RH/whatever ARM image. And then installing it is less like installing on a PC and a lot more like the error prone and frustrating experience of flashing a "firmware" onto a phone.

    ReplyDelete