https://futureofcoding.org/ logo
#thinking-together
Title
# thinking-together
o

Orion Reed

06/17/2022, 3:14 PM
I’m trying to think of a qualifier term for a certain kind of mutability. Mutability as a language construct is well trodden ground, but there’s another kind of mutability that exists at a systems level which isn’t tied to language design or specific language. Things like filenames would fit in this category. These are often to do with naming but there are many cases where the mutating thing is structural, such as filesystem hierarchies, pointers to digital objects (latest X, agreed-upon version of Y, etc). This kind of mutability appears more varied and common than the concept in PL, but I don’t want to refer to it as just “mutability” because this could be misleading. “State” is not a sufficient notion either, as this is just referring to the value of a thing in relation to time. I’m doing some work on “Mutability as Governance” which argues that mutability (at least the kind I refer to here) is best understood as a digital governance problem, as it necessarily involves coordination between multiple systems in ways that mutability within a single language does not. Even pure functional languages interact with a stateful environment and require mutability in this sense (e.g. naming and structuring of source files) Terms like systemic/emergent mutability, inter-systemic mutability, or multi-party mutability have popped up but I don’t know if these really do a good job.
p

Personal Dynamic Media

06/17/2022, 3:50 PM
Shared persistent state?
c

Chris Knott

06/17/2022, 4:07 PM
Mutable identifier?
t

Tom Larkworthy

06/17/2022, 4:11 PM
resources? I think of them as abstract representations of something external and real. They are mutable, but in a limited way and they can change behind your back
p

Personal Dynamic Media

06/17/2022, 4:31 PM
Environment? Outside world?
i

Ivan Lugo

06/17/2022, 6:30 PM
I might vote for environment actually, or a very very close synonym to it. That word bakes into itself the notion of an area or idea space in which entities interact, and such interactions are by definition mutations on the environment and sometimes themselves.
“Environmental mutations” compared to “localized mutations”
o

Orion Reed

06/17/2022, 6:46 PM
Environment feels close in a sense. I think when referring to the ‘space’ in which these mutations occur it's entirely the right term. But what about the things that are being mutated in the environment? It's hard to find terms when many of these words are already overloaded. “Shared state” isn't far off in meaning but points to the thing being shared rather than the shared role of mutating that state.
I do like “environmental mutations” but I fear this would be misinterpreted outside of communities like this one. How does “shared/mutations/mutability” sound?
p

Personal Dynamic Media

06/17/2022, 7:01 PM
Environmental state?
i

Ivan Lugo

06/17/2022, 7:10 PM
Environment entities / environment mutations / entity mutations seems like a cool trifecta. The problem with language is that it's always contextual, there's no way to perfectly communicate an intended meaning without it, or to keep it from being misunderstood in a different context… Unless you're a heptopod. And if you are a heptopod like I now believe you to be, please teach me your alien circle language.
👍 1
o

Orion Reed

06/17/2022, 7:14 PM
@Ivan Lugo literally watched Arrival again last night 😄
🚀 1
1
i

Ivan Lugo

06/17/2022, 7:20 PM
There's no heptopod emoji and this saddens me.
🦶🦶🦶🦶🦶🦶🦶doesn't count.
a

Alex Cruise

06/17/2022, 7:32 PM
Organization is often orthogonal to content, e.g. think of pruning entities from one place in a hierarchy and grafting them to another… Sometimes you don’t want to call that a change in the entity itself, but rather in whatever you’re using to represent the hierarchy
We don’t usually think about organization in such abstract terms, but there’s another layer here: some kinds of organization need to be persistent but have no semantic weight, e.g. moving stuff around on a 2D canvas so they’re easier to understand
OTOH if you’re putting stuff in folders, or adding/removing tags, you’re pretty likely to want to write access control policies that depend on those organizational concepts
Somewhere in the middle you can have abstract containers that have a natural spatial representation, like nesting collapsible boxes
Often those containers evolve to have semantic weight, not just organizational utility, e.g. setting defaults/overrides in a parent context that are inherited by descendants
Tying it back to governance, there’s definitely some complexity for authorization of organizational changes. It’s reasonable for us to follow the Unix pattern, and say that moving an entity from
/a/b
to
/b/c
should require read+traverse permissions on
/a
,
/b
,
/a/b
and
/b/c
, and write on
/a/b
(to remove a child) and
/b/c
(to add a child) but if the entity itself is merely being moved, not being modified, should we also require that the user have some permission scoped to the entity itself? My intuition says yes, but it doesn’t fit cleanly into the Unix pattern. 😅
k

Konrad Hinsen

06/17/2022, 8:16 PM
Social shared state? Consensus mutability? It seems to me that the key point is that mutation requires an agreement between humans (or groups), rather than an algorithmic effect as in programming languages.
amiga tick 1
a

Andrew F

06/17/2022, 9:21 PM
I'm not sure what's being discussed. Are we talking about "mutating" organizational structures, e.g. renaming files, changing directory structure and analogous operations in non-unix environments? Inner tree modifications as opposed to leaves? It sounds like you're trying to name something more general than that. Ed: "access path mutability"? Fwiw I think of these kind of access schemas as "ontologies", so "ontological mutability" makes sense to me, but possibly only to me...
a

Alex Cruise

06/17/2022, 9:22 PM
Another enterprisey angle here: the users who are authorized to edit/author things are often not authorized to commit them; there needs to be an approval workflow, where an admin shows up and approves the proposed change so it can go live. This points to a need for versioning, so users can save their work in progress…
It’s tempting to pre-disqualify yourself by saying “oh, my thing isn’t for big companies” but the products people actually use and like often end up getting adopted inside companies. People start out sharing a single account, then they want to have a team of people who can author and collaborate independently…
You don’t need to invest in all the enterprisey stuff early, but it’s often a good idea to keep it in mind 😅
a

Andrew F

06/17/2022, 9:31 PM
(re authorization: I'd say that points more directly toward having patches/diffs as a first-class concept. I'm not even sure if that's a tangent or the heart of the question, but it's a pretty broadly applicable idea so I'm pretty confident putting it forward despite not knowing exactly what layer of abstraction we're talking about.)
a

Alex Cruise

06/17/2022, 9:33 PM
There was at least one thread about collaborative editing recently too, It’s Complicated™
💯 1
So many dimensions! • Would this proposed change be valid if executed in isolation? • Is the party proposing this change authorized to do so? If so, when/how should it be merged/committed? • Does this proposed change conflict with any others that are ongoing? Can those conflicts be resolved automatically in a way that would satisfy most users? • If this proposal fails, whether due to a validation problem, an edit conflict, or an authorization failure, does the user have to redo a lot of work? • Should this proposed change, once committed, be scheduled to go live at a particular time? Are there parallel changes in collaborating components that need to be rolled out in a coordinated way? — this sounds like I’m talking about code changes, but it applies to end user configurations, if the product is something like a data platform 😅
n

Nick Smith

06/18/2022, 12:09 AM
@Orion Reed Personally I'm not sure that the distinction you propose between "mutation of variables" and "mutation of files/metadata" is "real". Or said another way: I'm not sure that there is any essential distinction between the state of a program and the state of a file system. My personal suspicion is that this distinction has been entirely fabricated by humans, and in an alternate timeline we could have had a unified data model that spans programming languages, operating systems, and distributed systems. If this suspicion is true, then it implies you're trying to come up with two names for a singular concept: mutation/state transition.
o

Orion Reed

06/19/2022, 12:28 PM
@Nick Smith I agree it is an informal distinction, and I would love to see that alternate timeline! My reasons for finding a qualifier are to better communicate the connection between mutability and governance, which I’ve found to be more clear when constraining the examples to ones where coordination among multiple systems/agents/people/programs is clearly necessary, even though ultimately I think my argument holds for all forms of mutation in sometimes less trivial ways.
👍 1
a

Andrew F

06/19/2022, 7:28 PM
Perhaps "shared-metadata mutability". Although I think authorization is going to be a critical corollary of whatever definition you come up with, if it's not actually part of it. In a single-node/single-actor context, the closest thing to authorization is the type system, so you can get away with ignoring it. It's in the multi-actor context where you start having "governance" problems (if I'm understanding your usage correctly), and it's also right about where authorization starts sneaking (almost subconsciously) into our concept of "changing things"; that is, authorization starts to play a role at just about the same place on the scale axis of mutability as the (beginning of) the interval on that axis that you're trying to name. Again, all assuming that I'm on the same page as you, which I'm still not 100% sure of...
p

Personal Dynamic Media

06/19/2022, 8:09 PM
I think things like file contents are just data, not metadata. Shared-data mutability?
a

Andrew F

06/19/2022, 8:16 PM
Correct, we're mostly ignoring file contents. That's much more garden-variety mutability.
n

Nick Smith

06/19/2022, 11:50 PM
@Orion Reed That makes sense to me. If you merely want to make a distinction between "single agent" mutation and "distributed" mutation, then you might like one of these dichotomies: • [local/solitary] mutation <--> [coordinated/distributed] mutation • [local/solitary] state transition <--> [coordinated/distributed] state transition Or to be even more succinct: the term "coordination" (used standalone_)_ is essentially a synonym for "distributed state transition". The sole purpose of coordination is to get multiple agents to agree on some kind of "state", at which point they all transition their models of the world to reflect that state. (The term "consensus" is also used for this, but it refers to the outcome moreso than the process.) If you want to refer to situations where there is a power imbalance, e.g. the operating system has the privilege to store persistent state, but the user does not, these terms won't cover it. You might want to use terms like "ownership", "privilege", and "permissions". Coordination becomes "requesting".
k

Konrad Hinsen

06/20/2022, 7:45 AM
Wondering if the word "control" (as used in cybernetics) could be useful. Mutability is about control over a resource. And distributed control is where governance comes in.
amiga tick 1
d

Daniel Krasner

06/20/2022, 9:49 AM
@Orion Reed my guess is you could find suitable vocab/metaphor in the gene transfer world, horizontal, epigenetic etc For example, competitive as well as cooperative/symbiotic exchanges with the mycelium world, internal as well as with the surrounding environment/systems, provide a pretty rich ground for thinking about mutation, mutability and state.
🧠 2
t

Tim Lipp

07/22/2022, 8:12 PM
Would the language from the world of music be helpful? I don't think it's as dynamic as Daniel's proposal of the gene transfer world, but could make the experience more relatable from a human perspective. Things like cadence and lyricism come to mind.
2 Views