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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We don’t disagree at all, I think I didn’t express myself well to begin with. Mix already implements the part I think is important, which is that lock files <em>in</em> a library shouldn’t constrain the resolution of dependencies when that library is used in someone else’s project. I agree with having a lock file in the repo, this way other developers on the project have a resolution set known to work when they begin development.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="86867" 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/of-course-you-should-version-mix-lock-wait-do-we/14910/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-86867" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="86867"
                     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="86877" data-post-id="86877">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="homologist" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/homologist/120/7438_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  homologist
                    <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 quote-modified" data-username="jeremyjh" data-post="11" data-topic="14910" 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/jeremyjh/48/5995_2.png" class="avatar"> jeremyjh:</div>
<blockquote>
<aside class="quote no-group" data-username="homologist" data-post="9" data-topic="14910" 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/homologist/48/7438_2.png" class="avatar"> homologist:</div>
<blockquote>
<p>But shouldn t we be using stuff like Docker/Ansible/Vagrant for all that?</p>
</blockquote>
</aside>
<p>These do not solve the same problem. Those tools do not resolve your Elixir library dependencies when you build your application. You deploy your built application with those sort of tools.</p>
<p>And having reproducible builds has nothing to do with startups or legacy code.  It has to do with not wanting stuff to break for unexplainable reasons. Frankly, I’d consider it unprofessional to deploy whatever random code resolves that day to production.</p>
</blockquote>
</aside>
<p>You can build a dev env on your server and store it, and then ship it to your dev team with docker/vagrant. How dependencies could resolve differently then? And that might be where I lost some of you. I was assuming that you CAN clone you environment and make it available for your team(I hope a fresh start up can do that). And from that prospective why would you lock?</p>
<p>Yes having legacy code is a major source of locking stuff, like when you have java dependencies… And I m not saying the only cause but a major cause.(Why security sofware is never up to date?)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="86877" 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/of-course-you-should-version-mix-lock-wait-do-we/14910/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-86877" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="86877"
                     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="86882" data-post-id="86882">
  <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>Shipping a docker/vagrant image with dependencies already included is the super expensive version of locking dependencies. If you’re not including dependencies in those images when you’re back to square one: Either include the lock file so everyone gets the same versions when using the image or don’t included it and risk that dependencies drift and cause issues.</p>
<p>That’s why the issue is really orthogonal to using docker or vagrant. Both neither prevent nor solve the issue.</p>
<aside class="quote no-group" data-username="homologist" data-post="13" data-topic="14910">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/homologist/48/7438_2.png" class="avatar"> homologist:</div>
<blockquote>
<p>would you lock?</p>
</blockquote>
</aside>
<p>In an ideal world you could just depend on a mayor version of a library instead of locking to a specific one, but people make errors, multiple dependencies might conflict and cause issues the individual maintainer couldn’t have known, …. The real world just isn’t that perfect.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="86882" 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/of-course-you-should-version-mix-lock-wait-do-we/14910/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-86882" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="86882"
                     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="86900" data-post-id="86900">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="homologist" data-post="13" data-topic="14910">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/homologist/48/7438_2.png" class="avatar"> homologist:</div>
<blockquote>
<p>You can build a dev env on your server and store it, and then ship it to your dev team with docker/vagrant.</p>
</blockquote>
</aside>
<p>A lock file can be versioned in your source repository. This way you know when every change was made. When a problem is found, you can git blame to see what the change was supposed to address in the first place, etc. In general, you want all of your code managed this way, including your dockerfiles ansible scripts etc. Much of the success of docker, and much of the benefit of “infrastructure as code” relates to the fact that you can manage it this way. The built images are managed strictly as a deployment concern, not as a development tool.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="86900" 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/of-course-you-should-version-mix-lock-wait-do-we/14910/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-86900" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="86900"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>