Hacker News new | past | comments | ask | show | jobs | submit login
Technology Holy Wars Are Coordination Problems (gwern.net)
88 points by Nicholas_Kross on July 7, 2020 | hide | past | favorite | 39 comments



The platform thing is an interesting take. If you're invested in a platform, you really really don't want it to turn out that it's not the winner. Then you have to throw away all the sunk cost and learn a new platform - suddenly all your investment counts for nothing. So you defend it - out of fear that your investment might be irrelevant.

I read a few years ago "under all anger is fear". I'm not sure if that's completely true (hanger is a thing), but I think it's right most of the time. I've found it very useful when I feel angry about anything to take a step back and think about what I'm afraid of - that's usually the thing that really needs to be addressed.


I'm pretty sure people get angry about being taken advantage of and treated unfairly, I suppose that can also be ascribed to fear but I think you have to do too many rhetorical tricks to make it work.


It's not much of a rhetorical trick - anger for unfair treatment is driven by a fear of loss of power, status and control.


yeah if someone is passed over at work for a promotion they've earned making the fear argument is possible (that they fear they will lose status as you say, or maybe get fired) - but really at that point it's in the past. Fear is a future directed emotion.

It seems to me that the anger is not driven by fear of loss of power it is driven in a case like this by envy of the reward one lost out on. by envy of lack of access to more power.

I am in a very unfair relationship right now and my anger is not fear driven, as in what will happen in the future, it is generally anger at what is the current situation. Thoughts of - If they had not done X I would not be in condition Y.

To turn that into a fear situation you have to ignore what I say is the cause of my anger, then postulate something like "he fears condition Y being permanent, or condition Y turning into condition Z" when condition Y should provide ample grounds.

Actually the more I think of this fear thing as the root of anger the more messed up it seems to me, because it seems structured around people never caring about their current or past situations but only about the future, and I don't think real people act like that.

somewhat facetiously - Are you sure this fear theory wasn't created by an economist?


I think anger is a human response to unfairness, its function is signaling and calling attention to a willingness to escalate.

Animals have similar emotions. Bruce Shneier has written a great book “liars and outliers”, which talks about how we maintain the trust society needs to operate.

Studies it cites have shown that people are willing to take a loss to punish others who they perceive are cheating and breaking rules, especially if they do it all the time.

Anger is often the response by those affected, and to a lesser extent those who enforce norms, to systematic rule breaking, and accomplishes the two things:

1) Unmistakably calling attention to the issue and oneself

2) Signaling a willingness to escalate to mutual loss if need be, if the behavior persists

So, to say it’s driven by fear is too reductionist! It serves a major function in human interactions. Consider Steve Jobs’ reaction when Google was going to go ahead with the Android.

Finally, if you want to avoid anger in your own relationships, the key is to hold people to a lower standard and expect less of them as ethical and rational human beings. People find it hard to do because, to stop fighting with someone, you have to greatly lower your respect them in certain areas. But the funny thing is, they will often appreciate you for doing this, and never wanted that respect! Not really, anyway.


As to relationships, consider that sometimes anger comes from others' expectations of you. That isn't something easily changed, and accepting their demanding ways may just enable bad behavior.


If you take food away from a dog, it gets angry. It's not afraid of losing something else; it's pissed off and willing to fight because it disliked what you did. Ditto if you give one chimp cucumber for doing the same task its neighbor gets grapes for.

Our limbic system isn't that different.


The thing is, migrations are kind of a choice. Either you migrate or you don't. It's up to you.

I understand the need for fundamental changes and Open Source projects are basically free to do whatever. Maybe something needs an overhaul, maybe the landscape changed, maybe there's a need to change the foundation to make the project more future-proof.

But, I can fully resonate with Armin Ronacher's [1] viewpoint, that instead of acknowledging that these migrations are painful for everybody involved, the maintainers or the community often turn this around into "Everyone who does not upgrade misses out" which causes emotional distress.

So actually you do not have a choice. You migrate or are left behind.

Moreover this affects decisions in the corporate world. Do you chase after the bleeding edge or use stable frameworks which are guaranteed to be supported for more than 10 years? I believe, that is the reason many corporations are so entrenched in the Microsoft stack and Open Source could definitely try to be more sensible in this regard.

[1] https://lucumr.pocoo.org/2019/12/28/open-source-migrates/


>"under all anger is fear"

Google anger is a secondary emotion for more on this


Fear leads to Anger.

Anger leads to Hate.

Hate leads to Suffering.

Yoda.


In addition, I've realized a big blind-spot in these holy wars is the 'familiarity' aspect:

- Users of one platform have gotten used to it, have gotten over, or adapted to some of the pain points, and/or have developed effective workarounds. Having passed all those stages, their day-to-day interaction with that platform is a state of comfort-zone. Call this mental state A.

- When those users attempt to analyze or review a competing platform (which is new to them since they haven't spent time using it), not only are they uncomfortable with the overwhelm that comes from getting inundated with new information, and having to process all of it, they're also keenly perceptive of every "dot", "comma", "cross" that is, metaphorically, misplaced in that competing platform, i.e., any deficiencies of the competing platform jump out at them like a sore thumb. Call this mental state B.

Holy wars occur when users of two competing platform argue in favor of their own platform from a mental state A, while attack the competing platform from a mental state B.


Additionally, in "mental state B" it (the fresher/hipstery the project the more) often appears that the documentation is either non existing or horribly outdated, and same for any code samples on Stackoverflow.


> The difference is that holy wars are always about platforms with network effects, and the indirect second-order effects are much more important than the first-order changes.

That is a really insightful point. One think gwern doesn't dive into is that someone closer to one can cost one more. I get more annoyed when someone tries to rewrite Emacs in Scheme than in Rust. The Rust programmer would probably never have written Lisp code, but the Scheme programmer might have. Likewise, someone who writes a neat extension for vim might have been willing to write the same functionality for Emacs — but someone who extends Eclipse would probably never have spent any time on Emacs.

It goes in the other direction in both cases, too!


The main reason vim users aren't writing elisp is mostly because they don't want emacs.

Sure, they might really like the underlying functionality emacs has, but even evil-mode can't completely hide emac's UI.

I wish there was an emacs with a totally user-defined UI, so some people could configure their UI to feel like Vim, others like emacs, and others as something completely different.

Sure, you can replace the default keymaps, but that only gets you so far. If you go down this road (I have), it quickly becomes a futile effort to remove the emacsness from your UI.


> one thing gwern doesn't

Sigh, caught it just after the edit window closed!


Software is over coupled. Everything tries to be the platform and split the user base, so it control the tribe, the resources of the tribe and the focus of the tribe and most of the time, not intentionally.


That's a dense and well put thought. It makes me think of all those bloody systemd flamewars vs all the time I've seen here people praising unix pipes and standard unix tools as the perfect aproach to microservices.

Platforms does indeed split the user base...


Making things compatible without a common standard also has a cost. If everything is text optimized for appearance in a terminal, then how do you parse out the data to be used by a script?

The unix solution is offloading the complexity on the script, which makes all scripts more difficult to write.


The solution is to have more common standards, make standards more accessible, and use existing standards whenever possible.


> The solution is to have more common standards, make standards more accessible, and use existing standards whenever possible.

"The great thing about standards is that there are so many to choose from. "


We don't need more interchangeable standards. We need standards for different things.

The point in having standards is not to have the one ultimate standard that everyone uses, but to have a documented way to interoperate at all without interrogating the author or reverse-engineering.


> People have ceased to debate Emacs vs vim not because any consensus was reached or either one disappeared, but because both are now such exceedingly niche editors that they are far more threatened by the giants like Visual Studio Code or Eclipse or Sublime Text.

Citation needed. From the latest Rust survey [1], Vim was in second place at 23.6%, behind only VS Code at 34.9%. Emacs was lower at 7%, but still beat Sublime at 4.3%, and Eclipse doesn’t even show up on the list. Not that Rust is representative of programming as a whole, but its results are still probably more accurate than what seem to be anecdotal impressions of editor popularity.

[1] https://blog.rust-lang.org/images/2020-03-RustSurvey/31-edit...


Check the editor stats for C, C++, Java, Python. Rust is a niche language today.


OK I did. Results:

https://i.imgur.com/D128c3T.png

For developers who responded "I am a developer by profession" and used C, C++, Java, and/or Python in their dev environment, VSCode tops VIM, which tops Sublime, which tops Emacs. Every time!

Source: StackOverflow survey results from 2019. Looking at 65,679 responses marked as "I am a developer by profession" https://insights.stackoverflow.com/survey


To be fair, there's a bit of ambiguity in what question is being discussed.

1. What development environment do you use most (IDE)?

2. What editor do you use most?

3. What editor(s) do you use regularly?

Personally, my day job currently has me working in Java, and I use IntelliJ for that. However, I use Emacs on a daily basis _as an editor_; especially in the case where I need to look at, move around, and manipulate files quickly.

If I had to pick one of them to keep and one to give up... I would be sad, because the fill different roles.


I'm surprised that vim is way above Emacs (I'm an emacs user, sic). Thank for the input.


...people write java in vim?


Some do, I know two people who write everything in vim and do so also when working on Java code.


Yes, certain programming languages are biased towards certain editors. Java users will overwhelmingly use Netbeans/Eclipse/IntelliJ, C# users will overwhelmingly use Visual Studio, Lisp users will flock towards Emacs.


What exactly is the author trying to explain? If he tries to explain why these holy wars happen, his explanation is very lacking. He doesn't seems to consider the psychology and emotions of the human participants. It's rather strange trying to explain a human social phenomena without considering humans. If he just tries to talk about how platforms compete and effect each other, as abstract entities, i.e. a non social phenomena, then the title does not fit at all.


OP is not trying to comprehensively explain the dynamics behind holy wars, but simply to figure out why there are holy wars about some things and not others. OP's answer (holy wars are about 'platforms' with sizeable network effects) makes at least some kind of sense.


Emotions aren't random. To explain how someone suffers from something does explain his anger.


I think dominance and control do play a part in tech holy wars but it's not everything.

Power structures within tech communities ossify and the community itself can regress in their abilities. And so this means that technologies can sometimes get worse over time.

So that can create conflicts between old tech which is proven and reliable and new tech which is not proven and can be unreliable.


Hey, if gwern swings by to see this discussion, fyi there is a small formatting issue.

If you click the fnref for one of the footnotes[0] the quote it is referencing gets cut off and isn't readable anymore (but is correctly formatted beforehand).

[0] https://gwern.net/Holy-wars#fnref2


It might be worthwhile to shoot Gwern an email: https://gwern.net/Links#contact


Platform is one major problem space.

Another is interface. There are plenty of people who would love to use Vim, but simply don't like the keybindings. Same for emacs, every window manager/desktop environment, etc.

For no reason in particular, we tend to very tightly couple functionality to interface. We could avoid an awful lot of duplicated work if we factored UI out of tooling, and made it more user-definable.


Is this not a brand loyalty thing ?


It is more than brand loyalty. Technologies (particularly programming languages) shape your thoughts and the way your mind structures solutions. This makes it particularly hard to admit when your pet technology is lacking; you are also disparaging yourself! It is tough (impossible?) to be detached in such technical discussions unless you are very familiar with neither or both of the alternatives being considered.


that's very true, a programming language you've mastered begins to influence the way you think and becomes part of your identity. A criticism of the language becomes a criticism of yourself which is very uncomfortable. The only other thing I can think of, off the top of my head, that gets ingrained the same way is politics.




Applications are open for YC Summer 2022

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: