Apologies for just dropping yet another perspective and self-promo in here without reference to what's already been written, but... 😄
... my own project (the
http://Object.Network ) has two core attributes: Declarativeness and Decentralisation which I think correspond to these two elements in the OP (FoC and Distributed). Both capital-"D"s derive from a single deeper concept: the Big Inversion 😮
That basically entails turning the current, pervasive "code-on-the-outside-data-on-the-inside" programming model inside out: thus "data-on-the-outside-code-on-the-inside". This means data is freed from the traps of Imperative, Service-Oriented architectures.
And the opposite of an Imperative, Service architecture? A Declarative, Decentralised architecture, of course!
In this programming model, you see and interact with data first - before functions, like in a spreadsheet; it has "internal behaviour" (Declarative). Imperative is "how over what"; Declarative is "what over how" - the detailed mechanisms of behaviour are hidden behind a declaration - i.e., more data - of the required behaviour. It's basically like a virtual world of data - if you enter Minecraft, you see stuff before you see its behaviour - things are internally-animated.
In the Object Network, all our stuff is sewn together into a kind of Metaverse, using links between data chunks. Data is held locally (Decentralised), so that we have full control over it, instead of imperative data-wrapping, techie programs and Big Tech services.