<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-family: Calibri, sans-serif;">
<div>
<div>
<div><br>
</div>
<div>Hi Brett,</div>
<div><br>
</div>
<div>The CLA is now in place and you are able to proceed with the contributions.</div>
<div><br>
</div>
<div>Based on the discussions at QtCS and the mailing lists, what was seen as the best approach for the repositories? A new playground project for both QQSM and Replicant? </div>
<div><br>
</div>
<div>Yours,</div>
<div>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3"><br>
</font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">--<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Tuukka Turunen<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Director, R&D<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Digia, Qt<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Address: Piippukatu 11, 40100 Jyväskylä, FINLAND<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Email: <a href="mailto:tuukka.turunen@digia.com">tuukka.turunen@digia.com</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Mobile: + 358 40 7655 800<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Qt Website: <a href="http://qt.digia.com/">http://qt.digia.com</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3"><span lang="SV">Qt Blog: </span><a href="http://blog.qt.digia.com/"><span lang="SV">http://blog.qt.digia.com</span></a><span lang="SV"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Qt Project: <a href="http://www.qt-project.org/">http://www.qt-project.org</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">------------------------------------------------------------------<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">PRIVACY AND CONFIDENTIALITY NOTICE<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">This message and any attachments are intended only for use by the named addressee and may contain privileged and/or confidential information. If you are not the named addressee you should not disseminate, copy or take any action in reliance on
 it. If you have received this message in error, please contact the sender immediately and delete the message and any attachments accompanying it. Digia Plc does not accept liability for any corruption, interception, amendment, tampering or viruses occurring
 to this message.<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">------------------------------------------------------------------</font></p>
</div>
</div>
</div>
<div style="font-size: 14px;"><br>
</div>
<span id="OLK_SRC_BODY_SECTION" style="font-size: 14px;">
<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>Tuukka Turunen <<a href="mailto:tuukka.turunen@digia.com">tuukka.turunen@digia.com</a>><br>
<span style="font-weight:bold">Date: </span>Monday 2 June 2014 09:55<br>
<span style="font-weight:bold">To: </span>"Stottlemyer, Brett (B.S.)" <<a href="mailto:bstottle@ford.com">bstottle@ford.com</a>>, "<a href="mailto:development@qt-project.org">development@qt-project.org</a>" <<a href="mailto:development@qt-project.org">development@qt-project.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [Development] Request for sandbox area: QQSM<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-family: Calibri, sans-serif;">
<div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Hi Brett,</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Thank you for the initiative. I also think there is indeed a lot of unleashed potential in the Qt State Machine Framework for such applications that benefit from having a solid state machine based development approach. Qt State
 Machine Framework  is not yet hooked into the Qt Quick world, so also from that viewpoint your proposal looks good. Whether it is the right approach to hook into Qt Quick will be found out when the detailed discussions and reviews are done.</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Making a playground project for QQSM would be a good first step. However, the CLA needs to be signed prior to you being able to contribute the code. You can find the Corporate CLA, accepted by other companies contributing to Qt,
 at: <a href="https://qt-project.org/legal/Corporate_QtContributionLicenseAgreement.pdf">https://qt-project.org/legal/Corporate_QtContributionLicenseAgreement.pdf</a>. If you can get it signed before  the Qt Contributor Summit, it would make it easier to discuss
 the details about QQSM.</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Looking forward in seeing you in Berlin.</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Yours,</div>
<div><br>
</div>
<div>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">--<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Tuukka Turunen<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Director, R&D<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Digia, Qt<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Address: Piippukatu 11, 40100 Jyväskylä, FINLAND<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Email: <a href="mailto:tuukka.turunen@digia.com">tuukka.turunen@digia.com</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Mobile: + 358 40 7655 800<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Qt Website: <a href="http://qt.digia.com/">http://qt.digia.com</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3"><span lang="SV">Qt Blog: </span><a href="http://blog.qt.digia.com/"><span lang="SV">http://blog.qt.digia.com</span></a><span lang="SV"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">Qt Project: <a href="http://www.qt-project.org/">http://www.qt-project.org</a><o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<o:p><font size="3"> </font></o:p></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">------------------------------------------------------------------<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">PRIVACY AND CONFIDENTIALITY NOTICE<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">This message and any attachments are intended only for use by the named addressee and may contain privileged and/or confidential information. If you are not the named addressee you should not disseminate, copy or take any action in reliance on
 it. If you have received this message in error, please contact the sender immediately and delete the message and any attachments accompanying it. Digia Plc does not accept liability for any corruption, interception, amendment, tampering or viruses occurring
 to this message.<o:p></o:p></font></p>
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm;">
<font size="3">------------------------------------------------------------------</font></p>
</div>
</div>
<div style="font-size: 14px;"><br>
</div>
<span id="OLK_SRC_BODY_SECTION" style="font-size: 14px;">
<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><Stottlemyer>, "Brett (B.S.)" <<a href="mailto:bstottle@ford.com">bstottle@ford.com</a>><br>
<span style="font-weight:bold">Date: </span>Saturday 31 May 2014 01:14<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:development@qt-project.org">development@qt-project.org</a>" <<a href="mailto:development@qt-project.org">development@qt-project.org</a>><br>
<span style="font-weight:bold">Subject: </span>[Development] Request for sandbox area: QQSM<br>
</div>
<div><br>
</div>
<div xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi list,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My name is Brett Stottlemyer.  I work for Ford Motor Company, and Ford has graciously agreed to let us contribute some of the cool stuff we’ve developed back to Qt.  We aren’t quite done with everything yet (still waiting on the Corporate
 CLA), but I will be at Qt Contributors Summit in a week and a half to discuss this and a 2nd project, and answer (hopefully a bunch) of good questions.<o:p></o:p></p>
<p class="MsoNormal">                            <o:p></o:p></p>
<p class="MsoNormal">I’d like to officially request a sandbox for: QQSM<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What is it?<o:p></o:p></p>
<p class="MsoNormal">QQSM is the Qt QML State Machine.  Simply put, it is a QML module to allow you to create Qt State Machine Framework instances via the QML engine.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What need does this module solve?<o:p></o:p></p>
<p class="MsoNormal">QQSM makes it a lot easier to create state machines.  You get all of the benefits of the maturity of Qt's State Machine Framework, the ability to introspect/debug the machine with tools like gammaray, but with a simplified syntax and QML's
 runtime bindings.  An example of the simplification?  A guard condition for a transition can use QML/javascript and use signal parameters in deciding whether to trigger a transition – entirely in QML markup.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Detailed description<o:p></o:p></p>
<p class="MsoNormal">QQSM is basically a Domain Specific Language (in QML) for simplified descriptions of State Machines.  While the C++ State Machine Framework is complete, it requires a lot of boilerplate code.  The examples I've seen have created numerous
 QSignalTransition derived classes, one for each boolean condition required to test for a transition.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">While QML already has a State type, this is not a complete, deterministic state machine.  This is an overly simplified state machine, in that it provides little in terms of error checking or nested states.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The proposed QQSM module, on the other hand, provides BasicState (to not conflict with existing State type), HistoryState and FinalState, plus StateMachine, SignalTransition and TimeoutTransition types.  The benefit of QML for State Machines
 is much more than just having to write less code, though.  Two features of the QML engine are runtime processing of scripted code, and dynamic Signal/Slot connections.  Since all SignalTransition classes provide a boolean result for eventTest(), a single C++
 implementation was created that uses a boolean property ("guard") for the eventTest result.  This allows any QML/Javascript expression that resolves to a boolean to be used.  The dynamic connections make is easy to bind onEntry and onExit signals to non-state
 machine QObjects.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The end result is an environment that allows State Machines to be developed rapidly and succinctly.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hope you like the idea, and approve the sandbox area.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Looking forward to your thoughts!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sincerely,<o:p></o:p></p>
<p class="MsoNormal">Brett Stottlemyer<o:p></o:p></p>
<p class="MsoNormal">Ford Motor Company<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</span></div>
</div>
</span>
</body>
</html>