That's not really a "network effect", but more of an "activation potential barrier". If it cost almost nothing to migrate to a new system, then 5% better might be a good enough reason. If I'm going to do back-end setup, data migration and re-train myself and others, then, damn it, I demand a 500% improvement to show for it. :)
If you're going to attract new contributors to a system, having the toolset that everyone else uses is a huge win.
I've been at this long enough to have learned (somewhat) each of RCS, CVS, SVN hg, and git. In the beginning there were (mostly) just two: RCS and SCCS, and nobody used SCCS. With time, I've touched several others, had to wrap my head around them, as additional challenges to getting my primary job done, which generally involved solving problems in other domains (or learning other tool).
And ... some of that's knowledge which has stuck, some isn't. The time invested in learning is sunk cost, though there's the problem that it all leaves traces on your brain.
This is something that 20-somethings don't get: it's not learning things so much as unlearning. It's one thing to launch into a field with the hot new technology under your belt. I landed with some awarness of Unix when that was fairly unusual, and parlayed that and a set of tools for 25 years. During which I've not stood still...
... but the rate at which new tools are introduced, and having to sort out which actually will win is a considerable overhead. After a while it ... just gets kind of old. Especially since you realize that all of it is a constructed complexity, largely arbitrary.
How many operating systems (7, not counting Unix variants), shells (9), editors (10+), scripting languages (8), database implementations (7), firewall systems (4), webservers / application engines (6), mailservers (6), document markup languages (6+), etc., etc., etc., do you want to learn over your lifetime? Some are pretty cool. Others ... are just makework.
This spills over to larger highly integrated stuff which previous experience shows is almost always going to be a massive clusterfuck, of which I'll not mention systemd by name.
Which means you want to consider what projects you work on, where you work, etc. Google have a challenge in this regard with their NIH model -- work at Google long enough and you'll learn some really cool, advanced technology. Which nobody, anywhere else, uses. And, no, they're not the only ones. But they definitely come to mind.
The unlearning point is definitely true. After using CVS for many years, Arch and then git were conceptually difficult to get into, and I was an early adopter of both. Not because they are actually difficult, but because your years of understanding of "how version control works" simply doesn't map onto the new way of doing things.
The last few weeks, after using git for a decade now I guess, I had to use CVS to checkout and contribute some changes to a project still using CVS. Wow, was that painful! One does get used to the simplicty and features of git, and going backward to older tools makes one really appreciate what they give you.
> ... but the rate at which new tools are introduced, and having to sort out which actually will win is a considerable overhead. After a while it ... just gets kind of old. Especially since you realize that all of it is a constructed complexity, largely arbitrary.
One of the most important parts of my job as a sysadmin is the immediate sniff test on trendy technology of the week and being able to spot the obvious pain points early. Bitter experience, it's useful!
Quite. Though it's less the sniff tests and more the banishment from workplaces / sites / tools I use that get to be draining. Again: systemd. Which risks fucking over an entire massive (and otherwise highly useful) resource.
The systemd battle's a lost cause I think. Pity, 'cos upstart was a reasonable implementation of the concept and vastly superior to init shell scripts. At least it's not Windows Server.
I've become exceptionally leery of GUIs for anything remotely complex. Scripting provides the kick in the ass incentive not to arbitrarily utterly bollox interactions as countless millions of scripts would have to be rewritten. You end up with stuff like Sendmail compatible commands and switches for mailers long since the former's heyday (qmail a notable exception). Or SSH and rsh being largely compatible.
On the rare cases syntax does change people raise holy hell. It can kill tools. Especially if done more than once.
GUIs have none of these features and change capriciously.This tends to keep user proficiency at a low general level over time.