| <?xml version="1.0"?> |
| <document url="./status.xml"> |
| |
| <!-- |
| // ======================================================================== 78 |
| --> |
| |
| <properties> |
| <title>Roadmap - The Apache Struts Web Application Framework</title> |
| <author>Craig R. McClanahan</author> |
| <author>Ted Husted</author> |
| <author>Steve Byrne</author> |
| </properties> |
| |
| <body> |
| |
| <chapter href="roadmap" name="Development Roadmap"> |
| |
| <section href="scope" name="Scope"> |
| |
| <p> |
| This document outlines some of changes we expect to |
| see in future releases of Struts. |
| </p> |
| |
| <p> |
| This document is provided for discussion purposes only. |
| All releases and changes to the codebase are subject to |
| <a href="./bylaws.html">a vote</a> of the |
| <a href="volunteers.html#pmc">Struts PMC</a>. |
| </p> |
| |
| </section> |
| |
| <section href="Bugzilla" name="Bugzilla Queries"> |
| |
| <p> |
| The Struts development teams uses the <a href="http://jakarta.apache.org/site/bugs.html">Apache Bug Database</a> (Bugzilla) |
| to manage problem reports and enhancement requests. |
| For your convenience, here are some common Bugzilla queries: |
| </p> |
| |
| <ul> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Struts&order=bugs.bug_id">Open reports</a></li> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=3&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Struts&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Bug+Number">Open reports with at least 3 votes</a></li> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=Blocker&bug_severity=Critical&bug_severity=Major&bug_severity=Normal&bug_severity=Minor&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Struts&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=bugs.bug_id">Open problem reports</a> |
| <ul> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Struts&bug_severity=Blocker&bug_severity=Critical&bug_severity=Major&order=bugs.bug_id">major problem reports</a></li> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Struts&bug_severity=Blocker&bug_severity=Normal&bug_severity=Minor&order=bugs.bug_id">normal/minor problem reports</a></li> |
| </ul> |
| </li> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Struts&bug_severity=Enhancement&order=Bug+Number">Open enhancement reports</a> |
| <ul> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=Enhancement&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Struts&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=PatchAvailable&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Bug+Number">Patch Available</a></li> |
| </ul> |
| </li> |
| <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=LATER&resolution=REMIND&product=Struts&order=bugs.bug_id">Reports to be handled "LATER"</a></li> |
| </ul> |
| |
| |
| </section> |
| |
| <section href="Struts_1_x" name="Struts 1.x"> |
| |
| <p> |
| Releases in the 1.x series will focus on refactoring of existing functionality, with a |
| continued emphasis on backward compatibility. |
| </p> |
| <p> |
| New features are being added to the Struts 1.x series, |
| but only if backward compatability with the prior release can be retained. |
| The 1.x API is evolving through a deprecate/replace/remove protocol. |
| Developers are encouraged to stay current with the "best available" release |
| and to observe deprecation warnings. |
| Features are deprecated before removal, and deprecated features are ultimately removed. |
| </p> |
| |
| <p> |
| The 1.x series is being refactored into the Struts subproject and several dependant subprojects. |
| Each subproject is expected to be dependant on the Struts core for necessary functionality. |
| Otherwise, the subproject should be hosted in another venue, such as Jakarta Commons or Jakarta Taglibs. |
| </p> |
| |
| <p> |
| Popular third-party extensions that are in active use by the Struts Community may be considered |
| as subprojects, such as those distributed through the |
| <a href="http://sourceforge.net/projects/struts">Struts SourceForge</a> site. |
| </p> |
| |
| <p> |
| Throughout the 1.x series, |
| there will be a continued emphasis on expanding unit test coverage for the framework. |
| Bug reports should include a failing test case when possible. |
| Proposals for new features should include a working test suite. |
| (Creating features through Test Driven Development is strongly encouraged.) |
| </p> |
| |
| <p> |
| Enhancement requests are logged in Bugzilla as they are suggested. |
| <strong>The listing of an enhancement in Bugzilla does not imply that is being "planned"</strong>, |
| merely that some member of the community has suggested it, |
| and the idea hasn't been ruled out (yet). |
| </p> |
| |
| <p> |
| Future release milestones are provided for enhancements |
| which are being actively planned or developed |
| but may not be ready for the very next release. |
| If a report has not been tagged for a specific milestone by a working developer, |
| then <strong>it may never be implemented</strong>. |
| When developers (including non-Committers) are actually working on an enhancement, |
| they should re-tag it for a specific release milestone, such as "1.3.1" or "1.3.2". |
| </p> |
| |
| <p> |
| If an enhancement has not been tagged for a specific target, |
| feel free to start working on it yourself. |
| Many of our best features have been contributed by developers, |
| just like you. |
| If you are working on an enhancement, |
| post a note on the ticket that you are working on an enhancement |
| and then post a patch as soon as possible. |
| If the development effort doesn't succeed, |
| post a note to the ticket explaining what problem you had creating the enhancement, |
| so that other developers can explore alternatives. |
| </p> |
| |
| </section> |
| |
| <section href="Struts_1_x_whiteboard" name="Struts 1.x Whiteboard"> |
| |
| <p> |
| These are some general ideas we have about what may happen in the Struts 1.x series. |
| This is a <strong>whiteboard</strong> and everything here is <strong>subject to change</strong>. |
| </p> |
| |
| <ul> |
| |
| <li>Struts 1.0.0 (complete) - |
| Major refactoring of Struts internals to provide support for modules and a new "config" object series. |
| Bundles Struts Tiles and Struts Validator into main distribution. |
| The initial release of Struts EL is provided as an optional package. |
| </li> |
| |
| <li>Struts 1.2.4 (complete) - |
| Continued refactorings of the Struts 1.x product series. |
| <ul> |
| <li>Removed deprecations created in the 1.0 to 1.1 timeframe, and prior</li> |
| <li>Added support for wildcard mappings.</li> |
| <li>Other minor enhancements, improvements, and refactorings</li> |
| </ul> |
| </li> |
| |
| <li>Struts 1.2.6 (complete) - |
| Migrated repository to Subversion; update website.</li> |
| |
| <li>Struts 1.2.x (pending) - |
| Minor enhancements, improvements, and refactorings only, as needed. |
| New features should be added to the 1.3.x series.</li> |
| |
| <li>Struts 1.3.x (pending) - |
| Enhancements to product base, based on existing features or codebases. |
| <ul> |
| <li>Divide distribution into subprojects |
| <ul><li>core, apps, el, faces, site, taglibs</li> |
| <li><a href="http://struts.sourceforge.net/struts-flow/index.html">flow</a>, <a href="http://struts.sf.net/struts-bsf/">scripting</a> (new)</li> |
| </ul> |
| </li> |
| <li>Complete support for Maven builds (pending)</li> |
| <li>Move core to "Struts Chain" Request Processor (now in Contrib)</li> |
| <li>Move to Commons Resources (if available)</li> |
| <li>Enhance all configs to extend one configuration element from another, |
| as is done with Tiles Definitions</li> |
| </ul> |
| </li> |
| |
| <li>Struts 1.4.x - |
| Enhancements to product base, based on undeveloped code. |
| <ul> |
| <li>Consider adding support for an Action context |
| (which also might be based on the Commons Chain of Responsibility package).</li> |
| <li>Consider adding support for Porlets by specifying an alternate Request Processor catalog.</li> |
| </ul> |
| </li> |
| |
| <li>Other potential enhancements for the 1.x.x series |
| <ul> |
| <li>Consider <a href="http://struts.sf.net/struts-cocoon/">Cocoon Plugin</a></li> |
| <li>Consider <a href="http://struts.sourceforge.net/struts-spring/index.html">Spring Plugin</a></li> |
| <li>Consider adopting several popular extensions, including: |
| <ul> |
| <li><a href="http://struts.application-servers.com/">Layout</a></li> |
| <li><a href="http://sslext.sourceforge.net/">SSL Ext</a></li> |
| <li><a href="http://stxx.sourceforge.net">Stxx</a> (XLST)</li> |
| <li><a href="http://strutstestcase.sourceforge.net/">TestCase</a></li> |
| <li><a href="http://www.livinglogic.de/Struts/">Workflow</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| |
| </ul> |
| |
| <!-- |
| <p> |
| Features under discussion include: |
| </p> |
| |
| <ul> |
| |
| <li> |
| Proposing ActionError/ActionErrors as generic Commons "message" components |
| </li> |
| |
| <li> |
| "Nested" or "hierarchical" and locale-sensitive modules |
| </li> |
| |
| <li> |
| Extending one configuration element from another, as is done with Tiles |
| Definitions |
| </li> |
| |
| <li> |
| Enhanced interoperability with JSTL and JSF |
| </li> |
| |
| <li> |
| Making Tiles JSTL-aware and available to other presentation systems (XLST, |
| Velocity) |
| </li> |
| |
| <li> |
| Encouraging the use of <a href="http://sourceforge.net/projects/xdoclet/">XDoclet</a> and other code generation technologies to streamline development. |
| </li> |
| |
| <li>Moving to <a href="http://jakarta.apache.org/turbine/maven/index.html"> |
| Maven</a> for project management |
| </li> |
| |
| <li>Regardless of whether a move to Maven happens or not, we need to |
| refactor the source repositories and build scripts for less complexity |
| and easier maintenance.</li> |
| |
| </ul> |
| <p> |
| More detail on work-in-progress may be found in |
| <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=LATER&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Struts&version=Unknown&version=1.0+Beta+2&version=1.0+Beta+1&version=0.5+Final&version=1.0.2+Final&version=1.0.1+Final&version=1.0+Final&version=1.0+Beta+3&version=1.1+Beta+2&version=1.1+Beta+1&version=Nightly+Build&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Bug+Number">Bugzilla</a>. |
| If any of these features are important to you, please don't hesitate to |
| <a href="./faqs/helping.html">help with the development effort</a>. |
| </p> |
| --> |
| |
| </section> |
| |
| <section href="Struts_2_0" name="Struts 2.0.x"> |
| |
| <p> |
| Struts 2.x (aka Struts "Next Generation") will include broader enhancements. |
| We anticipate that the implementation will utilize the Servlet 2.4 / JSP 2.0 |
| platform, and perhaps Java 1.5, but may optionally support earlier platforms. |
| </p> |
| |
| <p> |
| We anticipate that Struts 2.x will rely on JSTL and the JavaServer Faces |
| API as supporting technologies. |
| However, the focus of the Struts framework will remain on the Controller |
| aspect of a Model 2/MVC architecture. |
| The core framework will continue to be both Model and View independent. |
| </p> |
| |
| <p> |
| Development of Struts 2.x will include taking a completely fresh look at |
| the internal architecture. |
| The goal for 2.x will be to incorporate everything we've learned in the past |
| years of Struts usage, and create something even better. |
| Development will follow current best practices, like Test Driven Development, |
| and rely on technologies like Maven for project management. |
| </p> |
| |
| <p> |
| Of course, it is anticipated that the Struts team will continue to support |
| the 1.x codebase for a long time with bugfixes and incremental enhancements. |
| (Mainly because many of us will still be using it on our production sites!) |
| Accordingly, it is anticipated that the development of the 2.x and 1.x |
| series will occur in tandem. |
| At some point, 2.x milestones may appear alongside new 1.x releases. |
| </p> |
| |
| <p> |
| As Struts 1.x evolves, some (or all) target features may overlap. |
| Target features for Struts 2.x include: |
| </p> |
| |
| <ul> |
| |
| <li> |
| Comprehensive unit test coverage for all core features |
| </li> |
| |
| <li> |
| Enhanced support for using Struts in large team environments. |
| </li> |
| |
| <li> |
| Transparent support for a portlet environment (JSR 168), with |
| minimal-to-no changes in your business logic and pages. |
| </li> |
| |
| <li> |
| Direct support for JSTL/JSF taglibs and the JSF API |
| </li> |
| |
| <li> |
| Enhanced support for other presentation layers, such as XLST |
| </li> |
| |
| <li> |
| Enhanced support for scriptable Actions, using technologies like BSF or Jelly |
| </li> |
| |
| <li> |
| Refactoring for new technologies available on the Servlet 2.4/ JSP 2.0 platform |
| </li> |
| |
| </ul> |
| |
| <p> |
| An early proposal for one possible implementation of Struts 2.x, "Struts Jericho", |
| is available in the <a href="http://svn.apache.org/viewcvs.cgi/struts/core/trunk/contrib/struts-jericho/?root=Apache-SVN">contrib folder</a>. |
| </p> |
| |
| </section> |
| |
| <section href="Portlets" name="Portlet (JSR-168) Whiteboard"> |
| <p> |
| There are three major issues with supporting JSR-168 (and I'm sure a bunch of smaller ones as well): |
| </p> |
| |
| <ul> |
| |
| <li> |
| Struts APIs assume servlet API objects (ServletContext, ServletRequest, ServletResponse), whereas JSR-168 |
| talks aboutPortletContext, PortletRequest, and PortletResponse. |
| We'd either need to change the calling sequence for Action.execute() -- problematic for backwards |
| compatibility -- or fake it somehow in a portlet environment. |
| </li> |
| |
| <li> |
| The lifecycle of a portlet request is actually divided into two chunks -- processing and then rendering. |
| From a Struts perspective, that means making sure that the first part of the request processor pipeline |
| need to happen in the "process" part, and the forwarding to the resulting page needs to happen in the |
| "render" part. |
| </li> |
| |
| <li> |
| Today, Struts owns the process of calculating URLs for pages and actions. |
| Because it's in a webapp, it knows exactly what to do for the developer. |
| However, in a portlet container it's actually the portal server that manages URLs, so a Struts-based |
| portlet would need to interact with the portlet APIs for this purpose. |
| </li> |
| |
| </ul> |
| |
| <p> |
| A strong goal should be that a Struts application should be usable either as a webapp or as a portlet, with |
| little (ideally no) changes. |
| Therefore, we should build whatever it takes to support this into the standard Struts distribution, which would |
| then be used in both environments. |
| </p> |
| |
| </section> |
| |
| <section href="jsf" name="JavaServer Faces"> |
| |
| <p> |
| Struts is providing support for <a href="http://java.sun.com/j2ee/javaserverfaces/">JavaServer Faces</a> |
| through the Struts Faces Integration Library. The Struts Faces tablib allows developers to migrate |
| pages to JSF but retain use of their Actions. Pages can be migrated on a one-by-one basis. The |
| Struts Faces taglib is still under development, and a 1.0.x release is forthcoming. |
| </p> |
| <p> |
| As JSF comes into broader use, it is expected that |
| Struts developers will continue to offer enhancements to make it even easier to use Struts with JSF. |
| </p> |
| |
| <p> |
| The SourceForge <a href="http://sf.net/projects/myfaces">MyFaces</a> team is in the process of |
| joining the Apache Software Founcation. Once the Apache MyFaces team has access to the Apache TCK, it |
| is expected to be recognized as a certified JSF implementation. |
| </p> |
| |
| <p> |
| For more about Struts and JavaServer faces, see: |
| </p> |
| |
| <ul> |
| <li>Craig McClanahan's <a href="http://blogs.sun.com/roller/page/craigmcc/20040927">blog entry</a></li> |
| <li>Our <a href="faqs/kickstart.html#jsf">FAQ</a></li> |
| <li><a href="http://www.jamesholmes.com/JavaServerFaces/">Java Server Faces Resources at JamesHomes.com</a></li> |
| </ul> |
| </section> |
| |
| <section href="Proposals" name="Relevant Proposals"> |
| |
| <ul> |
| |
| <li> |
| <a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/chain/">Commons Chain of Responsiblity |
| package</a> |
| </li> |
| |
| <li> |
| <a href="http://cvs.apache.org/viewcvs/jakarta-struts/contrib/struts-chain/">CoRe Request Processor</a> |
| </li> |
| |
| |
| <li> |
| <a href="http://wiki.apache.org/struts/StrutsRelease127">Release Plan 1.2.7</a> |
| </li> |
| |
| <li> |
| <a href="proposals/struts-faces.html">struts-faces taglib</a> |
| </li> |
| |
| </ul> |
| |
| </section> |
| |
| <section> |
| <p class="right">Next: |
| <a href="http://svn.apache.org/viewcvs.cgi/struts/?root=Apache-SVN">Source Repository</a></p> |
| </section> |
| |
| <section> |
| <p class="version">Website updated from repository: 2004 OCT 23 by husted.</p> |
| <p class="version">Javadocs updated from repository: 2004 OCT 15 by husted.</p> |
| </section> |
| </chapter> |
| </body></document> |