the Javascript ecosystem is essentially a failed anarchist society (long) 

What it used to be:
- many early adopters were anarchists/communists/etc.
- a huge public commons of highly reusable, high-quality, collaboratively developed libraries on npm, built for the benefit of the public, not for profit
- high degree of interoperability between different people's work, no need for pointless busywork to redo the same work over and over again
- successful(!) 'community specs' designed through community consensus (Promises/A+, CommonJS, etc.), gaining near-universal adoption
- fundamentally different structures from other language ecosystems, both technical and social, to make this work

What went wrong:
- large influx of users from other ecosystems due to hype in startup circles, unfamiliar with the established practices and reasons why
- early adopters failed to effectively convey and explain the ideological basis
- corporate adoption and subsequent capture; increasing "business value", leading to corporate steering of many essential pieces of the ecosystem (language spec, Node.js, etc.)
- npm became npm inc., a for-profit corporation, eventually being acquired by Github due to its large userbase, placing control over the public commons and its namespace in private hands
- ideological basis was forgotten, early adopters eventually left for greener pastures, now an almost purely parasitic environment of people leeching off the commons without guarding its integrity or health
- community-consensus specs started being replaced by "official", by-decree-from-up-high language specs (CommonJS -> ESM, Promises/A+ -> ES Promises)
- widespread adoption of these "official" specs, even though they were in many ways worse, due to their "official" label and many people assuming that what a central authority says must be correct or better
- rapid increase in shiny, well-marketed new tooling that is not interoperable with the existing ecosystem at all, and frequently works less well
- more and more commercial/proprietary 'sidecar' services (eg. Snyk) that you are expected to use, sometimes replacing open initiatives
- now an ecosystem and public commons that is rotting in every aspect with no real hope for recovery

... we should probably learn from this?

the Javascript ecosystem is essentially a failed anarchist society (long) 

@joepie91

Intriguing.

Definitely sounds well worth learning from.

What can we do?

Follow

the Javascript ecosystem is essentially a failed anarchist society (long) 

@skaryzgik My main takeaways from this would probably boil down to:

1. Make cultural and social expectations *explicit*; be clear about what your values and goals are as a community, instead of expecting word-of-mouth to do the job. And I don't just mean "don't be a bigot", but also eg. the anti-capitalist values that are necessary to maintain a healthy public commons.

This also includes 'community consensus' values - for example, deliberately leaving space for living standards designed by the community, and carefully ensuring that any central steering organization doesn't interfere with those, and preferably *adopts* them.

2. Do not ever accept for-profit organizations as "full" members of the community. By definition, they will always place their own interests above those of the community, and they should be treated accordingly - as threats to defend against, not as contributors.

They might *use* the tech, but it should be clear that they're not really wanted in the community, and their needs and interests should be actively deprioritized compared to those of individuals and grassroots non-commercial organizations.

Any funding from them should be very carefully considered - money rarely comes without strings, even if they're not always written down, so this is something to be extremely cautious with.

3. *Particularly* dangerous - this is what killed npm - is the sentiment of "oh yeah, I know they're a business, but they just need to put food on the table, they're good people, it's not like it's Google".

Sounds reasonable on the face of it, but corporations exist independently from their founders, and will almost never follow their founders' ethics. In practice, npm was a VC-funded corporation that acted in the interests of its shareholders, and this meant that VCs controlled the fate of the public commons.

The same is true even for small for-profit companies. *Never* let the fate of your community rest on what is legally a for-profit company, no matter how nice and friendly the owners seem. If you must formally incorporate, at least make it a non-profit that is controlled solely by individuals, not by for-profit actors.

Granting control over any critical part of your ecosystem to a for-profit organization is not only unnecessary, it's also playing with fire.

4. Take concerns about the health of the ecosystem seriously, and make it an integral part of your culture to evaluate such concerns seriously whenever they are expressed. Don't default to "I'm sure it'll be fine" or "but can you *prove* that there is a problem".

Very often, a small handful of people will spot problems early, before they become obvious. Take those people seriously. They may not necessarily be *right*, but they're not crying wolf for no reason.

· · Web · 0 · 0 · 0
Sign in to participate in the conversation
Pixietown

Small server part of the pixie.town infrastructure. Registration is closed.