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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="chrisjowen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrisjowen/120/13126_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  chrisjowen
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/derek-zhou" rel="nofollow">@derek-zhou</a></p>
<aside class="quote no-group" data-username="derek-zhou" data-post="10" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/48/19943_2.png" class="avatar"> derek-zhou:</div>
<blockquote>
<p>My question: so how do you use Temporal today, roll your own Elixir wrapper or use another fully supported language?</p>
</blockquote>
</aside>
<p>Today I would use the SDK I was promoting in the OP i.e.  <a href="https://github.com/andrzej-mag/temporal_sdk" class="inline-onebox" rel="noopener nofollow ugc">GitHub - andrzej-mag/temporal_sdk: Temporal Erlang/Elixir SDK · GitHub</a></p>
<p>Previously Ive used the typescript, python and java SDKs for this. When I was working elixir I had many disjointed Oban jobs which I converted to Temporal workflows and this was really nice but meant any Elixir functionality I needed to expose a phoinex api endpoint or similar.</p>
<p>Today in Elixir I would want to use this SDK, which looks pretty great to me.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387267" 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/anyone-care-about-temporal/75053/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-387267" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387267"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="387272" data-post-id="387272">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="chrisjowen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrisjowen/120/13126_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  chrisjowen
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cevado" data-post="11" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cevado/48/40655_2.png" class="avatar"> cevado:</div>
<blockquote>
<p>the appealing points of temporal, are not so appealing to someone already using beam</p>
</blockquote>
</aside>
<p>Hey <a class="mention" href="/u/cevado" rel="nofollow">@cevado</a>, I was actually using elixir and Oban specifically when I started using Temporal.</p>
<p>I looked at Oban Pro again, it’s nice but I still see it serving a different process.</p>
<p>My understanding is (correct if wrong)</p>
<ul>
<li>Oban - solid worker queues</li>
<li>Oban Pro -  orchestration platform</li>
<li>Temporal - <strong>Durable</strong> execution and orchestration platform</li>
</ul>
<p>The durable part has great benefits if needed but also costs if throughput is a key driver. It’s not better, just different.</p>
<p>At my time I needed long running workflows that could span days, had manual steps in the middle and needed to survive failures and restarts for all that time.</p>
<p>Temporal essentially a event system under the hood and all worker scheduling and state events are is persisted at every step. So if the whole system goes down it can just replay all events and catch-up. It also supports signals which are external events that can be sent to the workflow so the support for external manual steps like approval were trivial to add.</p>
<p>Generally I’ve no bad word to say against Oban, and it’s only got better since I looked at it. But I still thing it serves very different purposes and while you <em>can</em> build some of the things to Oban to make it somewhat act like Temporal it’s not as trivial as it first seems when you get into the weeds.</p>
<p>For example as noted, keeping all this state and replaying several days later is problematic if you need to upgrade these workflows. Temporal has support for workflow versioning that would definitely not be trivial to replicate.</p>
<p>On costs, when I said we are comparing “apples to oranges” - the costs from Temporal are only their cloud offering. To run on your own infra (like you would with Oban Pro) it’s free and fully open source.</p>
<p>What you may optionally want to pay for cloud is their infra and managed service. Don’t need to I use it if your projects don’t have much demand and are happy managing your own infra.</p>
<p>For me though the main driver was that Temporal was simple, just add some annotations to functions and register them and you get full durable and reliable execution, took all the hard thought out of distributed orchestration.</p>
<p>My point here was merely that I think Temporal is a good product and fits well in the Elixir ecosystem and worth a look.</p>
<p>If you don’t need the guarantees Temporal offers for your use case that’s cool, but I know many projects that do and I would rather use tools that are well tested on this than build my own attempt on top of technologies with different goals. Even on “relic” software <img src="https://forum.elixirforum.com/images/emoji/apple/joy.png?v=15" title=":joy:" class="emoji" alt=":joy:" 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="387272" 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/anyone-care-about-temporal/75053/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-387272" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387272"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="387276" data-post-id="387276">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sorentwo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sorentwo/120/37360_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sorentwo
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Oban Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="chrisjowen" data-post="13" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrisjowen/48/13126_2.png" class="avatar"> chrisjowen:</div>
<blockquote>
<ul>
<li>Oban Pro - orchestration platform</li>
<li>Temporal - <strong>Durable</strong> execution and orchestration platform</li>
</ul>
</blockquote>
</aside>
<p>With the <code>recorded</code> option, and particularly <a href="https://oban.pro/docs/pro/Oban.Pro.Workflow.html#module-cascading-functions" rel="noopener nofollow ugc">cascading workflows</a>, Pro is also durable. That’s not limited to Workflows either, any <a href="https://oban.pro/docs/pro/Oban.Pro.Worker.html#module-recorded-jobs" rel="noopener nofollow ugc">job’s output can be recorded</a> and referenced later.</p>
<aside class="quote no-group" data-username="chrisjowen" data-post="13" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrisjowen/48/13126_2.png" class="avatar"> chrisjowen:</div>
<blockquote>
<p>At my time I needed long running workflows that could span days, had manual steps in the middle and needed to survive failures and restarts for all that time.</p>
</blockquote>
</aside>
<p>That’s precisely how Workflows operate. Jobs are transparently distributed across your running nodes, the return value is recorded for retrieval later, and downstream deps can read the preserved values. It’s <a href="https://oban.pro/articles/weaving-stories-with-cascading-workflows" rel="noopener nofollow ugc">even easier with cascades</a> because the accumulated context is passed to each function in the workflow:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def insert(source, date) do
    Workflow.new()
    |&gt; Workflow.put_context(%{source: source, date: date})
    |&gt; Workflow.add_cascade(:extract, &amp;extract/1)
    |&gt; Workflow.add_cascade(:transform, &amp;transform/1, deps: :extract)
    |&gt; Workflow.add_cascade(:load, &amp;load/1, deps: :transform)
    |&gt; Workflow.add_cascade(:notify, &amp;notify/1, deps: [:transform, :load])
    |&gt; Oban.insert_all()
  end

  def extract(%{source: source, date: date}) do
    if source =~ ~r/[a-z0-9]+/ do
      %{records: [1, 2, 3], extracted_at: DateTime.utc_now()}
    else
      {:cancel, "unprocessable source"}
    end
  end

  ...
</code></pre>
<aside class="quote no-group" data-username="chrisjowen" data-post="13" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrisjowen/48/13126_2.png" class="avatar"> chrisjowen:</div>
<blockquote>
<p>It also supports signals which are external events that can be sent to the workflow so the support for external manual steps like approval were trivial to add.</p>
</blockquote>
</aside>
<p>That’s <a href="https://oban.pro/articles/unlocking-agentic-workflows-with-oban-pro" rel="noopener nofollow ugc">also possible for Oban Workflows</a>, but functionality to make it simpler and more powerful is landing in Pro v1.7.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387276" 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/anyone-care-about-temporal/75053/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-387276" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387276"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="387278" data-post-id="387278">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Temporal Erlang and Elixir SDK author here.<br>
<a class="mention" href="/u/chrisjowen" rel="nofollow">@chrisjowen</a>, thank you for your kind words and for explaining Temporal concepts to this Community.</p>
<p>For the sake of completeness, here are the Temporal Erlang and Elixir SDK links:</p>
<ul>
<li><a href="https://github.com/andrzej-mag/temporal_sdk" rel="noopener nofollow ugc">SDK GitHub repository</a></li>
<li><a href="https://hex.pm/packages/temporal_sdk" rel="nofollow">SDK hex.pm package</a></li>
<li><a href="https://hexdocs.pm/temporal_sdk" rel="noopener nofollow ugc">SDK hexdocs documentation</a></li>
<li><a href="https://github.com/andrzej-mag/temporal_sdk_samples" rel="noopener nofollow ugc">Samples GitHub repository</a></li>
<li><a href="https://hexdocs.pm/temporal_sdk_samples" rel="noopener nofollow ugc">Samples hexdocs documentation</a></li>
</ul>
<p>SDK is under active development. Building a native Temporal SDK is a substantial effort due to Temporal’s extensive feature set.</p>
<p>For those interested in learning more about the Temporal, here are some helpful resources:</p>
<ul>
<li><a href="https://github.com/temporalio" rel="noopener nofollow ugc">Temporal GitHub</a></li>
<li><a href="https://github.com/temporalio/temporal" rel="noopener nofollow ugc">Temporal server repository</a></li>
<li><a href="https://github.com/temporalio/awesome-temporal" rel="noopener nofollow ugc">Awesome Temporal</a></li>
<li><a href="https://www.youtube.com/@Temporalio/videos" rel="noopener nofollow ugc">YouTube channel</a></li>
<li><a href="https://community.temporal.io/" rel="noopener nofollow ugc">Forum</a></li>
<li><a href="https://temporal.io/blog" rel="noopener nofollow ugc">Blog</a></li>
<li><a href="https://t.mp/slack" rel="noopener nofollow ugc">Slack</a></li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387278" 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/anyone-care-about-temporal/75053/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-387278" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387278"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="387281" data-post-id="387281">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><em>(OK, so I really should learn to just never comment at the end of a long day. Half-doing comments and being not well-informed should just be fully off-limits. Self-remark. I do it less and less with time but zero is the ideal number here.)</em></p>
<hr>
<p>First, <a class="mention" href="/u/chrisjowen" rel="nofollow">@chrisjowen</a> sorry, I was hasty. I mistook Temporal for something else completely. Temporal does indeed support self-hosting and the pricing is based solely on the hosted offering. While I still don’t agree with tiered pricing and would not choose it for my projects, I get that people need to make money and to not be on the negative by taking customers with tens of millions of jobs for $5 a month. Obviously.</p>
<p>Secondly, RE: the “relic” thing, that was mostly me commenting on the annotations. But I have to be super transparent here: I started changing my mind on this with time. We all got stuff to do and I no longer over-focus on technical details that bothered me before. Nowadays I am like: “Is the code readable and does it get the job done?”. While having annotations is teetering on the verge of “magic” – something many of us here in the Elixir ecosystem do not like – it’s also a real genuine convenience.</p>
<p>Thirdly, again the “relic” thing – to me that also relates to the choice of programming language. Just by choosing Elixir (or Erlang) you get much more guarantees that you must emulate in almost any other PL. To me that’s hugely valuable and must not be glossed over. That being said, everyone is free to use whatever PL they wish, for their own reasons. Though, integrating through Ports or other similar means kind of goes into implementation churn – that’s why I’d still choose Oban + Pro even if it has less features than Temporal in the strict sense.</p>
<p>So, fair is fair. I was wrong on the features / hosting model – admitting fault. Being able to self-host should generally nullify most criticism towards a piece of software’s pricing models.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387281" 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/anyone-care-about-temporal/75053/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-387281" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387281"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="387282" data-post-id="387282">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for posting the links. How is the integration with Erlang done exactly? Is it with a <code>Port</code>, or something else? What is the integration glue?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387282" 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/anyone-care-about-temporal/75053/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-387282" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387282"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="387283" data-post-id="387283">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Temporal Server uses gRPC for communication with SDKs, see <a href="https://github.com/temporalio/api" rel="noopener nofollow ugc">Temporal gRPC API</a>.<br>
Temporal Erlang and Elixir SDK is a native implementation and therefore uses gRPC to communicate directly with the Temporal Server.<br>
<a href="https://hex.pm/packages/gpb" rel="nofollow">gpb</a> package handles protobuf definitions.<br>
<a href="https://hex.pm/packages/gun" rel="nofollow">gun</a> is used as a default HTTP/2 client, see <a href="https://hexdocs.pm/temporal_sdk/temporal_sdk_grpc_adapter_gun.html" rel="noopener nofollow ugc">temporal_sdk_grpc_adapter_gun</a>. Other HTTP/2 client packages can be used by implementing <a href="https://hexdocs.pm/temporal_sdk/temporal_sdk_grpc_adapter.html" rel="noopener nofollow ugc">temporal_sdk_grpc_adapter</a> behavior.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387283" 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/anyone-care-about-temporal/75053/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-387283" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387283"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="387299" data-post-id="387299">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Having used temporal the last few months (free only), and having used oban pro at past positions for decently mid scale amounts of jobs…</p>
<p>Temporal blows it out of the water. It isn’t even close. Not only does it work well, support tons of features, is really stable, at its bottom end it is just postgres and a few pods in my k8s cluster. It has a good CLI and great logs and a great dashboard. You can version workflow activities so that running workflows continue through deploys, you can rewind problem executions to an earlier point in time, getting updates on progress through to the ui, the list just goes on and on.</p>
<p>In my opinion oban never felt very elixir like to me. I found developers dipping into oban’s database to give basic functionality like polling for workflow progress and so forth. So if elixir had good bindings in elixir I’d use that every time.</p>
<p>Just my opinion.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387299" 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/anyone-care-about-temporal/75053/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-387299" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387299"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="387306" data-post-id="387306">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>PgFlow is an option if you are using Postgres:</p>
<p><a href="https://github.com/agoodway/pgflow" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/agoodway/pgflow</a></p>
<p>comparison here: docs/COMPARISON.md</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387306" 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/anyone-care-about-temporal/75053/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-387306" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387306"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="387307" data-post-id="387307">
  <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="cpursley" data-post="20" data-topic="75053">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cpursley/48/25075_2.png" class="avatar"> cpursley:</div>
<blockquote>
<p>comparison here: docs/COMPARISON.md</p>
</blockquote>
</aside>
<p>This is a hugely valuable document, thank you. Just lately I’ve been trying to do something similar. Glad that you beat me to 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="387307" 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/anyone-care-about-temporal/75053/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-387307" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387307"
                     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 #20"></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/75053/load_more?page=3">Load more posts (10 remaining)</a>
</div></template></turbo-stream>