<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>
<div>Chiming in,</div>
<div><br>
</div>
<div>I'd like taskflow to get into the state-machine area (it's been discussed for a while [1]). It also does the workflow through defined steps[2] until completion (which imho is a subset in a way of the fully changeable state-machine). It also tries to add
 more value since when u declaratively define what the 'work' should be (within limits) u can then have taskflow execute it (via [3]), making imho your code less complicated (although it at the same time does at a new layer in), and letting taskflow try to
 help make it reliable for u (helping u do things like resume from a crash, run your code remotely via workers). Of course the library is actively developed (jump on #openstack-state-management) so additions like this or something like in the mentioned machinist
 library, which seems like just the foundational state-machine classes, could be hooked in/added.</div>
<div><br>
</div>
<div>The trouble I've had and that will likely be had with a approach like this is imho the complexity of it (and how much structuring code will there be, aka boilerplate); even currently taskflow already imposes some boilerplate (task/flow/engines objects)
 and mindset changes to adopting projects. A state-machine would impose similar + more (the states u could think of as task objects, the transitions would have to be some type of table, the reactions would be ?? and so on). Going down this path imho has to
 be done carefully and with consideration (and nothing will likely be perfect). This has always made me hesitate a little, in that it seems to add a lot of complexity that if not done carefully will cause more pain than goodness (the yin and yang). This is
 where I'd rather carefully figure out what this state-machine looks like (machinst looks to be the raw state-machine building blocks) and how it will/could be used and what benefit will it be bringing short-term and long-term. But I guess the one way to do
 it is try & learn (if u don't try u will never learn).</div>
<div><br>
</div>
<div>Certain other things that become interesting questions for taskflow and any type of state-machine (concepts that taskflow has that are being used that aren't typically thought about):</div>
<div><br>
</div>
<div>1. Persistence [4] (see how it is used)</div>
<div>2. What does undoing/reverting/resuming a state-machine even mean?</div>
</div>
<div><br>
</div>
<div>[1] <a href="https://etherpad.openstack.org/p/CinderTaskFlowFSM" style="font-family: Helvetica, Arial; font-size: 13px;">https://etherpad.openstack.org/p/CinderTaskFlowFSM</a></div>
<div>[2] <a href="http://docs.openstack.org/developer/taskflow/states.html">http://docs.openstack.org/developer/taskflow/states.html</a> </div>
<div>[3] <a href="http://docs.openstack.org/developer/taskflow/engines.html">http://docs.openstack.org/developer/taskflow/engines.html</a> </div>
<div>[4] <a href="http://docs.openstack.org/developer/taskflow/persistence.html">http://docs.openstack.org/developer/taskflow/persistence.html</a> </div>
<div> </div>
<div>Anyways just some thoughts.</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>Chris Armstrong <<a href="mailto:chris.armstrong@RACKSPACE.COM">chris.armstrong@RACKSPACE.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>Thursday, April 24, 2014 at 9:49 AM<br>
<span style="font-weight:bold">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">Subject: </span>Re: [openstack-dev] [Heat][Summit] Input wanted - real world heat spec<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><style>body{font-family:Helvetica,Arial;font-size:13px}</style>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
On April 23, 2014 at 7:47:37 PM, Robert Collins (<a href="mailto:robertc@robertcollins.net">robertc@robertcollins.net</a>) wrote:</div>
<div>
<blockquote type="cite" class="clean_bq" style="color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">
<span>
<div>
<div></div>
<div>Hi, we've got this summit session planned -<span class="Apple-converted-space"> </span><br>
<a href="http://summit.openstack.org/cfp/details/428">http://summit.openstack.org/cfp/details/428</a> which is really about<span class="Apple-converted-space"> </span><br>
<a href="https://etherpad.openstack.org/p/heat-workflow-vs-convergence">https://etherpad.openstack.org/p/heat-workflow-vs-convergence</a><span class="Apple-converted-space"> </span><br>
<br>
We'd love feedback and questions - this is a significant amount of<span class="Apple-converted-space"> </span><br>
work, but work I (and many others based on responses so far) believe<span class="Apple-converted-space"> </span><br>
it is needed to really take Heat to users and ops teams.<span class="Apple-converted-space"> </span><br>
<br>
Right now we're looking for both high and low level design and input.<span class="Apple-converted-space"> </span></div>
</div>
</span></blockquote>
</div>
<p>One thing I’m curious about is whether we would gain benefit from explicitly managing resources as state machines. I’m not very familiar with TaskFlow, but my impression is that it basically knows how to run a defined workflow through multiple steps until
 completion. Heat resources will, with this change, become objects that need to react to inputs at any point in time, so I wonder if it’s better to model them as a finite state machine instead of just with workflows.</p>
<p>Granted, I’m pretty unfamiliar with TaskFlow, so I may be off the mark here. I would like to point out that a new very simple but concise FSM-modeling library was recently released called “Machinist”, and it may be worth taking a look at: <a href="https://github.com/hybridcluster/machinist">https://github.com/hybridcluster/machinist</a></p>
<p><span style="font-family: helvetica, arial;">-- </span></p>
<div class="bloop_sign" id="bloop_sign_1398357788976150016">
<div style="font-family:helvetica,arial;font-size:13px">-- <br>
Christopher Armstrong<br>
IRC: radix</div>
<div style="font-family:helvetica,arial;font-size:13px"><br>
</div>
</div>
<br>
</div>
</div>
</blockquote>
</span>
</body>
</html>