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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mudasobwa" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/120/5298_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mudasobwa
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Cure</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ahem. OTP interface is fully backward compatible since R7 or R8, AFAICR. Elixir interface is too, since 0.10, and, with minor exceptions in special forms since 0.4.</p>
<p>If you have found the new better interface, I bet it is to be named distinctly. Plant warning for obsoletion, get rid of docs in the next major version for the obsolete one. That’s quite enough to make the 1% rearguard to migrate sooner or later. For the rest 0.01%, just keep the legacy, private, with no docs (and hence no LSP support,) and compilation warnings. I, for the one, do that in my libs. That is not as complicated.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373072" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-373072" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373072"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="373073" data-post-id="373073">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="BartOtten" data-post="21" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartotten/48/25440_2.png" class="avatar"> BartOtten:</div>
<blockquote>
<p>The younger the lib, the more likely these issues arise.</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="mudasobwa" data-post="22" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/48/5298_2.png" class="avatar"> mudasobwa:</div>
<blockquote>
<p>Ahem. OTP interface is fully backward compatible since R7 or R8, AFAICR. Elixir interface is too, since 0.10, and, with minor exceptions in special forms since 0.4.</p>
</blockquote>
</aside>
<p>Making my point. Both were breaking in their early existence.</p>
<blockquote>
<p>If you have found the new better interface, I bet it is to be named distinctly.</p>
</blockquote>
<p>Because a better interface automatically leads to a better name? When I switch the argument order, there is no need for a new name and it would be worse to give it a ‘forced’ new name while the ‘old’ one was perfectly describing the function in the shortest way.</p>
<blockquote>
<p>Plant warning for obsoletion</p>
</blockquote>
<p>Again: in new libs it is polution imho . Break early and take the penalty. Once you are ‘too big to fail’ there will be enough times you have to ‘polute’ the code base with functions obsoletion. Just as you can see in both examples you provided. Breaking-strategy when small, obsoleting when larger.</p>
<p>That’s all I gotta say. Back on topic: epoch semver!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373073" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-373073" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373073"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="373075" data-post-id="373075">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am with you here:</p>
<ol>
<li>Epoch SemVer does not seem to tackle the nastiest problem and you outlined it well: how do we <em>not</em> do a major version bump if we changed 1-2 functions? (This of course assumes we had to and it was not a capricious whim.)</li>
<li>Early on the libraries must be allowed to break the API / contract. I think many people, myself included, expect the <code>0.X.Y</code> versions to be unstable and that any unattended upgrade is at your own risk. This is a compromise with by-the-book SemVer but that’s also a criticism to those who invented it: they did not think of that use-case, and it’s a very common use-case.</li>
</ol>
<p>I am about to release a library in a few more weeks. I will enlist at least two LLMs to criticise structure and naming and general contracts and function locations. I’ll ask them to be ruthless and will consider each bit of info they give me. I’ll also take one final look myself after.</p>
<p>But the top of the <code>README.md</code> will contain something like the following:</p>
<pre data-code-wrap="markdown"><code class="lang-markdown">### Compatibility promise

For the moment: none. Note that the library is currently in its `v0` iteration. Once the author feels it has been used enough time and by enough people that the contract is not confusing to users and looks stable, `v1` and on will be released which will then lead to a firmer compatibility promise. In the meantime please always check the changelog before upgrading! Breaking changes will be explicitly marked as such.
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373075" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-373075" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373075"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="373082" data-post-id="373082">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Semver explicitly allows breaking changes below v1:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://semver.org/#spec-item-4">
  <header class="source">
      <img src="https://semver.org/assets/500x500(dark).jpg" class="site-icon" alt="" width="500" height="500">

      <a href="https://semver.org/#spec-item-4" target="_blank" rel="noopener nofollow ugc">Semantic Versioning</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://semver.org/#spec-item-4" target="_blank" rel="noopener nofollow ugc">Semantic Versioning 2.0.0</a></h3>

  <p>Semantic Versioning spec and website</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373082" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-373082" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373082"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="373084" data-post-id="373084">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I was very sure that the one thing I didn’t double-check will turn out to be an erroneous claim. <img src="https://forum.elixirforum.com/uploads/default/original/2X/6/6c3193d1dd46244da3c8c6f719c9f5e2abdd5ae8.gif?v=15" title=":003:" class="emoji emoji-custom" alt=":003:" loading="lazy" width="20" height="20"></p>
<p>Thank you! Appreciate the grounding.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373084" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-373084" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373084"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="373102" data-post-id="373102">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="spicychickensauce" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/spicychickensauce/120/38169_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  spicychickensauce
                    <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">
								<p>I know I’m not convincing anyone here, but here’s how I see it:</p>
<blockquote>
<ol>
<li>Epoch SemVer does not seem to tackle the nastiest problem and you outlined it well: how do we <em>not</em> do a major version bump if we changed 1-2 functions? (This of course assumes we had to and it was not a capricious whim.)</li>
</ol>
</blockquote>
<p>Why do you want to avoid a major bump? With Epoch SemVer you can embrace major bumps while at the same time communicating you are still in an experimental phase (e.g. v0_014). Sure, most tools would display that as v14, but as long as you make it clear in your readme, like with your disclaimer, that wont be a problem.</p>
<p>Then, when you’ve reached stability you can publish v1_000 and from then on make the same stability promises as you would when reaching traditional v1.</p>
<p>At this point you probably do want to avoid too many major bumps, but instead of going from v1 to v2 to v3, you might instead go from v1_000 to v1_001 to v1_002 to v2_000, as that might provide the smoother upgrade journey to users and at the same time better communicate that there weren’t too many major changes up until v2_000</p>
<p>Also, if you’re hardcore about backwards compatibility like <a class="mention" href="/u/mudasobwa" rel="nofollow">@mudasobwa</a> then you can just stay on v1_000.x forever, that would be a pretty good promise!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373102" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-373102" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373102"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="373103" data-post-id="373103">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="spicychickensauce" data-post="27" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/spicychickensauce/48/38169_2.png" class="avatar"> spicychickensauce:</div>
<blockquote>
<p>At this point you probably do want to avoid too many major bumps, but instead of going from v1 to v2 to v3, you might instead go from v1_000 to v1_001 to v1_002 to v2_000</p>
</blockquote>
</aside>
<p>Apologies if I’m missing something obvious in your larger argument,  but doesn’t that bring us pretty close to semver using a different format?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373103" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-373103" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373103"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="373109" data-post-id="373109">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="spicychickensauce" data-post="27" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/spicychickensauce/48/38169_2.png" class="avatar"> spicychickensauce:</div>
<blockquote>
<p>Why do you want to avoid a major bump?</p>
</blockquote>
</aside>
<p>See my post about the 99 people suffering for a change affecting only 1.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373109" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-373109" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373109"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="373133" data-post-id="373133">
  <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>Version identifiers are simply a blunt tool and I’m don’t think adding more or less numbers is changing much about the problem.</p>
<p>Any non-BC change could always affect any number of users – could be all, could be none. In the end the change will affect the users system by acting differently. The only problem is sometimes we call those changes bug fixes – when the behaviour of the dependency is deemed incorrect for the dependency and how it’s used by the user – and sometimes we call them BC breaking changes – that’s when any of the users disagrees that the changed behaviour would be incorrect or they’re not seeing the effort of adjustment worth it.</p>
<p>That distinction is a social one, which imo cannot be solved by a different number schema.</p>
<p>We could make all updates truely BC, but that is subject to additional effort and judgment calls about “it being worth it”. Like deprecating <code>HashDict</code> in elixir and replacing it with <code>Map</code> is simple, but e.g. <code>URI.parse</code> vs <code>URI.new!</code> vs maybe another change they want to make to URI parsing is not that straight forward.</p>
<p>The other part of the issue here is manual updates vs. “(semi-)automatic” updates. That’s really the reason why we talk to much about version schemas, because versions is all the input we get into the decision if it’s fine to just roll with the update or make the user explicitly opt into updating. Could be interesting exploring if there could be more shades of gray in that space.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373133" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-373133" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373133"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="373149" data-post-id="373149">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="spicychickensauce" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/spicychickensauce/120/38169_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  spicychickensauce
                    <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="tfwright" data-post="28" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tfwright/48/20299_2.png" class="avatar"> tfwright:</div>
<blockquote>
<p>but doesn’t that bring us pretty close to semver using a different format?</p>
</blockquote>
</aside>
<p>Absolutely, but that’s also kinda the point. It’s just an incremental improvement, not a drastic change. Also, it’s not really a different format, it’s fully compatible with semver, it just uses bigger numbers and large version number jumps.<br>
It just makes it easier to communicate big major changes vs a couple of small breaking changes.<br>
Also, psychologically, it makes it easier to release small breaking changes incrementally vs in one big go.</p>
<aside class="quote no-group" data-username="BartOtten" data-post="29" data-topic="72154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartotten/48/25440_2.png" class="avatar"> BartOtten:</div>
<blockquote>
<p>See my post about the 99 people suffering for a change affecting only 1.</p>
</blockquote>
</aside>
<p>I think Epoch SemVer at least partially addresses that by encouraging smaller breaking changes over one big change, making manually updating dependencies easier. But yeah, this is definitely the biggest problem.<br>
I disagree that v0 versioning is a valid solution to the problem. If you actually auto-update v0 versions then you can also auto-update major versions, no difference there.</p>
<p>I do like your solution 4 (versioning every function), I think <a href="https://www.unison-lang.org/" rel="noopener nofollow ugc">unison</a> effectively does that?</p>
<p>In general, having some better tooling around breaking changes would be great. Maybe just a simple git diff based tool that can tell you which functions potentially changed could look through your code base and automatically warn you if you’re using any of the potentially changed functions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373149" 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/would-you-like-to-see-elixir-libraries-adapt-epoch-semantic-versioning-poll/72154/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-373149" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373149"
                     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 #30"></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/72154/load_more?page=4">Load more posts (2 remaining)</a>
</div></template></turbo-stream>