Here are answers to the some of the usual Apache Struts getting-started questions.

Product Line Why are you offering both Struts Shale and Struts Action Framework? Don't they compete for new development?

We do offer Apache Struts developers a choice, but, hey, choice is good. :)

People who want to create and maintain the Struts Action Framework are welcome to do so.

People who want to create and maintain the Struts Shale Framework are equally welcome.

As a volunteer organization, we are not constrained by the economics of competition. All we need are volunteers who are ready, willing, and able to do the work. So long as we have volunteers, we have work for them to do.

Right now, we have volunteers who want to leverage the new JavaServer Faces framework by using Struts Shale for new development. We also have volunteers who prefer to leverage their existing investment in Struts Action Framework. All are welcome.

For more about volunteering, visit our how to help page .

Is Struts Shale a fork?

No. It's an entirely new product with its own architecture. Shale is to JavaServer Faces what Action is to JavaServer Pages.

Both frameworks will have a home here so long as there are volunteers ready to contribute.

We encourage you to choose the framework that works best for you.

If Shale is a new product, why is it called Struts?

Apache Struts embraces standards, and JavaServer Faces (JSF) is a new standard. JSF is not the first standard that Struts has assimilated (and, undoubtedly, it will not be the last).

For example, many of the original Struts taglibs overlap with the JavaServer Pages Standard Tag Library (JSTL). Some of us want to continue using the original tags. Others want to be able to use JSTL as much as possible. As a result, David Karr created the Struts EL taglibs. The Struts EL subproject provides JSTL versions of only the Struts tags that do not overlap with JSTL. Meanwhile, the original taglibs are available and maintained for those that choose to use them.

Likewise, some of us want to use JSF as much as possible. Others want to continue using the original Action framework. As a result, Craig McClanahan created the Struts Shale framework. Shale provides the same utility as the Action framework by building on the JSF feature set. Since Shale does for JSF what Action does for JSP, we consider Shale to be another Struts framework.

What about Ti? What about WebWork?

Struts Ti (short for Titanium) is a codename for Struts Action Framework 2.x. In late November 2005, the Ti proposal was amended to include a merger with Open Symphony WebWork . Under this plan, the next stable release of WebWork is being donated to Apache Struts, and the lead WebWork committers are joining the Struts community. The WebWork codebase is being brought into the ASF through the Apache Incubator. Once licensing and related issues are resolved, the codebase will be made part of the Apache Struts framework.

WebWork started as a Struts Revolution . Over the years, it has evolved into a superb action-based framework that retains many Struts 1.x paradigms.

People who have worked with both Struts 1.x and WebWork 2.x tend to agree that it is a logical candidate for Struts Action Framework 2.x. If you look the Struts Action 1.x roadmap and the WebWork 2.x feature set, you'll see that WebWork has already does most of what we wanted Struts Action to do. If we finished the roadmap ourselves, Struts Action would end up as a WebWork workalike. Rather than reinvent the wheel, Ti has become a proposal to put the WebWork wheel back on the Struts axle.

What about other Open Symphony products, like XWork?

For the time being, there is no plan to migrate XWork to the ASF. Struts Action has always had many dependencies on external packages.So long as packages like XWork and Sitemesh are doing well at OpenSymphony, there is no reason to make further changes.

Will it be difficult to migration from Action 1 to Action 2?

Many of us have significant Struts Action 1.x applications in production. Being able to migrate both applications and developer skill sets is important to all of us.

Several migration strategies are being developed.

Does Ti mean there will be three frameworks?

There will be the Action 1 framework that is currently in production and usually refered to as "Struts". When released, Ti will become the > Action 2 framework. Shale will remain a separate but equal framework that focuses on JavaServer Faces rather than conventional server pages.

What about OverDrive or Struts Nexus?

OverDrive is a working proposal to use a set of case-study applications to drive the design and creation of a business layer framework. The codename for the business layer framework under development is "Nexus". Like Action and Shale, the Nexus internals are based on the Chain of Responsibility pattern.

OverDrive and Nexus do not complete with frameworks like Action and Shale. Nexus begins where these frameworks end. Nexus is the "rest of the stack".

The codebase underlying the proposal is being coded in C#, but a version for Java is expected in due course.

What's the difference between Struts Action Framework and Struts Classic?

For the Struts Action Framework 1.3.x series, we subdivided the monolithic Struts 1.2.x distribution into several discrete subprojects. Struts Classic is a codename for the work we needed to do to create and release the new subprojects.

Project Details Why is the project called Struts?

It's a reference to struts in the architectural sense, a reminder of the nearly invisible pieces that hold up buildings, houses, and bridges.

How is Apache Struts licensed?

All Apache Struts products are copyrighted software available under the Apache License , a "free-to-use, business-friendly license".

Can Apache Struts be used in a commercial product?

Yes. The only requirements you must meet are those listed in the Apache License .

Do I have to credit Apache Struts on my own website?

You need to credit Apache Struts if you redistribute your own framework based on our products for other people to use. (See the Apache License for details.) But you do not need to credit Apache Struts just because your web application utilizes one of our products. It's the same situation as using the Apache HTTPD server or Tomcat. Not required if its just running your web site. Required if you've used the source code to create your own server that you are redistributing to other people.

If a product doesn't do what I want, can I request that a feature be added?

First, it's important to remember that Apache Struts is an all-volunteer project. We don't charge anyone anything to use Apache Struts products. Committers and other developers work on Apache Struts products because they need to use it with their own applications. If others can use it too, that's "icing on the cake". If you submit a patch for a feature that a Committer finds useful, then that Committer may choose to volunteer his or her time to apply the patch. If you just submit an idea without a patch, it is much less likely to be added (since first someone else has to volunteer their time to write the patch).

We are grateful for any patches, and we welcome new ideas, but the best way to see that something gets added to the framework is to do as much of the work as you can, rather than rely on the "kindness of strangers". Worst case, you can apply the patch to your copy of Struts and still use the feature in your own application. (Which is what open source is ~really~ all about.)

Where can I get help with Apache Struts?

Struts Action Framework comes complete with a Users Guide to introduce people to the framework and its underlying technologies. Various components also have their own in-depth Developers Guide, to cover more advanced topics. Comprehensive Javadocs are included along with the full source code .

The Struts user mailing list is also very active, and welcomes posts from new users. Before posting a new question, be sure to consult the MAILING LIST ARCHIVE and the very excellent How To Ask Questions The Smart Way by Eric Raymond. Please do be sure to turn off HTML in your email client before posting.

Is commercial support available?

The Apache Software Foundation does not provide commercial support for any of our software products, including Apache Struts products. However, third parties may offer different degrees of support.

Are there ISPs that will host my Struts application?

For a listing of some Java and Struts Action Framework ISPs, visit the Struts Community Resources area on SourceForge.

Is there a particularly good IDE to use with Struts Action Framework"

Struts should work well with any development environment that you would like to use, as well as with any programmers editor. The members of the Struts development team each use their own tools such as Emacs , IDEA , Eclipse , and NetBeans .

See the Howto Guides for more about configuring IDEs to work with Struts.

Is there a digest for the User list?

Yes. send a blank message to < user-digest-subscribe@struts.apache.org >.

If you are subscribed to the digest, you can also post to the list. Just be sure to send your post to the user list rather than trying to reply to the digest.

Is there an Apache Struts newsgroup?

Not a usenet group, but the Struts User list can be accessed with your favorite newsgroup reader from the GMane News Site . Subscribe to groups gmane.comp.jakarta.struts.devel for the developer list, or gmane.comp.jakarta.struts.user for the user list.

Why didn't my posting show up on the user list?

You must be subscribed to the user list or user digest before posting (or use the GMane Newsgroups instead).

How do I unsubscribe from the mailing list?

From the email account used to subscribe to the list, send a blank message to < user-unsubscribe@struts.apache.org >.

If you are receiving the digest, you must send a blank email to < user-unsubscribe@struts.apache.org > instead.

Next: How to Help FAQ