title: What is the difference between brew, yarn, and npm?
body: <p>I was using the <code>react-native</code> package which I installed globally with <code>npm</code>. Now it says at the first line after executing the <code>init</code> command. The following:</p>
  
  <pre><code>Installing react-native from npm...
  Consider installing yarn to make this faster: https://yarnpkg.com
  </code></pre>
  
  <p>So I was checking that website and it looked interesting to me, but I don't exactly know what it would be. At first, I thought that I would need <code>brew</code> to install <code>yarn</code>, so I could yarn to install <code>npm</code>. But now I think that <code>yarn</code> is a replacement of <code>npm</code>. Is that a correct statement?</p>
  
  <p>Why would I like to have so many package managers?</p>
  
  <p>I understand that it's useful for software like <a href="https://en.wikipedia.org/wiki/Atom_(text_editor)" rel="noreferrer">Atom</a> or <a href="https://en.wikipedia.org/wiki/Visual_Studio_Code" rel="noreferrer">Visual Studio Code</a> to have their own package manager. But for development, I do not see the reason why someone would like to use four different package managers (brew for 'primary software', <code>yarn</code> for <code>npm</code> packages, npm for backend modules and bower for front-end libraries). How can  this package manager forest be untangled?</p>