<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>Since the uploading of JS is an interesting concept, let me just share a little about another service at Y! that has done this.</div>
<div><br>
</div>
<div><a href="http://developer.yahoo.com/yql/guide/yql-execute-chapter.html">http://developer.yahoo.com/yql/guide/yql-execute-chapter.html</a></div>
<div><br>
</div>
<div>YQL (although closed-source) has exposed this ability, so its entirely possible to do (although it likely won't be running in python). YQL itself is slightly similar to a DSL also (its DSL is similar to SQL). The nice thing about using something like JS
 (to continue along this idea, even if nobody wants to actually implement this) is that things like
<a href="http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29">rhino</a> do provide execution limits (at the instruction level). Of course this would potentially bring in java (I am guessing node.js can do something similar as rhino). Anyways…</div>
<div><br>
</div>
<div>To further this lets continue working on <a href="https://etherpad.openstack.org/p/taskflow-mistral">https://etherpad.openstack.org/p/taskflow-mistral</a> and see if we can align somehow (I hope it's not to late to do this, seeing that there appears to
 be a lot of resistance from the mistral community to change). But I agree with clint, and hope that we can have a healthy collaboration as a community instead of being in competing silos (which is not healthy).</div>
<div><br>
</div>
<div>-Josh</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>Clint Byrum <<a href="mailto:clint@fewbar.com">clint@fewbar.com</a>><br>
<span style="font-weight:bold">Reply-To: </span>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Date: </span>Monday, March 17, 2014 at 9:41 AM<br>
<span style="font-weight:bold">To: </span>openstack-dev <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [Mistral] Actions design BP<br>
</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>
<div>
<div>Excerpts from Renat Akhmerov's message of 2014-03-17 07:35:02 -0700:</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div></div>
<div>On 16 Mar 2014, at 19:05, Clint Byrum <<a href="mailto:clint@fewbar.com">clint@fewbar.com</a>> wrote:</div>
<div></div>
<div>> From my perspective, as somebody who is considering Mistral for some</div>
<div>> important things, the fact that the taskflow people are not aligned with</div>
<div>> the Mistral people tells me that Mistral is not what I thought it was:</div>
<div>> taskflow for direct user consumption.</div>
<div></div>
<div>Yes, it was just an initial idea we were trying to pursue. As we moved forward we understood it was too limited and had a lot of pitfalls. The reason is the key difference between library and service. Making something a service flips everything upside
 down in terms of requirements to this new system. The logical questions/implications are:</div>
<div>If that’s a service why should its REST API be Python oriented? Bindings - yes (it gives a certain convenience) but that’s a different story..</div>
<div>A whole set of questions related to how we distribute Python-written tasks (especially in multi tenant environment, e.g. as a cloud hosted service):</div>
<div>Dependencies</div>
<div>Sandboxing</div>
<div>Result serialisation</div>
<div>etc.</div>
<div>It becomes logical to be able to use it with non-python clients and external systems.</div>
<div>Orientation to long-lived processes(workflows). Synchronous execution model no longer works well, instead de facto asynchronous event-based architecture fits better. I know it may sound too generic, it’s a whole different topic..</div>
<div>It becomes logical to provide more high-level capabilities rather than a library does (e.g. Horizon Dashboard. It would not be much of use if the service was based on Python).</div>
<div></div>
</blockquote>
<div><br>
</div>
<div>I assume Mistral is written in Python though, and so it should be using</div>
<div>Taskflow for its own workflow. I understand though, that to run _user_</div>
<div>workflows you can't just expect them to upload python or always run</div>
<div>python as Mistral wouldn't do much for them at that point.</div>
<div><br>
</div>
<div>However, for the User<->Taskflow integration, I think Josh Harlow offered</div>
<div>a really reasonable suggestion to that, which is instead of inventing</div>
<div>a DSL (frankly, I'm pretty frustrated with the Heat DSL's we have, so I</div>
<div>may be biased here), just embrace javascript or lua, which are designed</div>
<div>to be embedded and executed in a less-than-trusted context.</div>
<div><br>
</div>
<div>I think it would be a great story for users if Mistral worked like this:</div>
<div><br>
</div>
<div>- Upload javascript expression of workflow, with external callouts for</div>
<div>  complicated things.</div>
<div>- Run code that uses Mistral API to poll-for or subscribe-to</div>
<div>  notifications waiting for instructions from Mistral when it is</div>
<div>  supposed to run said external callouts, and feeds back data.</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>I believe it’s not the full list.</div>
<div></div>
<div>Despite of all this I’m not against of using TaskFlow in implementation, at least some pieces of it. My only call is: it should be really beneficial rather than bringing pain. So I’m ok if we keep aligning our capabilities, roadmaps, terminology and whatever
 else is needed. </div>
<div></div>
<div>Btw, it would be really helpful if you could clarify what you meant “some important things”. Asking because I still feel like we could have much more input from potential users. Any information is appreciated.</div>
<div></div>
</blockquote>
<div><br>
</div>
<div>- Heat needs to move from being a single state machine (heat-engine owns</div>
<div>  all of the running tasks for a stack in one engine at a time) to a</div>
<div>  distributed state machine. Before we do that, we need to consider how</div>
<div>  Heat expresses workflow. If Mistral were a distributed workflow</div>
<div>  engine, it would make a lot of sense for Heat to make use of it for</div>
<div>  this purpose.</div>
<div><br>
</div>
<div>- TripleO deploys a number of things that need distributed workflow.</div>
<div>  I think at this point the people involved with that are looking more</div>
<div>  at lower level tools like RAFT and Concoord. But once the distributed</div>
<div>  state machine is settled, there will be a need to express the</div>
<div>  distributed workflow. I'm disinclined to diverge from Taskflow, even</div>
<div>  though I am quite inclined to embrace API's.</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;">
<div>> So, while it may be annoying to have your "day to day project</div>
<div>> activities" questioned, it is pretty core to the discussion considering</div>
<div>> that this suggests several things that diverge from taskflow's core</div>
<div>> model.</div>
<div></div>
<div>Np. I still keep finding things/rules in OpenStack that I’m not really aware of or didn’t get used to yet. If that’s not how it should be done in OS then it’s fine.</div>
</blockquote>
<div><br>
</div>
<div>I'm sorry if the message was harsh, but I see this happening a lot.</div>
<div><br>
</div>
<div>I don't think it is a rule. I think the principle here is to collaborate</div>
<div>on things that should be aligned. If Taskflow doesn't do what you need</div>
<div>it to do, then I suggest _fixing that_ rather than writing a private</div>
<div>implementation. It will make life better for all users of taskflow and</div>
<div>it will keep Mistral extremely simple, which will help with adoption by</div>
<div>operators _and_ users.</div>
<div><br>
</div>
<div>_______________________________________________</div>
<div>OpenStack-dev mailing list</div>
<div><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a></div>
<div><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></div>
<div><br>
</div>
</div>
</div>
</blockquote>
</span>
</body>
</html>