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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There are some documentation about how to write/customize your own generators on phoenix/elixir/mix projects? I have searching for that without success.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="37773" 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/116">Post #115</a>
	                </div>
	            </div>
              <div id="likers-container-37773" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="37773"
                     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="37831" data-post-id="37831">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It seems to me that you have a very good argument that is also a good argument for contexts: there are several ways of achieving code organisation and each one of them is OK as LONG AS YOU KNOW what and why you are doing it.<br>
Contexts make you think differently about it and it’s an evolution from pure “copy paste” code.<br>
I like that.<br>
So, I’m more convinced that Contexts are a great step in the good direction and that generators will evolve in the future based on real life experience.<br>
Anyway, hearing from more advanced developers that don’t agree but bring very good arguments to the discussion pushes me to try some ideas myself, which is great.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="37831" 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/117">Post #116</a>
	                </div>
	            </div>
              <div id="likers-container-37831" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="37831"
                     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="38617" data-post-id="38617">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Phoenix-Core-Team" data-username="chrismccord" data-post="58" 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/chrismccord/48/24233_2.png" class="avatar"> chrismccord:</div>
<blockquote>
<p>What would be very valuable for us is if you provide feedback around using the context generators as you’re learning Phoenix. As it stands now, you’ve taken a negative stance without even evaluating thing</p>
</blockquote>
</aside>
<p>as a newbie who has “lurked” for some time <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"> (and for the express purpose of learning) I think this response indicates you are too close to phoenix (understandably) to understand the issue and its causing you to be quite unfair in your response to Shrike here.</p>
<p>As  newbie this is precisely how we come to a new framework.  Looking at it, reading through docs and announcements and trying to get a gist for what it is and YES whether we wish to totally commit to learning it thoroughly. Your response here seems to be suggesting  - learn  my framework first and then come back and talk about specifics but thats not how the newbie world works. If the barriers to learn are too high and the rewards are not there they move on. IF Phoenix framework is just for those who work through the barriers thats fine but its not actually  “Being accessible to newbies”</p>
<p>I am (maybe) beginning to get the hang of contexts but  not their importance to me .  The Op said it quite elegantly -as a newbie I am probably going to make a mess of a lot of things and I can see  getting myself quite muddled using contexts maybe even more than  without them.  As someone else has astutely picked up one of the problems is the name. A few weeks ago when I read “Contexts” I said what in the world are those?  As Cmkarlsson wrote</p>
<blockquote>
<p>It is made into some big concept that you must learn and that scares people away.</p>
</blockquote>
<p>Thats EXACTLY what it did to me and I put Phoenix  on the back burner for those weeks (I however like elixir and for now Phoenix is THE web framework for it).  Especially after reading, sorry,  but just high minded conceptualizations sentences without much specified meaning (from others not you) without any code examples.</p>
<p>Now it may be represented as frivolous to say that I put something on the back burner because of one barrier but thats not true.  the introduction of  a somewhat nebulous concept of contexts was just a proverbial straw on the back after many straws (some of which a relatively new framework cannot escape)</p>
<p>relatively few code examples to other languages and frameworks<br>
lack of diverse training material to grasp the fundamentals<br>
wrapping your head around functional programming<br>
dealing with  concepts  and words before  that are also new OTP, BEAM etc<br>
a lack of seeing  features of the framework in large projects making a real difference on the web yet<br>
and finally  what might be controversial - a kind of Love - passive aggressive  stance to Rails which brought it  much of its early adopters.</p>
<p>I look at a framework as a newbie that pretty much  refuses to give me authentication built in (leaving it to me to choose my own path or even roll my own) but then wants to bake in  (whether in generators or not) “contexts” and as a newbie I have to ask the more barriers that come along - is this worth my time?  Its something every newbie has to decide on..</p>
<p>In Django thers a sense of a “pythonic” guiding force in terms of how to approach things. In Ruby I guess its the simplicity and Developer Joy.  My sense and I may be wrong is there is almost a guiding force in Phoenix now  - to be anything else but Ruby and make a mark of separation so strong it can no longer be compared.</p>
<p>For me at least theres another barrier as a newbie.  I really appreciate in modern programming how learning concepts and words in one  framework and language  helps me transfer over to other ones.  If a framework  is going to have unique head space words  I have to decide if it has something earth shatterring in web development that the web just can’t live without.</p>
<p>There are more non newbies in this thread than newbies so hope you will appreciate an outside  newbie looking in</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38617" 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/118">Post #117</a>
	                </div>
	            </div>
              <div id="likers-container-38617" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38617"
                     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="38619" data-post-id="38619">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="MikeAnthony" data-post="118" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>I think this response indicates you are too close to phoenix (understandably) to understand the issue and its causing you to be quite unfair in your response to Shrike here.</p>
</blockquote>
</aside>
<p>It’s not unfair to ask folks, newcomers included, to at the very least use Phoenix before etching their stance in the ground. This doesn’t mean I expect folks to learn everything, by “use” I mean at the very least I think it’s fair to ask someone to go through the getting started guides and tinker a bit before coming here and piling on with negative feedback.</p>
<aside class="quote no-group" data-username="MikeAnthony" data-post="118" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>Your response here seems to be suggesting  - learn  my framework first and then come back and talk about specifics but thats not how the newbie world works</p>
</blockquote>
</aside>
<p>That is not at all what I’m suggesting. The post in question said they hadn’t even taken a look at Phoenix yet.</p>
<aside class="quote no-group" data-username="MikeAnthony" data-post="118" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>There are more non newbies in this thread than newbies so hope you will appreciate an outside  newbie looking in</p>
</blockquote>
</aside>
<p>I always appreciate newcomer stances, since after all I’ve been helping to grow the community since the beginning. We are by definition community of newcomers right now <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"> I’m only asking that folks who want to take a negative stance here at least have run <code>mix phx.new</code> before. I don’t think asking such is unfair.</p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Phoenix-Core-Team" data-username="chrismccord" data-post="119" 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/chrismccord/48/24233_2.png" class="avatar"> chrismccord:</div>
<blockquote>
<p>That is not at all what I’m suggesting. The post in question said they hadn’t even taken a look at Phoenix yet.</p>
</blockquote>
</aside>
<p>Fair enough Chris. It is what he said. I did not take it as literally or he would not even have been here discussing contexts.  I do think a lot of people read through docs  before they decide to actually create a project.  Then  they weigh the complexity they see  against the utility.  Anyway I have fired up a few projects and I would have done the project I am now doing in Django with Phoenix except as a newbie I thought it would be a very bad idea for me to roll my own authentication or even think i had  expertise to know which existing one was secure enough.</p>
<p>I guess  for contexts to totally click for me I would have to see a project in a previous version compared against the latest version of phoenix with code to  really see the overall benefit it is to me  in my stage of development. I am at the dangerous point of thinking I get it but not sure what I got is right <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"> . I’ll keep looking and reading.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38626" 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/120">Post #119</a>
	                </div>
	            </div>
              <div id="likers-container-38626" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38626"
                     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="38627" data-post-id="38627">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="MikeAnthony" data-post="120" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>Anyway I have fired up a few projects and I would have done the project I am now doing in Django with Phoenix except as a newbie I thought it would be a very bad idea for me to roll my own authentication or even think i had  expertise to know which existing one was secure enough.</p>
</blockquote>
</aside>
<p>This is exactly my main pain point with Phoenix. Although I use it I feel very insecure with authentication because I’ve used all the approaches:</p>
<ol>
<li>make my own following the Phoenix book (to learn and use it in a very simple use case);</li>
<li>use Coherence/Openmaize/Phaux but none of them is stable or covers my needs (Oauth);</li>
<li>looked into Guardian/Ueberauth but I don’t want to use JWT (I want to leverage Phoenix tokens).</li>
</ol>
<p>So, authentication COULD BE the thing to make me leave Phoenix as IT IS the thing that keeps me periodically testing other languages/Frameworks hopping that there’s a new one as good as Phoenix but with Authentication.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38627" 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/121">Post #120</a>
	                </div>
	            </div>
              <div id="likers-container-38627" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38627"
                     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>
    <div class="postbit" id="38648" data-post-id="38648">
  <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 group-Phoenix-Core-Team" data-username="chrismccord" data-post="119" 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/chrismccord/48/24233_2.png" class="avatar"> chrismccord:</div>
<blockquote>
<p>It’s not unfair to ask folks, newcomers included, to at the very least use Phoenix before etching their stance in the ground.</p>
</blockquote>
</aside>
<p>It’s nor unfair indeed, but in the competition for user mindshare, it might lose future hsers to other applications that do not require that. We have an embarassment of riches in the web framework department. I’ve only used python frameworks and some JVM based ones. Python alone gives you Django, Flask, Pyramid, Websauna (on top of pyramid), aiohttp, sanic, falcon, CherryPy, Tornado, Twist. The JVM gives you several languages, each with one or more frameworks, like java (Spring, Spark, too many others to list), clojure (Luminus, noir, but it’s mostly DYI based on something like plug), scala (Play, Scalatra, Liftweb), kotlin, etc. This doesn’t even touch frameworks written for C, C++, go, javascript, ruby or many others.</p>
<p>Most of these frameworks are quite similar to each other (i.e, they consume requests and spits responses – booooooring, that’s so '00s!), but they all create noise. At the same time, some are obviously better than others for some uses, even within their sometimes limited capabilities.</p>
<p>A newbie doesn’t have time to run <code>framework.new</code> for every framework out there. This is not a value judgement, it’s just a fact of life. I’ve done it for most python frameworks, but I can’t do it for all frameworks out there. So frameworks must have some way to convince users to try it. For me, it was <a class="mention" href="/u/chrismccord" rel="nofollow">@chrismccord</a>’s video in the phoenix’s website <a href="http://www.phoenixframework.org/docs/overview" rel="nofollow">here</a>. But the video is not thaaat convincing in general for a newbie. It convinced ME because I had a prototype of a web application I couldn’t make work with anything else the way I wanted it. But newbies often want to learn a tool to build something, to get “something” out there. And that video is not convincing for those use cases. I do believe that phoenix is the best tool for almost any web application, unless some other language already has something prebuilt that is just perfect for your project (libraries, frameworks, etc). But nothing in the docs/forums or videos would convince me of that.</p>
<p>To capture newbies, Phoenix must sometimes say: Phoenix <em>is</em> your application! Dump stuff into the controller! Request comes in, response comes out! Web apps <em>are</em> interfaces to a database! 90% of all web apps are CRUD and phoenix is <em>very good</em> with CRUD! Phoenix is Rails + websockets! Even if these are all either bold faced lies or very stupid marketing points.</p>
<p>This is what gets you newbies, not 9 nines of reliability, not code swapping, not references to boring european Telecom companies. I mean, these things totally got me, but I’m not thaaat newbie.</p>
<p>Now, it’s totally OK if you don’t want to get very green newbies, or if you don’t want to get them <em>hard enough</em> to use my sentences above as marketing points. Some users in this or other threads have actually said that too many newbies is not necessary a good thing. But to be really appealing to newbies, Phoenix reeaaaly needs to up its marketing game.</p>
<p>Another problem is the fact that many inexperienced people seem to be jumping to a release candidate that doesn’t even have a proper tutorial that holds your hand through an entire application.</p>
<p>But in any case, I think some concrete steps might help newbies and even some more experiences users that are struggling with contexts.</p>
<p><strong>What might help newbies</strong></p>
<p>First, from the point of view of the general documentation:</p>
<p>Django has the <a href="https://docs.djangoproject.com/en/1.11/intro/tutorial01/" rel="noopener nofollow ugc">django tutorial</a>. Flask has Miguel’s <a href="https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world" rel="noopener nofollow ugc">mega tutorial</a>. Pyramid has the <a href="https://docs.pylonsproject.org/projects/pyramid/en/latest/" rel="noopener nofollow ugc">official docs</a> and multiple tutorials. They all walk you through an example application, through which you can get a feeling for how an app is structured and why things are the way they are. Phoenix has some docs for 1.2 that are as good as the ones I’ve linked, but nothing that deals with contexts…</p>
<p>Newbies NEED and example of an application using 2 or more contexts with real boundaries, in a way that makes sense, even if it is a small application or almost a toy. As long as it’s real code it’s good enough. We don’t have anything like this yet, and we should. This is something I’d like to do, but for which I unfortunately have no time right now.</p>
<p>This is even more important if Phoenix wants to capture newbies that are learning Elixir as their first backend app (well, second if you count JS as a “backend app”). I came to phoenix already knowing what DB abstraction layers, models, routes were. Each of this things is a stumbling block. Functional programming (which is much simpler to me than any of the alternatives actually), processes, OTP (even if you can do stuff without knowing what this is) and Supervisors. Now, add the 3-4 levels deep abstraction (as I explain below) of contexts, and you might get the:</p>
<aside class="quote no-group" data-username="MikeAnthony" data-post="118" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>proverbial straw on the back after many straws</p>
</blockquote>
</aside>
<p>Second, from the point of view of context generators:</p>
<p>I think contexts are a very good thing. They are a nice way of organizing the code and very useful even for relatively small apps. But they are also a little abstract. In the end, a schema is a subset of DB columns, and a context is a set of schemas. If you think like this, you can actually draw some pretty Ven  diagrams or some pretty tri-partite graphs. But a command line interface is not a very good interface to something that draws tri-partite graphs.</p>
<p>A way of visualizing DB tables, schemas and contexts graphically would be very helpful for some visual thinkers like me. Double so if you could actually plan and generate your contexts/schemas/migrations through a visual interface. The stack from contexts to DB tables is 3 levels deep (and 3 files away!). Also, migrations are “deltas” of tables, so you can count that as a 4th level.</p> 
	            </div>

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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MikeAnthony" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MikeAnthony
                  </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="122" 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>think contexts are a very good thing. They are a nice way of organizing the code and very useful even for relatively small apps. But they are also a little abstract. In the end, a schema is a subset of DB columns, and a context is a set of schemas.</p>
</blockquote>
</aside>
<p>alright then I may be close.  Could you say that since in some frameworks you devise your schema from your model that contexts are more  discrete/specified models that divide/hones in on the separate  concerns?  lol if thats not even close then I have a LOT more reading to do.</p>
<p>[quote][quote=“PJextra, post:121, topic:5929”]<br>
2) use Coherence/Openmaize/Phaux but none of them is stable or covers my needs (Oauth);<br>
[/quote]</p>
<p>I hope thats not true. Contexts might turn out not to be a barrier too high but asking newbies to choose among unstable packages (and I had thought by now one of those would be) or roll their own definitely is not newbie friendly.  the community should at least have a vetted recommended and stable package.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38651" 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/123">Post #122</a>
	                </div>
	            </div>
              <div id="likers-container-38651" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38651"
                     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 #122"></div>
  </section>
</div>
    <div class="postbit" id="38652" data-post-id="38652">
  <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">
								<aside class="quote no-group" data-username="MikeAnthony" data-post="120" 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/m/779978/48.png" class="avatar"> MikeAnthony:</div>
<blockquote>
<p>I guess  for contexts to totally click for me I would have to see a project in a previous version compared against the latest version of phoenix with code to  really see the overall benefit it is to me  in my stage of development. I am at the dangerous point of thinking I get it but not sure what I got is right <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"> . I’ll keep looking and reading.</p>
</blockquote>
</aside>
<p>Have you seen this thread:</p>
<aside class="quote quote-modified" data-post="1" data-topic="5947">
  <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/how-would-you-explain-phoenix-contexts-to-a-newbie/5947" rel="nofollow">How would you explain Phoenix Contexts to a newbie?</a> <a class="badge-category__wrapper " href="/c/chat-discussions/chat-discussions/167" rel="nofollow"><span data-category-id="167" 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">Discussions</span></span></a>
    </div>
  </div>
  <blockquote>
    If a newbie asked you about Phoenix Contexts, how would you explain the basics to them? 
Feel free to be as concise or in-depth as you like… 

<a name="p-36354-in-short-1" class="anchor" href="#p-36354-in-short-1" aria-label="Heading link" rel="nofollow"></a>In short:
Phoenix Contexts are just dedicated modules that expose and group functionality. 
<a name="p-36354-official-docs-2" class="anchor" href="#p-36354-official-docs-2" aria-label="Heading link" rel="nofollow"></a>Official Docs:


<a name="p-36354-also-see-3" class="anchor" href="#p-36354-also-see-3" aria-label="Heading link" rel="nofollow"></a>Also see:

<a href="https://forum.elixirforum.com/t/phoenix-contexts-learning-resources/5930/" rel="nofollow">Phoenix Contexts - learning resources wiki</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>
  </blockquote>
</aside>

<p>Try<a href="https://forum.elixirforum.com/t/how-would-you-explain-phoenix-contexts-to-a-newbie/5947/8" rel="nofollow"> this post</a> first.</p>
<aside class="quote no-group" data-username="PJextra" data-post="121" 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/p/e19b73/48.png" class="avatar"> PJextra:</div>
<blockquote>
<p>So, authentication COULD BE the thing to make me leave Phoenix as IT IS the thing that keeps me periodically testing other languages/Frameworks hopping that there’s a new one as good as Phoenix but with Authentication.</p>
</blockquote>
</aside>
<p>There are a number of threads about <a href="https://forum.elixirforum.com/t/user-authentication-in-phoenix/118" rel="nofollow">built in auth</a>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38652" 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/124">Post #123</a>
	                </div>
	            </div>
              <div id="likers-container-38652" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38652"
                     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 #123"></div>
  </section>
</div>
    <div class="postbit" id="38655" data-post-id="38655">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AstonJ" data-post="124" 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/astonj/48/15_2.png" class="avatar"> AstonJ:</div>
<blockquote>
<p>Have you seen this thread:</p>
</blockquote>
</aside>
<p>yes I did and I purposefully didn’t want to mention  it because I felt some might take offense but some of those  explanations are exactly why Phoenix is now coming across as not newbie friendly.  its kind of what I meant when I wrote<br>
“high minded conceptualizations sentences without much specified meaning”</p>
<p>D o not wish to offend but sentences like these have no concrete meaning -</p>
<aside class="quote no-group">
<blockquote>
<p>Phoenix Contexts are just dedicated modules for functionality that can easily be classified as a group.</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="Azolo" data-post="3" data-topic="5947">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/azolo/48/2189_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/how-would-you-explain-phoenix-contexts-to-a-newbie/5947/3" rel="nofollow">How would you explain Phoenix Contexts to a newbie?</a></div>
<blockquote>
<p>Contexts are just the explicit application of behavior to data.</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="DianaOlympos" data-post="5" data-topic="5947">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dianaolympos/48/4353_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/how-would-you-explain-phoenix-contexts-to-a-newbie/5947/5" rel="nofollow">How would you explain Phoenix Contexts to a newbie?</a></div>
<blockquote>
<p>I would say that context are where you put the functions that transform your internal data into something the web layer use.</p>
</blockquote>
</aside>
<p>the last one isn’t that bad except whats being referred to as a web layer is quite ambiguous.  you could use that language of a view.</p>
<p>There are a few posts in that thread that did in fact shed some light when I first read it but also  quite a few that would scare the beejeezuz out of a newbie as reading some Microsoft  docs would.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="38655" 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/125">Post #124</a>
	                </div>
	            </div>
              <div id="likers-container-38655" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="38655"
                     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 #124"></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=13">Load more posts (46 remaining)</a>
</div></template></turbo-stream>