Author: ate
Date: Mon Mar 10 22:33:20 2014
New Revision: 1576109

URL: http://svn.apache.org/r1576109
Log:
Adding SCXML 2.0 roadmap documentation

Added:
    commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml   (with props)
Modified:
    commons/proper/scxml/trunk/src/site/site.xml
    commons/proper/scxml/trunk/src/site/xdoc/index.xml

Modified: commons/proper/scxml/trunk/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/site/site.xml?rev=1576109&r1=1576108&r2=1576109&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/site/site.xml (original)
+++ commons/proper/scxml/trunk/src/site/site.xml Mon Mar 10 22:33:20 2014
@@ -27,6 +27,9 @@
       <item       name="Overview"
                   href="/index.html"/>
 
+      <item       name="Roadmap"
+                  href="/roadmap.html"/>
+
       <item       name="User Guide"
                   href="/guide.html"
                   collapse="true">

Modified: commons/proper/scxml/trunk/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/site/xdoc/index.xml?rev=1576109&r1=1576108&r2=1576109&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/site/xdoc/index.xml (original)
+++ commons/proper/scxml/trunk/src/site/xdoc/index.xml Mon Mar 10 22:33:20 2014
@@ -28,11 +28,11 @@
  <section name="Commons SCXML">
 
   <p>
-  <a href="http://www.w3.org/TR/scxml/";>State Chart XML (SCXML)</a> is 
currently a
-  Working Draft published by the World Wide Web Consortium (W3C).
+  <a href="http://www.w3.org/TR/scxml/"; target="_blank">State Chart XML 
(SCXML)</a> is currently a
+  Candidate Recommendation published by the World Wide Web Consortium (W3C).
   SCXML provides a generic state-machine based execution environment based on 
Harel
   State Tables. SCXML is a candidate for the control language within 
-  multiple markup languages coming out of the W3C (see Working Draft for 
details).
+  multiple markup languages coming out of the W3C (see Candidate 
Recommendation for details).
   <em>Commons SCXML</em> is an implementation aimed at creating
   and maintaining a Java SCXML engine capable of executing a state machine 
defined 
   using a SCXML document, while abstracting out the environment interfaces.
@@ -50,6 +50,16 @@
 
  </section>
 
+ <section name="Commons SCXML 2.0 Roadmap">
+   <p>
+     The current development for Commons SCXML is targeted towards a 2.0 
release which will be aligned and compliant
+     with the SCXML specification.
+   </p>
+   <p>
+     A high-level overview of the technical and functional changes needed 
towards this goal are available on the
+     <a href="roadmap.html">Commons SCXML 2.0 Roadmap</a>.
+   </p>
+ </section>
 
  <section name="Documentation">
   <p>
@@ -70,7 +80,6 @@
   </p>
  </section>
 
-
  <section name="Releases">
   <p>
   The latest release is v0.9. Read

Added: commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml?rev=1576109&view=auto
==============================================================================
--- commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml (added)
+++ commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml Mon Mar 10 22:33:20 
2014
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Commons SCXML Roadmap</title>
+    <author email="[email protected]">Commons Documentation Team</author>
+  </properties>
+  <body>
+    <section name="Commons SCXML 2.0 Roadmap">
+      <p>
+        The last SCXML release 0.9 has been quite some time ago (2008) and 
since then the
+        <a href="http://www.w3.org/TR/scxml/"; target="_blank">W3C SCXML 
specification</a>, as of 11 March 2014 a
+        <em>"Candidate Recommendation"</em>, has progressed and changed quite 
a lot.
+      </p>
+      <p>
+        The goal for Commons SCXML 2.0 is to get alignment (back) and be 
compliant with the W3C SCXML specification,
+        but for this a lot of major changes are needed, both to the 'public' 
API and, even more so, to the internal
+        model and processing logic.
+      </p>
+      <p>
+        To be able to make such major changes in an effective way, we already 
cleaned out a lot of the old but no
+        longer relevant, working or otherwise compatible features from the 
previous SCXML (0.9) version, see
+        <a href="#Milestone_0:_Cleanup_(done)">Milestone 0</a> below.
+      </p>
+      <p>
+        The work needed towards Commons SCXML 2.0 has been divided in a set of 
high-level targets and corresponding
+        milestones:
+      </p>
+      <subsection name="Milestone 0: Cleanup (done)">
+        <p>
+          The first and already completed target was to cleanup and clean out 
no longer relevant or even no longer
+          working features, or features which would make it very hard or 
complicated to keep working and supported
+          for the major changes ahead.
+        </p>
+        <p>
+          The support for the following features and integrations has been 
dropped: Shale/JSF, Rhino/E4X, Servlet/JSP.
+        </p>
+        <p>
+          Note: some of the dropped features <em>might</em> be restored or 
re-implemented again once we reached a
+          reasonable level of stability for the new APIs and internal logic, 
but that also will depend on the level of
+          interest and support from the community.
+        </p>
+        <p>
+          Technically, this milestone 0 still is largely compatible with the 
0.9 release,
+          just without those above mentioned features, and also now requires 
Java 6+. In addition this milestone also
+          contains several fixes and enhancements (like Groovy language 
support).
+        </p>
+      </subsection>
+      <subsection name="Milestone 1: Redesign semantics and processing 
components">
+        <p>
+          The target for milestone 1 is a redesign and better separation of 
concerns of the main SCXML processing
+          components: SCXMLSemantics, SCXMLExecutor and SCInstance.
+        </p>
+        <p>
+          The high-level plan is to:
+          <ul>
+            <li>Redefine SCXMLSemantics to align with the
+              <a 
href="http://www.w3.org/TR/scxml/#AlgorithmforSCXMLInterpretation"; 
target="_blank">
+                SCXML Algorithm for SCXML Interpretation</a>
+              <p>
+                The current SCXMLSemantics interface and its implementation is 
so much different from
+                the algorithm in the specification that 'molding' it into what 
the algorithm now expects is too
+                cumbersome.
+              </p>
+              <p>
+                Also, developers wishing to extend or customize the 
SCXMLSemantics will have a hard time to match that
+                against the algorithm as well.
+              </p>
+              <p>
+                The intend therefore is to start with a new SCXMLSemantics 
interface from scratch which (largely)
+                follows the algorithm in the specification.
+              </p>
+            </li>
+            <li>
+              Better separation of concern between SCXMLExecutor and 
SCInstance.
+              <p>
+                The purpose of SCInstance is to be used as backing store for 
internal SCXML state. However
+                over time some processing and transient state based features 
have ended up in SCInstance which are more
+                appropriated to be managed by the SCXMLExecutor instead.
+              </p>
+              <p>
+                Conversely, SCXMLExecutor maintains the current Status for the 
SCXML state as well as the internal
+                events list going with it. Having the Status, without the 
processing related events list, to be
+                managed by SCInstance instead would be better fitting.
+              </p>
+              <p>
+                And finally, SCXMLExecutor currently doesn't yet provide a 
good abstraction or implementation of the
+                <a href="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"; 
target="_blank">
+                  SCXML Event I/O Processor</a> functionally.
+                The internal and external event I/O management is a critical 
requirement and many features of the
+                specification rely on it fulfilling this contract.<br/>
+                The goal for this milestone is to provide a least a basic 
level of support for the SCXML Event I/O
+                Processor and Event queue handling features.<br/>
+              </p>
+              <p>
+                Overall, the intend is to let SCXMLExecutor be responsible as 
SCXML Processor and SCXML I/O Processor
+                and to maintain all transient processing state including the 
system variables, while delegating to
+                SCXMLSemantics for dealing with the processing algorithm.
+              </p>
+            </li>
+          </ul>
+        </p>
+      </subsection>
+      <subsection name="Milestone 2: Datamodel and data manipulation 
alignment">
+        <p>The target for milestone 2 is to get better alignment with the 
SCXML datamodel specification.</p>
+        <p>
+          The Commons SCXML datamodel and context features are very flexible 
and can be defined and redefined in a
+          hierarchical way (per state element). However this also makes it 
much more complex to manage, especially for
+          XPath (XML) datamodel definitions.
+        </p>
+        <p>
+          The SCXML specification however is very explicit in its requirements 
that, while datamodel elements may be
+          defined in multiple locations within an SCXML document, together 
they must be accessible (and thus managed) as
+          a single datamodel definition.
+        </p>
+        <p>
+          The current Commons SCXML datamodel (and the backing Context 
handling) is to some extend actually more
+          flexible and generic than what is possible <em>AND</em> allowed by 
the specification.
+        </p>
+        <p>
+          To be able to be compliant with the specification, the 
<em>default</em> datamodel management in
+          Commons SCXML will have to be more restricted and simplified.<br/>
+          That will actually make things much easier to implement. For an 
XPath (XML) datamodel then only a single
+          (aggregated) XML datamodel document can be used and the custom 
Commons SCXML Data() function no longer will be
+          needed to access the data elements.
+        </p>
+        <p>
+          It is the intend to also retain the current flexible Commons SCXML 
datamodel and context features, but
+          provide this as custom extension, no longer as default.
+        </p>
+      </subsection>
+      <subsection name="Milestone 3: SCXML model alignment">
+        <p>
+          The target for milestone 3 is to complete the support for the 
remaining SCXML model elements.
+        </p>
+        <p>
+          The current Commons SCXML is still missing implementation of some 
SCXML element features, or is providing
+          functionality or behavior not compliant with the specification.
+        </p>
+      </subsection>
+      <subsection name="Milestone 4: Session management, external 
communications and environment variables">
+        <p>
+          The target for milestone 4 is to complete the remaining SCXML 
Processor and SCXML I/O Processor required
+          features for session management and external communications (send 
and invoke elements).
+        </p>
+        <p>
+          There are several requirements and restrictions with respect to 
environment variables which also needs to be
+          supported.
+        </p>
+      </subsection>
+      <subsection name="Commons SCXML 2.0 release">
+        <p>
+          If and when all of the above milestone targets are met Commons SCXML 
should be very close to being in
+          compliance with the SCXML specification, and/or in any case at a 
good enough level for all practical purposes,
+          to be released as Commons SCXML 2.0.
+        </p>
+        <p>
+          As part of validation the implementation, the
+          <a href="http://www.w3.org/Voice/2013/scxml-irp/"; 
target="_blank">SCXML 1.0 Implementation Report Plan</a>
+          will be used to test against.
+        </p>
+        <p>
+          Even if the IRP is not intended to be used for conformance testing 
of implementations, it is very much used as
+          a functional benchmark, also by other SCXML implementations.
+        </p>
+      </subsection>
+      <subsection name="Commons SCXML 2.0+: Optional SCXML features">
+        <p>
+          There are still plenty of optional features in the SCXML 
specification which might be very useful to support,
+          like ECMAScript+JSON datamodel or HTTP Event I/O Processor support.
+        </p>
+        <p>
+          Also, adding extensions outside the specification, or bringing back 
some of the features dropped for
+          milestone 0, like integration with other frameworks or expression 
languages (Servlet, EL, etc.) will be
+          considered again.
+        </p>
+      </subsection>
+
+      <subsection name="Milestone tags">
+        <p>
+          For the above milestones specific VCS milestone tags will be set, 
like <b>commons-scxml-2.0-M0</b>.
+        </p>
+        <p>
+          These milestones tag however do <b><em>not</em></b> represent a 
formal release and they are
+          <b><em>only</em></b> intended and targeted to be used by the Commons 
SCXML developers, not end users.
+        </p>
+        <p>
+          Developers willing to test and validate these milestones can do so 
by using the following Maven dependency
+          configuration (using milestone 0 as example):
+          <pre><![CDATA[
+        <dependency>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-scxml2</artifactId>
+          <version>2.0-M0</version>
+        </dependency>]]>
+          </pre>
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
\ No newline at end of file

Propchange: commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: commons/proper/scxml/trunk/src/site/xdoc/roadmap.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to