<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="218157" data-post-id="218157">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LostKobrakai" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LostKobrakai/120/3072_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LostKobrakai
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If one wants to see an example of those in the wild look at ecto_sql’s <code>mix.exs</code>.</p>
<p><a href="https://github.com/elixir-ecto/ecto_sql/blob/master/mix.exs" class="onebox" target="_blank" rel="noopener nofollow">https://github.com/elixir-ecto/ecto_sql/blob/master/mix.exs</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218157" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-218157" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218157"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="218158" data-post-id="218158">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Benjamin-Philip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Benjamin-Philip/120/34651_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Benjamin-Philip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="stefanchrobot" data-post="9" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/stefanchrobot/48/7657_2.png" class="avatar"> stefanchrobot:</div>
<blockquote>
<p>I think the only way to reliably make this work is to introduce a plain data file - so something like <code>deps.json</code>. Everything else has the issue of having the need to evaluate the code. Not sure what are the exact requirements of <code>.formatter.exs</code> are, but it seems you can throw an <code>if</code> into that file and it just works. Same goes for <code>mix.exs</code> and a potential <code>deps.exs</code>.</p>
</blockquote>
</aside>
<p>Yeah. I am in favour of having a <code>deps.json</code> but it’s quite a major change (in my opinion), and I am not sure if it will be accepted till the next major release; i.e 2.0.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218158" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-218158" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218158"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="218171" data-post-id="218171">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="al2o3cr" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/120/3457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  al2o3cr
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Benjamin-Philip" data-post="1" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benjamin-philip/48/34651_2.png" class="avatar"> Benjamin-Philip:</div>
<blockquote>
<p>I feel that such a simple and repetitive task could easily be shortened by adding a mix task for it.</p>
</blockquote>
</aside>
<p>How much time do folks actually spend adding dependencies? I don’t do it much personally, but maybe I’m an outlier.</p>
<aside class="quote no-group" data-username="Benjamin-Philip" data-post="1" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benjamin-philip/48/34651_2.png" class="avatar"> Benjamin-Philip:</div>
<blockquote>
<p>It will have the options of --version (to specify version) --git(to specify git repository) and --github (to specify GitHub repository)</p>
</blockquote>
</aside>
<p>IMO “remember the right options to pass <code>mix deps.add</code>” is almost as much cognitive load as “remember the right tuple shape to put in <code>deps</code>”, just with extra steps.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218171" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-218171" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218171"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="218173" data-post-id="218173">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lucaong" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lucaong/120/21794_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lucaong
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I agree that such a mix task could be very useful, but should this maybe be a library instead of a core feature? My logic is: a library could use a file such as <code>deps.json</code> and instruct the user on how to set it up in <code>mix.exs</code> (a very simple operation on most projects), without forcing every project to adopt that structure.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218173" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-218173" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218173"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="218176" data-post-id="218176">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mattei" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mattei/120/23012_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mattei
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Is this really a pressing issue? I really have no problem adding dependencies to mix.exs.</p>
<p>The VS Code extension, for example, fetches all dependencies on file change so it’s quite seamless.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218176" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-218176" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218176"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="218177" data-post-id="218177">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dorgan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/120/22107_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dorgan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>With the exception of the parameterized <code>deps</code> or deps being loaded from an external file, all of your examples are easy to solve just by looking at the AST. Even the Ecto example is easy to solve once you have some other stuff in place. It’s not that much of a problem with “how do you do that”, but rather with “should it work in every single place you can think of, or should it give up on the not so common cases”. Or put it another way, “is this for every single elixir developer or is this to help onboard people to mix projects like phoenix generators do”? It may as well say</p>
<pre data-code-wrap="markdown"><code class="lang-markdown">Mix can't recognize your mix.exs file structure. To add &lt;dependency&gt; to
your project, add

    {&lt;dependency&gt;: "~&gt; 1.2.3"}

to your dependency list and then run mix deps.get.
</code></pre>
<p>So if it can’t deal with your setup it at least saves you from having to open hex, search for the package and copy paste the code from the browser to your editor.</p>
<p>My other concern, and the reasons I think it should be a third party library(an escript or an editor plugin) are that the Elixir team philosophy may be to work under every circumstance, and that changing the source code is doable but you need to introduce quite a lot of complexity to mix for that single use case, because mix should not only be able to add the dependency tuple, it needs to correctly update your code without messing up the formatting of the rest of the code.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218177" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-218177" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218177"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="218178" data-post-id="218178">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lucaong" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lucaong/120/21794_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lucaong
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It is a bit tedious to go look for the latest version of a library each time one adds a dependency. That said, the issues with adding this feature in the core in my opinion overweight the benefits. If implemented as a library though, I would definitely see myself using it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218178" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-218178" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218178"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="218180" data-post-id="218180">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mattei" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mattei/120/23012_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mattei
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I actually totally understand your point now, and I’ve had this problem when accidentally stumbling upon old docs on Hex.</p>
<p>I disagree with those saying that a data file is the solution though: mix.exs is so powerful and it’s standard in the ecosystem, I feel like it’d be a huge step backwards to fragment the tooling in the community at this stage. Coming from the disaster that is Python tooling, the standardized tooling is a huge win already.</p>
<p>On another note, the solution being proposed for a mix.exs parser sounds pretty dope.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218180" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-218180" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218180"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="218182" data-post-id="218182">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lucaong" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lucaong/120/21794_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lucaong
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yep. If implemented as a library, I think it would be perfectly ok to simply read the <code>mix.exs</code> file, assuming that the dependencies are a plain static list of tuples in the <code>deps</code> method (and showing an informative error message otherwise), and add the new one to the list.</p>
<p>It would be up to the user to ensure that they follow this standard, if they choose to use the library. Elixir core cannot make such assumptions, but a library certainly can, as it is opt-in for the user.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218182" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-218182" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218182"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="218184" data-post-id="218184">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="stefanchrobot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/stefanchrobot/120/7657_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  stefanchrobot
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="lucaong" data-post="18" data-topic="40627" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lucaong/48/21794_2.png" class="avatar"> lucaong:</div>
<blockquote>
<p>It is a bit tedious to go look for the latest version of a library each time one adds a dependency.</p>
</blockquote>
</aside>
<p>I’d love to see this addressed in the vein suggested by <a class="mention" href="/u/dorgan" rel="nofollow">@dorgan</a>. Something like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">$ mix hex.latest tesla jason
{tesla: "~&gt; 1.4.0"},
{json: "~&gt; 1.1"},
</code></pre>
<p>Basically do a similar job to <code>mix hex.outdated</code>, but for packages yet-to-be-added.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218184" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-218184" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218184"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/40627/load_more?page=3">Load more posts (31 remaining)</a>
</div></template></turbo-stream>