Development Roadmap

This document outlines some of changes we expect to see in future releases of Struts 1.

This document is provided for discussion purposes only. All releases and changes to the codebase are subject to a vote of the Apache Struts PMC.

JIRA Queries

The Apache Struts Projects uses the JIRA issuer tracker to manage problem reports and enhancement suggestions. For your convenience, here are some common JIRA queries:

Struts 1.x

Releases in the 1.x series will focus on refactoring of existing functionality, with a continued emphasis on backward compatibility.

New features are being added to the 1.x series, but only if backward compatability with the prior release can be retained. The framework's API is evolving through a strict 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 removed in a subsequent release.

Throughout the 1.x series, there will be a continued emphasis on expanding unit test coverage. 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 encouraged.)

Enhancement requests are logged in JIRA as they are suggested. The listing of an enhancement in JIRA does not imply that it is being "planned", merely that someone has suggested it, and the idea hasn't been ruled out (yet).

Future release milestones are provided for enhancements which are being actively planned or developed but may not be ready for the current release. If a report has not been tagged for a specific milestone by a working developer, then it may never be implemented . When developers (including non-Committers) are actually working on an enhancement, they should re-tag it for a specific release milestone, such as "1.4.1" or "1.4.2".

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.

Development Milestones

These are milestones of where we have been, where we are, and possibly where we are going.

Release 1.0.x (complete)

Major refactoring of framework 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.

Release 1.1.x (complete)

Split internal libraries into their own projects in Jakarta Commons. Added support for modules and plugins.

Release 1.2.x (complete)

Added support for wildcard mappings, internal project restructuring, removed deprecations, other minor enhancements.

Release 1.3.x (complete)

Evolutionary enhancements to product base, based on existing features or codebases.

  • Divided distribution into components with individual JARs
  • Support for Maven 3 builds
  • Moved action to "Struts Chain" Request Processor
  • Enhanced all configs to extend one configuration element from another, as is done with Tiles Definitions

Release 1.4.x (pending)

Evolutionary enhancements to product base, based on existing features or codebases.

  • Upgrade to Jakarta EE 8.

Release 1.5.x (pending)

Evolutionary enhancements to product base, based on existing features or codebases.

  • Upgrade to Jakarta EE 9.

Next: User Guide