We’ve had “Cloudy” computing for a while now. Before that we had client-server and even mainframe computing. To stick with the meteorological metaphor perhaps we can think of those computing eras as our “Rainy” (we were covered by the services of our umbrella ¿?) and “Snowy” (we hunkering down in the mainframe and saw the world through our little windowed terminals ¿?) epochs… yeah; kind of a stretch. None the less I propose we’re entering a new era. An era of “Clear” computing. A time when you don’t know, and don’t care, where something is physically working for you. A time when the idea of “installing” programs is considered old-fashioned. And where everyone on the sky network can lend their resources to the clouds if they want to.
A better metaphor for all this might be one of phase change; we’ve gone from “solid” computing in the form of computation being tightly bound to the hardware; to “liquid” computing in the form of logic running on virtualized hardware and common frameworks with interpreted languages. To “gas” computing in the form of ephemeral containerized microservices running over networks and machines with common protocols and interfaces.
To carry the metaphor forward we can see a new phase of computing; “plasma” computing. A phase where ephemeral containers materialize, run, and evaporate on a vast peer-to-peer network of computational nodes in data centers and pockets. Where globally addressable immutable bit collections are the cells you pull from the ecosystem hives to build your particular colony of workers doing your bidding. Any bits close to you are only there due to nanosecond latency requirements. Otherwise they’re only a hyperlinked millisecond away. It’s a phase where the network itself is a part of the computational node’s memory hierarchy. And where your spare CPU cycles might run someone else’s containerized workload; for a quality-of-service credit of course.
To facilitate such a systems architecture we’ll need high-bandwidth low latency network connections. We’ll need completely portable execution containers. We’ll need protocol based interface languages running on frameworks that truly span the spectrum of hardware. Fundamentally we’ll need what we need to make things that function more in terms of streaming frames of multi-path parallel communication rather than the stilted unidirectional sending and receiving of messages in a serial conversation.
Some of these bits have yet to arrive, and we’ve got some bits of the bits for some of the others. For connectivity 5G networks are coming (as soon as we’re certain they won’t cook our brains and DNA). For portable computation we’ve got orchestrated and composable microservice containers running in the cloud. But you can’t yet pull down a container, run it on your phone, and have it paint your screen with all its applied usefulness. And you can’t yet tie together chunks of packaged logical functionality into web assemblies that compose in your hand. But technically it’s totally doable once all the right links are in place.
To date the only truly portable UI standard has turned out to be the document object model from last millennium’s web-tech stack (HTML, CSS & JS) but we know we can do better. Our paged scripts have already given way to the shimmering screen, we just have yet to improved our screenwriting. The Reaction to such a state is to try and wrap up all the documented nuances of the library and render a way out of the production. Or to offer up a way to clip off pieces of the web into more composable “webcomponents”. Or to just entirely re-imagine the GUI generation methodology within some idiosyncratic mental space of our own device.
Whatever the current state the good news seems to be that within a community any platform bound framework islands (like iOS and Android in the mobile space or AWS, GCP, and Azure in the cloud space) will only prompt the development of bridging frameworks like Flutter, React Native, and Xamarin by those that want to get off those islands and build across the divides. That or everybody will just agree to implement defacto standards like Amazon’s S3 and EC2 APIs until some standards body comes along to confirm that we all got in the same boat and make it official with a christening.
The current need is for the big platform elevators who make Android, iOS, WinOS, macOS to join Linux and fully embrace the standards that already exist; POSIX, OpenGL, SVG and DOM. And for any technological framework that wants to enter the community to be a good global citizen and auto generate the codification of its tech into the language agnostic landscape; gRPC is a great example of that done right.
The future will ultimately stand upon the platforms that built bridges; the truly cross-platform platforms. Docker for example runs on server farms and Raspberry Pies in the field. And Kubernetes navigates across every cloud out there. We may never get to a human interface layer more ubiquitous than the browser based web stack for doing things like drawing a button to capture a click or styling text on an arbitrary screen. So with that strong possibility it’s probably a safe bet that the cross-platform frameworks will ultimately wrap up the myriad interfaces and protocols of the iOS-win-lin-mac-droids into neat little packages that flutter functionally all around the network enabling you to execute your functionalized thoughts anywhere they’re needed or wanted.
With this forthcoming clear computing “Web 4.0” platform I dream of the day when hundreds of imperative, platform specific commands, give way to terse declarative statements that can span systems. A day when designing with patterns, interfaces, and generically defined algorithms is as easy as specifying behaviors with simplific and knowledgeable English. When codifying gets out of the way of conceptualizing, and software development feels more organic than mechanical. When we write to our machines with declaratives and they scribe out the required imperatives.
How might we speak to our machines in the future? Well Java has brewed for a long time but it kind of got lost within its own verbosity. C# is trying to see clear enough to go deep with .NETcore and Go wants to go there too but perhaps we’ll realize we’ve had a lingua franca all along in the form of C/C++. But that only with the help of an elite cadre of interpreting members of the scribe classes could regular non-geniuses get their thoughts to swiftly dart like pythons across the typescript-ed domains of the machine sea.
To unlock the truly amazing potential of the peer-to-peer Web 4.0 clear computing; that plasma state paradigm of computation which can supercharge our information technology world; that containerized microserving widget graph of gizmos tied together with hyperlinks and blockchains, we’ll need to solve the single hardest problem in computer science: Getting everybody writing on the same page when it comes to agreeing on how to name and declaratively do stuff.
We got really far with getting and putting things. And we can at least agree on what a button, a click, and a swipe are. But after that it goes downhill pretty fast. Reconciling how to work with things like “views”, “containers”, “activities”, “widgets”, “frames”, and “windows” may never be possible without the constrained namespaces of their platform specific imperative contexts. But if we can eventually find common declarative meanings with agreed upon semantics it could help us all communicate and execute our formalized thoughts so much better than we do today.
We all know what a pie chart is. So then tersely declaring such a thing to draw itself on the web or a watch with some addressable table of data without learning the imperative codifying details should be within the realm of possibility one would think. Perhaps we’ll never unlock the full richness of a particular platform without speaking its native dialect of “computer”. But if we’re provided by that platform with a native translator that can understand simple declarative English referencing a common data model or standard application model maybe that’s the next best thing. We’ll need all help we can get when it comes to talking with the sky and taking our dreams to the clouds.