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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I vote for <strong>C</strong></p>
<p>I agree it’s a problem when libraries and apps use private functions; doing nothing may be ok for a while, but I’d rather not depend on the “There’s no documentation, therefore it’s private” convention. I enjoy the explicitness of FP and Elixir, so I think I’ll enjoy that in documentation as well with guardrails.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111605" 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/proposal-private-modules-general-discussion/19374/112">Post #111</a>
	                </div>
	            </div>
              <div id="likers-container-111605" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111605"
                     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 #111"></div>
  </section>
</div>
    <div class="postbit" id="111625" data-post-id="111625">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Here’s my issue.</p>
<p>In OO programming, private methods and variables make sense to restrict the manner in which the state of an object can change.</p>
<p>In an explicitly functional, call function, get response, no side effects context the value of preventing a method call from a space outside of the developer’s initial intent is minimal.</p>
<p>The case that brought this up was just from a published library with a degree of popularity utilizing something that wasn’t supposed to be utilized. A warning alone would have solved this problem because a) the developer would see it and b) anyone who installed and used the library would see it likely resulting in an issue being created, a PR being created and/or a conversation from the library developer to the team to communicate needs better.</p>
<p>I just don’t see any value that can come from potentially increasing the chances for errors in running code when there’s no a discernible benefit over a warning.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111625" 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/proposal-private-modules-general-discussion/19374/113">Post #112</a>
	                </div>
	            </div>
              <div id="likers-container-111625" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111625"
                     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 #112"></div>
  </section>
</div>
    <div class="postbit" id="111629" data-post-id="111629">
  <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">
								<aside class="quote no-group" data-username="brightball" data-post="113" data-topic="19374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brightball/48/17192_2.png" class="avatar"> brightball:</div>
<blockquote>
<p>A warning alone would have solved this problem because a) the developer would see it</p>
</blockquote>
</aside>
<p>Somebody above said that when pulling your deps for the first time, compiling your project yields a huge amount of warnings – and the warning you talk about will be drowned in them. Don’t get me wrong: I’d mercilessly pursue any and all warnings and fix them but (a) package maintainers aren’t always responsive and (b) I have to prioritize my paid work. All of us have only so much brain and finger cycles per day.</p>
<aside class="quote no-group" data-username="brightball" data-post="113" data-topic="19374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brightball/48/17192_2.png" class="avatar"> brightball:</div>
<blockquote>
<p>In OO programming, private methods and variables make sense to restrict the manner in which the state of an object can change.</p>
<p>In an explicitly functional, call function, get response, no side effects context the value of preventing a method call from a space outside of the developer’s initial intent is minimal.</p>
</blockquote>
</aside>
<p>This is only one of its goals. In any and all of the 8 programming languages I worked with, private/protected functions are also used to express the intent of “here be dragons”, namely “this here is an implementation detail, you should not ever use this by yourself, please use my public API functions”.</p>
<p>Additionally, in corporate teams it is also being heavily utilized to limit the possibility of unintended dependencies – f.ex. a colleague from another team scans your internal company repo, finds the perfect function to do their job and before you know it, you have 2 team leads and 10 angry developers at your door because you changed a critical API their apps can’t work without.</p>
<p>When this proposal gets implemented, I’ll use it to enforce boundaries in my code, be it internal corporate big mono-repos, or public open-source libraries.</p>
<p>This also has the added benefit of encouraging discussion of yours / somebody else’s 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="111629" 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/proposal-private-modules-general-discussion/19374/114">Post #113</a>
	                </div>
	            </div>
              <div id="likers-container-111629" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111629"
                     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 #113"></div>
  </section>
</div>
    <div class="postbit" id="111645" data-post-id="111645">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I agree with <a class="mention" href="/u/imetallica" rel="nofollow">@imetallica</a> that a private module shouldn’t be accessible at all (or maybe inside of its own file), otherwise it would be strange. Maybe a different name like <code>protected</code> or <code>internal</code> would make more sense.</p>
<p>But speaking about the functionality, I like the option C with some considerations. I believe that is too early to add <code>visible_to</code>, it adds some complexity and issues described before, and for the problem described I believe that having something like <code>require MyApp.Private, as: Private, allow_private: true</code> combined with <code>defmodulep</code> would be enough. Internally, the team should know where to use it, and, externally, you can still get a error that can be bypassed if you know what you’re doing. In this case, <code>private</code> maybe still makes sense, since you’re bypassing 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="111645" 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/proposal-private-modules-general-discussion/19374/115">Post #114</a>
	                </div>
	            </div>
              <div id="likers-container-111645" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111645"
                     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 #114"></div>
  </section>
</div>
    <div class="postbit" id="111657" data-post-id="111657">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I can see that and the perspective makes sense.</p>
<p>At the same time, I’ve been doing this professionally for over 15 years and I’ve never run into an instance where private methods were beneficial in server side code. I keep hearing the justification without seeing the benefits.</p>
<p>The initially described issue seems to be more of a problem solved by dependency management for version compatibility than anything else.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111657" 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/proposal-private-modules-general-discussion/19374/116">Post #115</a>
	                </div>
	            </div>
              <div id="likers-container-111657" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111657"
                     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 #115"></div>
  </section>
</div>
    <div class="postbit" id="111658" data-post-id="111658">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                    <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 class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="brightball" data-post="116" data-topic="19374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brightball/48/17192_2.png" class="avatar"> brightball:</div>
<blockquote>
<p>The initially described issue seems to be more of a problem solved by dependency management for version compatibility than anything else.</p>
</blockquote>
</aside>
<p>I would love to hear how that would solve the problem.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111658" 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/proposal-private-modules-general-discussion/19374/117">Post #116</a>
	                </div>
	            </div>
              <div id="likers-container-111658" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111658"
                     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 #116"></div>
  </section>
</div>
    <div class="postbit" id="111659" data-post-id="111659">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a> although already said that elixir and the compiler doesn’t have the concept of “applications”, I think the way forward would be “internal” modules that are only accessible on the current “application”/“library”, since this would:</p>
<ol>
<li>allow testing, since tests are inside the “application”.</li>
<li>hide the implementation from outsiders.</li>
</ol>
<p>Which is precisely what we want to do here. I think this should be reconsidered.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111659" 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/proposal-private-modules-general-discussion/19374/118">Post #117</a>
	                </div>
	            </div>
              <div id="likers-container-111659" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111659"
                     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 #117"></div>
  </section>
</div>
    <div class="postbit" id="111660" data-post-id="111660">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                    <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 class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="imetallica" data-post="118" data-topic="19374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/imetallica/48/38986_2.png" class="avatar"> imetallica:</div>
<blockquote>
<p><a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a> although already said that elixir and the compiler doesn’t have the concept of “applications”, I think the way forward would be “internal” modules that are only accessible on the current “application”/“library”, since this would:</p>
<ol>
<li>allow testing, since tests are inside the “application”.</li>
<li>hide the implementation from outsiders.</li>
</ol>
<p>Which is precisely what we want to do here. I think this should be reconsidered.</p>
</blockquote>
</aside>
<p>I have been thinking about this approach and I even had a proof of concept and it is really inferior to the <code>alias</code> approach mentioned in B/C/D. For example, imagine this macro in your library:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">require SomethingPrivate.Helper, as: Helper

defmacro does_something(arg) do
  quote do
    Helper.compute_x(unquote(arg))
  end
end
</code></pre>
<p>If it is per project, <code>Helper</code> is now being used in a third party application due to meta-programming and therefore it will not work. With the <code>require+alias</code> system however, once you alias a private module and you have permission to use, you can pass it around and it will always work. In other words, it works more like an ownership system, which is really neat and transparent.</p>
<p>Perhaps, however, the worst about doing the visibility per project is that if you mess it up, like in the example above, you will only find it out when somebody else uses your project. Probably after a new version is released, and that is quite worse than any of the other proposals mentioned here, which requires you to always consider the visibility.</p>
<p>Finally, you have to remember that IEx is its own application and the application you are working on is lost once you build a release and connect to a remote node, which means that this approach would also make it impossible to debug your private modules in a live system.</p>
<p>So besides the compiler not really knowing about applications, you can see that doing something per project is more error prone than the current proposals in many ways.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111660" 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/proposal-private-modules-general-discussion/19374/119">Post #118</a>
	                </div>
	            </div>
              <div id="likers-container-111660" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111660"
                     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 #118"></div>
  </section>
</div>
    <div class="postbit" id="111666" data-post-id="111666">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m not a huge fan of this in general, but I’m resigned that we’re going to see it. My main point against it is the extra complexity it adds to the language that every developer is going to have to learn and deal with as long as Elixir exists. What that buys us is a reduced public perception of package upgrades being brittle. Public perception is definitely important, but at the core this is a value judgement between these two concerns.</p>
<p>Developers depending on undocumented modules is a “people problem.” I’ve rarely seen people problems fixed with technological solutions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111666" data-batch-url="/posts/batch_likers">
                        11
                      </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/proposal-private-modules-general-discussion/19374/120">Post #119</a>
	                </div>
	            </div>
              <div id="likers-container-111666" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111666"
                     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 #119"></div>
  </section>
</div>
    <div class="postbit" id="111667" data-post-id="111667">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think this is a great proposal! It’s a chance to be more explicit about which parts of codebase are the public entry points and which parts are just the private implementation details.</p>
<p>It’s a much more effective and intention revealing construct than <code>@moduledoc false</code>.</p>
<p>Currently, within teams/companies, developers may agree on certain conventions, such as “let’s use the public interface of <code>module A</code>, instead of calling <code>A.B.C.some_function</code> directly from <code>D</code>”. But it requires discipline and before you know it your code is tightly coupled and it becomes hard to reorganize or refactor those internal (private) modules.</p>
<p>This proposal also goes hand in hand with Phoenix Contexts: we “know” that we’re not supposed to call directly call <code>MyApp.Blog.Post.changeset</code> from the controller. But it is still possible and currently there is nothing in the language that prevents it. So it would be great to be able to be more explicit about it via a <code>defmodulep</code>,  similarly to <code>defp</code>.</p>
<p>Regarding option C:</p>
<p>Would specifying <code>visible_to</code> be required? I think in almost all cases the value of <code>visible_to:</code> is chosen to be that of the namespace one level above. It almost seems redundant. In fact I think it’d seem odd if <code>visible_to:</code> would point to entirely different namespace (i.e. <code>MyOtherApp</code>). If I understand correctly it is not desirable/feasible to dynamically deduce <code>visible_to</code> automatically when not supplied.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="111667" 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/proposal-private-modules-general-discussion/19374/121">Post #120</a>
	                </div>
	            </div>
              <div id="likers-container-111667" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="111667"
                     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 #120"></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/19374/load_more?page=13">Load more posts (37 remaining)</a>
</div></template></turbo-stream>