Extending the compositional nature of programming to digital social coordination environments
[[ 2021-12-21 ]] #social-organism #social-coordination #programming #web3 #holochain
As Paul Chiusano writes in his infamous essay, the point of programming should be to create composable programming environments:
This essay is a call to cast aside the broken machine metaphor and ultimately end the tyranny of applications. Applications can and ultimately should be replaced by programming environments, explicitly recognized as such, in which the user interactively creates, executes, inspects and composes programs.
[…] the goal of software should not be to build machines, but to build pleasing, accessible programming environments that delight and inspire our users to creation while facilitating the sharing and reuse of programming ideas! Paul Chiusano: The future of software, the end of apps, and why UX designers should care about type theory
As a developer, I get to experience first hand the joy of working with composable programming environments. I get to ideate and conceptualize program functionality and have a nearly limitless reservoir of libraries that I can combine together into precisely what I want.
Why can’t non-programmers have similar experiences? Why can’t people who want to activate some online community for a specific purpose compose a bunch of easy to use libraries/modules (like calendars, event scheduling, decision making, chat, project management, collaborative financing, resource sharing, and so on)?
It seems like an arbitrary distinction to limit such programming experiences to coders. Perhaps the constraint is an emergent consequence of our socio-economic matrix that drives software development. From a technical perspective, though, I don’t think there are any significant barriers to creating such environments. In fact, this seems to be exactly what Neighbourhoods is attempting to create.
App development and deployment could be occurring and much smaller and more contextual scales ( [[ holochain enables applications to be designed around the social context in which they will be used rather than being monolithic platforms that groups need to conform to ]]). Community members themselves provide the distributed computing infrastructure for the programs to run on. In this sense, the software lifecycle of modern platforms and dev-ops could shift to vertically integrated, community-centric coordination environments.