Code ecosystems, their supporting communities and "The Round River"

There is an expanding and beneficial discussion happening among the maintainers, consumers, and interested bystanders around open source projects that borrows verbiage coined in the study of ecology and conservationism. It seems to me that this is readily apparent in the NodeJS and NPM projects.

"Harmony with land is like harmony with a friend; you cannot cherish his right hand and chop off his left."

So NodeJS and NPM are part of the same whole. NodeJS is the particular species of JavaScript-based organism that interests us here, and NPM, it's package management system, really represents the entire surrounding ecosystem. In fact it is becoming more and more common, in many disciplines, to now replace the term "system" with "ecosystem", but what do we really mean when we make this perhaps seemingly innocuous switch in terms?

The study of an ecosystem is very much the study of individual microsystems or constituents of the overall system. It is "learning more and more about less and less", or to put it another way, it is about specialization. Here we can see an analogy in NPM, where we typically see very specialized (and sometimes very small) modules suited to a specific task or domain. So describing NPM as an ecosystem does in fact seem accurate.

If an NPM module represents a narrow, potentially deep "slice" of an application, or more broadly, of the current NodeJS whole, inclusive of all the applications it allows us to build, what can we do to strengthen our terms, and our understanding, around the breadth of work and communication around both specific modules and their interconnection through APIs?

Here is where another term rightfully finds its way into our vocabulary: ecology, an "attempt to convert our collective knowledge of biotic materials into a collective wisdom of biotic navigation", and fills a very real need for getting on with the conversation. So we find our way to ecology as a way to describe the communities of interconnected individuals within projects in the broader NodeJS environment. In order to function within the ecology of which we are a part, we must learn "more and more about the whole biotic landscape".

It would seem to suggest that biotic constituents within an ecosystem as it traditionally applies to the environmental sciences, and their interconnectedness as the broader concept of ecology, maps helpfully to the code constituents (NPM modules) as well as the human individuals that function in, around, and about code.

At a certain point, games of language become silly, but this mapping has helped me navigate the biotic/code landscape of which I am a part, and I hope it is helpful to one or some other of my fellow constituents!


*Sections in quotes taken from "The Round River", by Aldo Leopold