6 ms·
Ah, the grand cycle of layering and integration. You build a machine that does a thing, modify it to do another, and another, and another, until eventually some
by erikpukinskis 10y ago
Ah, the grand cycle of layering and integration. You build a machine that does a thing, modify it to do another, and another, and another, until eventually someone says
We could have a layer that did all of this!
The layer is introduced, applications are rewritten to target the layer, and people slowly lose touch with what the world looks like beneath The Interface.
And some things that should not have been forgotten were lost. History became legend. Legend became myth.
As people target The Interface, it grows into a more and more general purpose machine. Layers of indirection build up. Once simple tasks must propagate up and down a big stack.
Until one day, someone stumbles across the layer beneath. Gosh, the underlying system does 99% of what we need, out of the box. Why do we need this layer at all? We can do most of what we need with a couple single purpose tools. And the rest of the complexity can be taken up by the application layer. I don't mind doing a little more configuration there if I can get a huge performance and complexity win.
And the developers, frustrated with how big and bloated their layers have been feeling, flock to this new simple tool, and they port their applications, with a little extra boilerplate and big complexity wins. And then they port another, and another. Until someone realizes
We could have a layer that did all of this!
And it might seem pointless, when I write it up in this snarky way, but it absolutely is not. This is the process by which we discover the fundamental building blocks of software. Each time we add a layer, and each time we take one away, we learn something new about what information is. I love it.
- dfischer 10y agoWell damn said sir. I was waiting for a sarcastic jaded snarky ending but you turned it into the essence of technology. Kudos. This is exactly it. :)
- mycall 10y agoAll that complexity is entropy, information's villain.
- deleted 10y ago[deleted]
- candiodari 10y agoI don't think that's really the issue with Android/IOS operating systems. The issue is not that they can't be general purpose operating systems, it's that they aren't used that way. People seem to want applications that do one or two things at most and cost 1$ that they have to re-buy every 2 months. That does not result in people writing software that is very useful for a large part of a particular field, but takes 2-3 years to write. But the fault is in the app store and the lemon market it creates, not in the operating system.
- Xorlev 10y agoWhile I don't disagree and I expected an article on Android/iOS, did you read the article? It specifically talks about server OSes and Docker.
- urza 10y agoCould you please give some examples of "removing layers"? I have feeling like we only add new layers of abstraction on top, but removing them?
- bartwe 10y agoThe Vulkan api comes to mind
- falcolas 10y agoThat so many high performance programs are starting to manage networking at the interface layer speaks of this phenomenon to me.
- grive 10y agoThe DPDK and all the kernel bypass in networking is another example.
- erichocean 10y agoTake a look at ScyllaDB, and the design behind Seastar (a companion project). It also runs on OSv, which is pretty minimal.
- runeks 10y agoHiding something behind a layer of abstraction is, essentially, removing something from view. So, from one point of view, you're adding another layer (of abstraction), and from another point of view you're removing unnecessary detail. Same thing.
- erikpukinskis 10y agoRails begat Sinatra Microkernels ChromeOS MVC frameworks begat Vue.js and similar Virtual machines to containers
- binocarlos 10y agoYou tell a story very well :-)
- pjc50 10y agoIn the Vernor Vinge books, where there is a multi-thousand-year spacefaring civilisation, there is the profession of "software archaeologist" for this digging through the layers.
- thomasahle 10y ago> each time we take one away, we learn something new about what information is. But isn't part of the cycle, that we constantly forget what we just did?