okay first:

Things I am concerned about

Things I like and/or would like to see more of

I like the idea of serverless
…with the reservation that I can still have a server if I want one.
CGI was actually pretty great
Sure it's slow and doesn't scale, but you can make literally anything into a CGI program. I have made CGI scripts in bash in a pinch.
Hackerly languages are important
There is something to be said for being able to just write code in any old text editor and immediately run it, and not have to fire up an IDE and create a new solution every time you want to do something.
Web adapter frameworks are the new CGI
Libraries like Rack, Plack, Jack, Clack, and WSGI are not a protocol but they are a pattern: a CGI-like interface using language primitives on one side, and a set of plugins on the other to connect it to the various server(less) interfaces.
Microservices are a sensible way to organize Web functionality…
…but you shouldn't need a whole big Docker/Kubernetes orchestration apparatus to get started—unless you really do need it.
Transformation pipelines are good
When you frame all content coming in and out of an information system as a partially-computed product potentially subject to subsequent transformation, it gives you clear articulation points for both the development and deployment of the system.
XML is actually okay…
…if you aren't rolling your own vocabularies, and don't have to generate it by hand. More on this elsewhere.
RDF is underutilized and generally poorly understood by the web development community
RDF elegantly solves at least one very important practical problem that makes it absolutely worth learning and putting up with.
JSON-LD is excellent
JSON-LD is a way to smuggle RDF into vanilla Web applications where the data consumers don't have to know or care that they are using RDF.
Content negotiation is a totally forgotten art
An information resource is a mapping from a set of one or more identifiers to a set of one or more representations, though you rarely see resources with more than one representation.
The Fielding dissertation—the REST paper—is much more profound than generally acknowledged
People tend to stop reading after the Medium-post gloss about API endpoint addressing and the use of HTTP verbs, but I promise you there is a whole theory in there.

What I'm trying to do

I'm trying to create an environment where you can mix and match any number of programming languages on any old infrastructure, which itself can be blended however you like, to compose any scale of Web-based information system. I'm trying to reassert protocol over product in order to make systems that can do things the current ones can't.

Before you can do anything on the Web of 2020, you have to pick a stack. Over a long enough timeline, you will eventually encounter something your stack can't do. Or some other stack will do something better. Or you will have a disagreement with some member of your stack. Judging by the rate of churn in the ecosystem, this seems to happen every year or two. But I'm interested in making Web-based systems that ultimately last decades, and you don't get those by dumping your stack every couple of years. Long-lived systems are long-lived because they can be repaired, either from a technical standpoint or in terms of the relationships that sustain them. What this points to is a Web ecosystem where, within a single organization, multiple stacks can integrate into a single coherent experience.

How do we achieve this? By defining a new set of constraints, defining new categories of development target, and defining the ways the parts and pieces interact with each other.

define a set of constraints, a policy/protocol embodied in a minimal implementation of connective tissue which can be ported to other languages

all the interfacing happens in http unless it's within the same process then it can be straight function calls

First, We Have To Talk About Resources

A diagram depicting an information resource

Information resources relate identifiers to representations.

An information resource is a relation between one or more identifiers and one or more representations.

Whatever result you get from fetching or dereferencing a resource can be said to be its current representational state. The simplest kind of information resource is a file, with one identifier and one representation. A file is functionally inert: its representational state stays put until some procedure comes along and overwrites or deletes it.

The business of Web development ultimately reduces to making collections of resources that do more than files do, though the extent to which this is consciously acknowledged is unclear. I argue, after Fielding and others, that the resource should be the focal point of Web development; that we should always be talking about our work in terms of information resources and the manipulation of their representational states. This is a fiction, to be sure, but it is an incredibly useful one.

Atoms and Molecules

It is much more common for development to be focused on the page or section, rather than the resource. Pages, in practice, are almost always composite: they contain substructures which, if not first-class resources, could be conceived that way. Pages, then, are like molecules, yoking together elementary resources in a particular configuration. Often these substructures are defined as reusable components, but these tend to be fragmentary, and/or not directly addressable, and/or not meant to stand on their own. If we designed these components to be intact, atomic resources, then we can have settle on one interface for page composition: URLs and HTTP.

Other Helpful Dichotomies

Opaque vs. Transparent Resources

The first dichotomy concerns the way the system treats a resource, the extent to which the system can see into it.

A resource is opaque if it presents to the system primarily as a blob of data. An opaque resource can be said to have a single authoritative representation, and you can't guarantee other representations will be equivalent.

A transparent resource, by contrast, doesn't have an authoritative representation other than what is internal to a database or live memory. The system can see the entire resource, and can—and does—address every individual part of it. As such, there is no authoritative string of bytes that represents a transparent resource, because all such representations have to be generated.

Sampled vs. Computed Resources

The second dichotomy concerns where the resource came from.

A resource is sampled if a representation of it entered the system as-is. If you delete a sampled resource you have to go back to wherever you got it from and get it again, which you may not be able to do.

A resource is computed if it is generated by some process under management by the system. If you delete a computed resource, you should be able to recompute it, provided you still have all its inputs—including the process that computed it in the first place.

The Parts of the System

Website from the side

The essential parts of the prototypical system as imagined.

this would exist in a substrate

Content

Documents, Components, and Assets

everything that has a canonical representation as a string of bytes

(Meta)Data

everything that has a canonical representation in memory

Business Logic

also known as application logic, these are procedures that either instrument or automate some specific business process.

Storage

two essential components but not exhaustive

Content-Addressable Store

both for long-term storage and for cache

Linked Data Graph

doesn't matter if this is virtual or federated; point is you can sequester it from the rest of the system

Transforms

Content Transforms

effectively change the meaning of the message

examples: restrict, project, union, intersect, aggregate

Presentation Transforms

do not change the meaning of the content but change some other aspect

Access Control

there are tons of third-party

Authentication

Authorization

Other Components

Address Resolver

Asynchronous Job Queue

there are lots of message queue products

Gateway

this is a protected client that can go out over the network and fetch and/or manipulate resources

Third-Party Data Services

Your Users