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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="tmbb" data-post="93" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/77aa72/48.png" class="avatar"> tmbb:</div>
<blockquote>
<p>You could probably use elixir macros to mimic something like class inheritance, but in the end, the most flexible “abstraction” is a mix task that generates editable code. Not the most concise abstraction, sure, but it is flexible.</p>
</blockquote>
</aside>
<p><a href="https://github.com/wojtekmach/oop" rel="noopener nofollow ugc">*cough*oop*cough*</a> <em>Don’t use this</em>  ^.^</p>
<aside class="quote no-group" data-username="tmbb" data-post="93" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/77aa72/48.png" class="avatar"> tmbb:</div>
<blockquote>
<p>When I first got into Elixir and Phoenix, these generators rubbed me the wrong way, because they weren’t promoting “code reuse” or using clever abstractions, but now I’m not so sure anymore. I’m starting to see the value of generated text files as a mechanism for extensibility.</p>
</blockquote>
</aside>
<p>There definitely is!</p>
<p>I use a <em>ton</em> of snippets in my editor and can fill out entire, say, GenServers or Controllers with but 2 keystrokes, including filling in default values and other things, but those are definitely more useful in an IDE then a command prompt I do think.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36944" 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/contexts-a-barrier-too-high-for-newbies/5929/94">Post #93</a>
	                </div>
	            </div>
              <div id="likers-container-36944" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36944"
                     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 #93"></div>
  </section>
</div>
    <div class="postbit" id="36947" data-post-id="36947">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmbb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmbb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="OvermindDL1" data-post="94" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p><em>cough</em>oop<em>cough</em> Don’t use this  ^.^</p>
</blockquote>
</aside>
<p>This is, for the lack of a better word… Amazing, I guess? xD If you base these things on an Agent or a GenServer you can get mutable class attributes, python style, right? xD I can’t wait to reimplement Flask, Django or Pyramid in Elixir based on this oop library!</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="94" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>those are definitely more useful in an IDE then a command prompt I do think.</p>
</blockquote>
</aside>
<p>The ergonomics of using these generators on a command prompt are not very good. Once I made a typo and spent the next 10 minutes chasing places where I had to change the code. I’ve been thinking on writing a mix task to run the generators based on a yaml file, as yaml files are very lightweight and allow you to use a decent text editor and proofread your template before generating actual code.</p>
<p>Alternatively, something like a GUI “context builder” could be useful. This could be done as a local phoenix app for maximum portability. IDE plugins would be cool too, but they’re less portable.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36947" 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/contexts-a-barrier-too-high-for-newbies/5929/95">Post #94</a>
	                </div>
	            </div>
              <div id="likers-container-36947" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36947"
                     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 #94"></div>
  </section>
</div>
    <div class="postbit" id="36970" data-post-id="36970">
  <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
                  </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="theangryangel" data-post="90" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/theangryangel/48/5589_2.png" class="avatar"> theangryangel:</div>
<blockquote>
<p>However in my tiny team of me, myself and I (working on a personal project), I’m finding I’m getting literally anxious about Doing It Right™. Which I know is dumb, but I do wonder if this is how other people feel and what’s causing some of the discussion towards contexts.</p>
</blockquote>
</aside>
<p>I believe you have described the feelings of many very very well. Thank you for posting.</p>
<p>Part of the issue here is that many still make contexts more than they are, they are just modules and directories.</p>
<p>But it is also part of how we introduced those modules as hard boundaries, which makes you feel you need to get them right from the beginning, and that’s not necessarily the case. We will work on some improvements for the next RC which hopefully will take some of the burden from developers.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36970" data-batch-url="/posts/batch_likers">
                        10
                      </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/contexts-a-barrier-too-high-for-newbies/5929/96">Post #95</a>
	                </div>
	            </div>
              <div id="likers-container-36970" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36970"
                     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 #95"></div>
  </section>
</div>
    <div class="postbit" id="36971" data-post-id="36971">
  <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
                  </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="nicbet" data-post="88" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nicbet/48/28763_2.png" class="avatar"> nicbet:</div>
<blockquote>
<p>Exactly!! How annoying it’s is to write the same boiler plate over and over again. One of the reasons I like rails is that I can stub out the boilerplate with a generator, delete what I don’t need and move fast from there. If anything, Phoenix needs more and more powerful generators.</p>
</blockquote>
</aside>
<p>That’s exactly how I use generators too, including Phoenix. The learning tools focus to me means that we won’t shy away from adding comments and that we won’t generate a bunch of unnecessary  files on the odd chance you may need to do something with them.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36971" 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/contexts-a-barrier-too-high-for-newbies/5929/97">Post #96</a>
	                </div>
	            </div>
              <div id="likers-container-36971" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36971"
                     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 #96"></div>
  </section>
</div>
    <div class="postbit" id="36972" data-post-id="36972">
  <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
                  </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="sasajuric" data-post="61" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>I’m also not a fan of this term. Besides sounding quite vague, it seems to be associated with DDD a lot. At our work we use “service” but I think that’s even worse <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> . “Concern” proposed by <a class="mention" href="/u/overminddl1" rel="nofollow">@OvermindDL1</a> sounds better. Or maybe just “business module”?</p>
</blockquote>
</aside>
<p>Naming is hard. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>I also think “services” are even more loaded than “context”. Concern feels like a subset rather than superset. For example, a user has many concerns. While “context” expresses the idea of groups / ownership.</p>
<p>A “business module” is not bad but I am afraid calling it “business” will make it even harder for people to come up with names, as they may want to name it directly to an aspect of the business or the organization and that’s not always the case.</p>
<p><a class="mention" href="/u/qqwy" rel="nofollow">@Qqwy</a>’s description, summarized by <a class="mention" href="/u/astonj" rel="nofollow">@AstonJ</a>, is really good: contexts are just dedicated modules for functionality that can easily be classified as a group.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36972" data-batch-url="/posts/batch_likers">
                        7
                      </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/contexts-a-barrier-too-high-for-newbies/5929/98">Post #97</a>
	                </div>
	            </div>
              <div id="likers-container-36972" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36972"
                     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 #97"></div>
  </section>
</div>
    <div class="postbit" id="36982" data-post-id="36982">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for confirming that José, I have added it to the learning resources thread:</p>
<aside class="quote quote-modified" data-post="1" data-topic="5930">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/astonj/48/15_2.png" class="avatar">
    <div class="quote-title__text-content">
      <a href="https://forum.elixirforum.com/t/phoenix-contexts-learning-resources/5930" rel="nofollow">Phoenix Contexts - learning resources</a> <a class="badge-category__wrapper " href="/c/chat-discussions/wikis/111" rel="nofollow"><span data-category-id="111" style="--category-badge-color: #cca771; --category-badge-text-color: #FFFFFF; --parent-category-badge-color: #cca771;" data-parent-category-id="165" data-drop-close="true" class="badge-category --style-square --has-parent"><span class="badge-category__name">Wikis</span></span></a>
    </div>
  </div>
  <blockquote>
    Wonder if we can compile a list of learning resources, blog posts, talks, threads etc to help those who are just learning about Contexts. 
This is a wiki - so please add anything you feel is missing… 
<a name="p-36250-what-are-phoenix-contexts-1" class="anchor" href="#p-36250-what-are-phoenix-contexts-1" aria-label="Heading link" rel="nofollow"></a>What are Phoenix Contexts?
<a name="p-36250-in-short-2" class="anchor" href="#p-36250-in-short-2" aria-label="Heading link" rel="nofollow"></a>In short:
Phoenix Contexts are just dedicated modules that expose and group functionality. 
<a name="p-36250-in-depth-3" class="anchor" href="#p-36250-in-depth-3" aria-label="Heading link" rel="nofollow"></a>In depth:

<a href="https://hexdocs.pm/phoenix/contexts.html" rel="nofollow">Official docs</a>
<a href="https://forum.elixirforum.com/t/how-would-you-explain-phoenix-contexts-to-a-newbie/5947" rel="nofollow">Phoenix Contexts explained by forum members</a>
<a href="https://forum.elixirforum.com/t/phoenix-v1-3-0-rc-0-released/3947" rel="nofollow">Chris’s announcement on 1.3rc</a>
<a href="https://forum.elixirforum.com/t/phoenix-1-3-0-rc-3-released/7150" rel="nofollow">Chris’s announcement on 1.3 RC3 release</a>

<a name="p-36250-books-4" class="anchor" href="#p-36250-books-4" aria-label="Heading link" rel="nofollow"></a>Books
<a href="https://forum.elixirforum.com/t/programming-phoenix/5883" rel="nofollow">Programming Phoenix</a> - due to be up…
  </blockquote>
</aside>

<p>(I’m sure we can expand on it a little, but for now I think it’s fine to give people a very quick overview.)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36982" 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/contexts-a-barrier-too-high-for-newbies/5929/99">Post #98</a>
	                </div>
	            </div>
              <div id="likers-container-36982" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36982"
                     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 #98"></div>
  </section>
</div>
    <div class="postbit" id="36983" data-post-id="36983">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Context is just like a scope for the modules, is not more than this, i advice who have negative positions about it to start an 1.3 phoenix project and start coding, you will see that did not change almost anything, just the structure of modules…i recently started an 1.3 project myself and like it. Before start using context was sound more complex than really are. Is a good move to have code more organized. I like 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="36983" 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/contexts-a-barrier-too-high-for-newbies/5929/100">Post #99</a>
	                </div>
	            </div>
              <div id="likers-container-36983" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36983"
                     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 #99"></div>
  </section>
</div>
    <div class="postbit" id="36996" data-post-id="36996">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah, seems like this is a quite general issue because I see people in Elm community struggling with composing application written in FP structure too although they also have architecture constraint (TEA).</p>
<p>I brought Phoenix context thinking into Elm files structure, and it turns out ok-ish because there is only single source of truth while elixir/phoenix can use Repo to update several tables independently. I generalize context mindset as <strong>a place where functionalities requires different data structures to be working with</strong></p>
<p>Like Chemical Formula is a context where different Elements live together to form certain characteristic and functions. A bunch of elements can form different chemical formulas .. (H2O)!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36996" 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/contexts-a-barrier-too-high-for-newbies/5929/101">Post #100</a>
	                </div>
	            </div>
              <div id="likers-container-36996" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36996"
                     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 #100"></div>
  </section>
</div>
    <div class="postbit" id="37004" data-post-id="37004">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="tmbb" data-post="95" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/77aa72/48.png" class="avatar"> tmbb:</div>
<blockquote>
<p>xD I can’t wait to reimplement Flask, Django or Pyramid in Elixir based on this oop library!</p>
</blockquote>
</aside>
<p>OGod that sounds horrifying!  I look forward to it!  ^.^</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="96" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>I believe you have described the feelings of many very very well. Thank you for posting.</p>
<p>Part of the issue here is that many still make contexts more than they are, they are just modules and directories.</p>
<p>But it is also part of how we introduced those modules as hard boundaries, which makes you feel you need to get them right from the beginning, and that’s not necessarily the case. We will work on some improvements for the next RC which hopefully will take some of the burden from developers.</p>
</blockquote>
</aside>
<p>Yeah this is exactly it, people assume Contexts are more than what they are when they are just normal separation of concerns.</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="98" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>Naming is hard. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Understatement of the century.  ^.^;</p>
<p><em>/me often gets hobbled and frozen by just figuring out how to ‘name’ something, so usually ends up just giving things very generic names (look at overminddl1’s github for project names as an example)</em></p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="98" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>I also think “services” are even more loaded than “context”. Concern feels like a subset rather than superset. For example, a user has many concerns. While “context” expresses the idea of groups / ownership.</p>
</blockquote>
</aside>
<p>I think that well sums up my feelings on why I did not like Concern yeah.</p>
<aside class="quote no-group" data-username="overallduka" data-post="100" data-topic="5929" 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/overallduka/48/4217_2.png" class="avatar"> overallduka:</div>
<blockquote>
<p>Context is just like a scope for the modules, is not more than this, i advice who have negative positions about it to start an 1.3 phoenix project and start coding, you will see that did not change almost anything, just the structure of modules…i recently started an 1.3 project myself and like it. Before start using context was sound more complex than really are. Is a good move to have code more organized. I like it.</p>
</blockquote>
</aside>
<p>Hmm, <code>Scope</code> feels a lot better to me, would have to play with it to be sure or not, feels ‘incomplete’ still…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="37004" 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/contexts-a-barrier-too-high-for-newbies/5929/102">Post #101</a>
	                </div>
	            </div>
              <div id="likers-container-37004" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="37004"
                     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 #101"></div>
  </section>
</div>
    <div class="postbit" id="37244" data-post-id="37244">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AlexMcConnell" data-post="1" data-topic="5929">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/alexmcconnell/48/3875_2.png" class="avatar"> AlexMcConnell:</div>
<blockquote>
<p>The reason that Rails is as popular as it is is because it’s very easy for relatively inexperienced developers to get a lot of work done.</p>
</blockquote>
</aside>
<p>I’d argue Rails became popular despite it’s complexity.  It became popular because of strong community patient teachers showing a better way, not because of any sort of magic the generators provided.  It became a go-to tool because we had the ability to point new developers to _Why, Ryan Bates, Saint Joe, José, Sandi Metz, and Avdi. (normally in that order).</p>
<p>It’s worth pointing out that my team was organizing code around things that looked a lot like contexts after a couple weeks working in Phoenix. It felt natural… especially once we started reading more on FP.  Really that’s what I think is missing… we need our (non-pro-parts) RailsCasts and our POODR. I want the ability to point juniors to something that isn’t written in F#, Scala, or Scheme to learn FP concepts and architecture.</p>
<p>But nah - I reject the idea that contexts would be a stumbling block to learning the framework.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="37244" 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/contexts-a-barrier-too-high-for-newbies/5929/103">Post #102</a>
	                </div>
	            </div>
              <div id="likers-container-37244" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="37244"
                     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 #102"></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/5929/load_more?page=11">Load more posts (66 remaining)</a>
</div></template></turbo-stream>