| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
| <meta name="Date-Revision-yyyymmdd" content="20140918"/> |
| <meta http-equiv="Content-Language" content="en"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| |
| <title>Helping</title> |
| |
| <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css"> |
| <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> |
| <link href="/css/main.css" rel="stylesheet"> |
| <link href="/css/custom.css" rel="stylesheet"> |
| <link href="/highlighter/github-theme.css" rel="stylesheet"> |
| |
| <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> |
| <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script> |
| <script type="text/javascript" src="/js/community.js"></script> |
| </head> |
| <body> |
| |
| <a href="http://github.com/apache/struts" class="github-ribbon"> |
| <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"> |
| </a> |
| |
| <header> |
| <nav> |
| <div role="navigation" class="navbar navbar-default navbar-fixed-top"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle"> |
| Menu |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a> |
| </div> |
| <div id="struts-menu" class="navbar-collapse collapse"> |
| <ul class="nav navbar-nav"> |
| <li class="dropdown"> |
| <a data-toggle="dropdown" href="#" class="dropdown-toggle"> |
| Home<b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="/index.html">Welcome</a></li> |
| <li><a href="/download.cgi">Download</a></li> |
| <li><a href="/releases.html">Releases</a></li> |
| <li><a href="/announce-2021.html">Announcements</a></li> |
| <li><a href="http://www.apache.org/licenses/">License</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li> |
| <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a data-toggle="dropdown" href="#" class="dropdown-toggle"> |
| Support<b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="/mail.html">User Mailing List</a></li> |
| <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li> |
| <li><a href="/security.html">Reporting Security Issues</a></li> |
| <li class="divider"></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li> |
| <li class="divider"></li> |
| <li><a href="/maven/project-info.html">Maven Project Info</a></li> |
| <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li> |
| <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a data-toggle="dropdown" href="#" class="dropdown-toggle"> |
| Documentation<b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="/birdseye.html">Birds Eye</a></li> |
| <li><a href="/primer.html">Key Technologies</a></li> |
| <li><a href="/kickstart.html">Kickstart FAQ</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li> |
| <li class="divider"></li> |
| <li><a href="/getting-started/">Getting Started</a></li> |
| <li><a href="/security/">Security Guide</a></li> |
| <li><a href="/core-developers/">Core Developers Guide</a></li> |
| <li><a href="/tag-developers/">Tag Developers Guide</a></li> |
| <li><a href="/maven-archetypes/">Maven Archetypes</a></li> |
| <li><a href="/plugins/">Plugins</a></li> |
| <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li> |
| <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li> |
| <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a data-toggle="dropdown" href="#" class="dropdown-toggle"> |
| Contributing<b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="/youatstruts.html">You at Struts</a></li> |
| <li><a href="/helping.html">How to Help FAQ</a></li> |
| <li><a href="/dev-mail.html">Development Lists</a></li> |
| <li><a href="/contributors/">Contributors Guide</a></li> |
| <li class="divider"></li> |
| <li><a href="/submitting-patches.html">Submitting patches</a></li> |
| <li><a href="/builds.html">Source Code and Builds</a></li> |
| <li><a href="/coding-standards.html">Coding standards</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li> |
| <li class="divider"></li> |
| <li><a href="/release-guidelines.html">Release Guidelines</a></li> |
| <li><a href="/bylaws.html">PMC Charter</a></li> |
| <li><a href="/volunteers.html">Volunteers</a></li> |
| <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li> |
| <li><a href="/updating-website.html">Updating the website</a></li> |
| </ul> |
| </li> |
| <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </nav> |
| </header> |
| |
| |
| <article class="container"> |
| <section class="col-md-12"> |
| <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/helping.md" title="Edit this page on GitHub">Edit on GitHub</a> |
| |
| <h1 class="no_toc" id="how-to-help-faq">How to Help FAQ</h1> |
| |
| <ul id="markdown-toc"> |
| <li><a href="#what-can-my-company-do-to-help-support-apache-struts" id="markdown-toc-what-can-my-company-do-to-help-support-apache-struts">What can my company do to help support Apache Struts?</a></li> |
| <li><a href="#patches" id="markdown-toc-patches">How do I create a patch?</a></li> |
| <li><a href="#issues" id="markdown-toc-issues">How can I report defects or suggest features?</a></li> |
| <li><a href="#contribute" id="markdown-toc-contribute">How can I contribute to the Struts source code?</a></li> |
| <li><a href="#documentation" id="markdown-toc-documentation">How can I contribute to the documentation?</a></li> |
| <li><a href="#release" id="markdown-toc-release">So when is the next release coming out?</a></li> |
| <li><a href="#release_help" id="markdown-toc-release_help">What can I do to help the next release along?</a></li> |
| <li><a href="#decides_help" id="markdown-toc-decides_help">How can I help make the decisions?</a></li> |
| </ul> |
| |
| <ul> |
| <li> |
| <h3 id="what-can-my-company-do-to-help-support-apache-struts">What can my company do to help support Apache Struts?</h3> |
| </li> |
| </ul> |
| |
| <p>Apache Struts is an all volunteer product. Our customers are the volunteers who donate their time and |
| energy to supporting the product. If you want to support Apache Struts, and become one of our |
| customers, then you need to get involved and become a volunteer.</p> |
| |
| <p>Our challenge to any team using an Apache Struts product is to donate the time of one team member |
| one afternoon a week (or more if you can spare the resources). |
| Have your team member browse <a href="#issues">JIRA</a> for any issues without a <a href="#patches">patch</a> or unit test, |
| and <a href="#contribute">add the patch or test</a>. (Please note that we do not use @author tags in our |
| JavaDocs an documentation.) |
| If your patch includes an @author tag, we would have to ask that it be removed.</p> |
| |
| <p>If an Apache Struts product doesn’t do what <em>you</em> want, it’s up to <strong>you</strong> to step up and propose the patch. |
| If an Apache Struts product doesn’t ship as often as you would like, it’s up to you to step up with |
| the tests and fixes that get a release out the door. |
| <a href="http://jakarta.apache.org/site/contributing.html">(Like Craig McClanahan did for Tomcat)</a>.</p> |
| |
| <p>If Struts does do what you want, help others become involved by turning your war stories into FAQs |
| and how-tos that we can make part of the <a href="#documentation">documentation</a>. |
| The mailing list is very active and trundling through the archives is no picnic. We can always use |
| volunteers who can reduce the best threads to coherent articles we can share with others.</p> |
| |
| <p>We don’t sell Struts for money, but anyone who wants to be our customer can pay us back by donating |
| the time and energy that money represents.</p> |
| |
| <ul> |
| <li> |
| <h3 id="patches">How do I create a patch?</h3> |
| </li> |
| </ul> |
| |
| <p>A patch is a machine-readable script that can automatically recreate a change to a text file, |
| including source code and documentation. The patch format is also human-readable. Developers often pass |
| patches around to discuss a change before applying it to the main repository.</p> |
| |
| <p>The best way to affect a change to the source code or documentation is to provide a patch. |
| Apache Struts committers can then review your patch and decide whether to apply it to the main repository.</p> |
| |
| <p>Please be aware that the Struts project follows general coding conventions. In short, these are |
| the official Java coding conventions plus the rule to favor spaces over tabs for indenting. See more |
| details at <a href="https://cwiki.apache.org/confluence/display/S2WIKI/Struts+2+Coding+Conventions">Struts 2 Coding Conventions (Wiki)</a></p> |
| |
| <p>To create a patch, you first have to <a href="git-for-struts.html">checkout</a> a copy of the source code |
| or documentation from the main repository. You can then change your copy, and create the patch using a simple |
| <a href="http://git-scm.com/">Git</a> command, like this:</p> |
| |
| <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> git diff Main.java >> patchfile.txt |
| </code></pre></div></div> |
| |
| <p>Then, create a <a href="#issues">JIRA issue</a>about the change, and attach the patch file.</p> |
| |
| <p>Some Apache projects ask that you to submit your patch to the mailing list. We would prefer that you |
| create a JIRA issue and then attach the patch to the issue. To do this, you must first create the issue, |
| and then modify the report to add your patch. We realize this is a bit clumsy, but it keeps us from |
| losing things, and helps to ensure that your patch will be attended.</p> |
| |
| <p>The <a href="http://www.netbeans.org/community/contribute/patches.html">NetBeans community</a> also has a helpful section on the |
| subject of creating patches.</p> |
| |
| <ul> |
| <li> |
| <h3 id="issues">How can I report defects or suggest features?</h3> |
| </li> |
| </ul> |
| |
| <p>Tracking of defect reports and enhancement suggestions for Apache Struts products is handled through the |
| <a href="https://issues.apache.org/jira/browse/WW">Apache Struts JIRA instance</a>. |
| Please select the appropriate Apache Struts product from the list, and then select the component to which |
| you feel this report relates. You will automatically be notified by email as the status of your defect or |
| enhancement report changes. Please be sure to read |
| <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to Report Bugs Effectively</a> |
| before posting a report.</p> |
| |
| <p>If you can’t write a <a href="#patches">patch</a> to address your issue, a unit test that demonstrates the problem is also welcome. |
| (And, of course, unit tests that prove your patch works are equally welcome.)</p> |
| |
| <p>If the defect or feature is already being tracked, you can vote for the issue and call more attention to it. |
| Each user can cast up to six votes at a time.</p> |
| |
| <p>If there is a patch attached to the issue, you can also try applying to your local copy of Struts, |
| and report whether it worked for you. Feedback from developers regarding a proposed patch is really quite |
| helpful. |
| Don’t hesitate to add a “works for me” note to a ticket if you’ve tried the patch yourself and found it useful.</p> |
| |
| <p>Feature suggestions are also maintained in the <a href="https://issues.apache.org/jira/browse/WW">JIRA issue tracker</a>.</p> |
| |
| <ul> |
| <li> |
| <h3 id="contribute">How can I contribute to the Struts source code?</h3> |
| </li> |
| </ul> |
| |
| <p>A very good place to start is by <strong>reviewing the list of open issues</strong> and pending feature suggestions in the |
| <a href="#issues">issue tracker</a>. |
| If you see an issue that needs a patch you can write, feel free to annex your patch. If you see an issue |
| that needs a unit test to prove it’s fixed, feel free to annex your test case. |
| If someone has posted a patch to an issue you’d like to see resolved, apply the patch to your local development |
| copy of Struts. |
| Then let us know if it works for you, and if it does, cast your vote for the issue and its patch.</p> |
| |
| <p>If none of the pending issues scratch your itch, another good place to start is by <strong>contributing unit tests</strong> |
| for existing features (even those that still work).</p> |
| |
| <p>You can upload a proposed <a href="#patches">patch</a> to either the code or documentation by creating a feature |
| suggestion in the <a href="#issues">issue tracker</a>. |
| <strong>After creating the ticket</strong> you can go back and upload a file containing your patch.</p> |
| |
| <p>Our current approach to <a href="kickstart.html#tests">unit testing</a> works fairly well for exercising most method-level |
| stuff, but does not really address situations of dynamic behavior – most particularly the execution of custom tags |
| for Struts. |
| You can try to fake what a JSP container does, but a much more reliable testing regime would actually execute |
| the tag in a real container.</p> |
| |
| <ul> |
| <li> |
| <h3 id="documentation">How can I contribute to the documentation?</h3> |
| </li> |
| </ul> |
| |
| <p>The Struts 2 documentation is maintained using the Atlassian Confluence wiki software and automatically |
| exported to HTML for viewing on the website. To help with the Struts 2 documentation, you must create |
| an account at <a href="http://cwiki.apache.org/confluence">cwki.apache.org/confluence</a>, AND you must file a |
| <a href="https://www.apache.org/licenses/icla.txt">Contributor License Agreement</a> with the ASF.</p> |
| |
| <p>Other ways to help out with the documentation is to just leave a comment on a page that needs fixing. |
| If you have a cwiki Confluence account, you can also create pages on the |
| <a href="http://cwiki.apache.org/S2WIKI/home.html">Struts 2 Wiki</a> without filing a CLA.</p> |
| |
| <p>If you are submitting new material, it is important to decide exactly where you would put this |
| in relation to the rest of the documentation. |
| Again, someone has to figure that out before it can be added, and that someone might as well be you.</p> |
| |
| <ul> |
| <li> |
| <h3 id="release">So when is the next release coming out?</h3> |
| </li> |
| </ul> |
| |
| <p>Here is the truth regarding releases:</p> |
| |
| <p>Apache products are released on the basis of merit, and ~not~ according to a strict timetable. |
| The volunteers devote whatever time they can to work on the product. But all volunteers have real jobs |
| and real lives, that do take precedence. Since Struts does not have paid personnel working on the project, |
| we simply cannot make date-oriented commitments.</p> |
| |
| <p>The bottom line is that Apache takes releases very seriously. We do not compromise the quality of our software by |
| watching the calendar (and then ship something ready or not). A release is ready when it is ready.</p> |
| |
| <p>That may sound flip, but it ~is~ the truth. The delivery of production-quality, leading-edge software |
| is not something anyone can prognosticate. If anyone tries, they are lying to you. |
| That, we won’t do ;-)</p> |
| |
| <p>What we ~will~ do is release all of our development software as soon as it is developed. |
| This way you can judge for yourself how quickly the development is proceeding, and whether what is being |
| developed will meet your needs. |
| If you need a feature right now, you can use the nightly build, or roll your own patch. There are no internal |
| code repositories, private development lists, secret chat rooms, or conference calls. |
| What you see is what we got. If you are following the DEV list, then you know everything the developers know. |
| Really, you do.</p> |
| |
| <p><em>So, what do you tell your team</em>? |
| If you can ship your application based on the nightly build of your choice, then consider that an option. |
| You can still ship yours, even if we don’t ship ours, and you will have access to all the latest patches or |
| enhancements. (Just like we were working down the hall.) If you can only ship your application based on a release |
| build of Struts, then you should base your development on the release build of Struts, |
| and keep an eye on what is coming down the pipeline. |
| This way you are at least forewarned and forearmed.</p> |
| |
| <ul> |
| <li> |
| <h3 id="release_help">What can I do to help the next release along?</h3> |
| |
| <ul> |
| <li> |
| <p>Most importantly, download the latest <a href="builds.html#NightlyBuilds">nightly build</a> or development release |
| and test it against your own applications. Report any and all issues or suspected issues to |
| <a href="#issues">the issue tracker</a>. |
| The sooner we resolve any problems, the fewer betas or release candidates we will have to distribute before we are done. |
| (How do we know when we’re done? – When we run out of issues =:o) The sooner we find them, the sooner we are done.)</p> |
| </li> |
| <li> |
| <p><strong>Contribute <a href="kickstart.html#tests">unit tests</a></strong>. The closer we get to a release, the more we worry |
| about breaking something. The more tests we have, the more confident we can be when applying patches. |
| Tests that prove that a pending issue is actually a defect are the most welcome ones. |
| But we are eager for any and all tests for any and all features, even those that still work =:0).</p> |
| </li> |
| <li> |
| <p><strong>Review the list of issues</strong> at <a href="#issues">the issue tracker</a>. If there are any to which you can respond, please |
| do. If there any patches posted, feel free to test them your system, report the results, and cast your vote |
| if they work.</p> |
| </li> |
| <li> |
| <p><em>Confirm an issue’s category and status</em>. Newbies often post feature suggestions or help-desk |
| questions as “bugs”. This bloats the list of fixes we (apparently) need to apply before the next |
| beta, making it hard to see the forest for the trees. |
| If an issue doesn’t seem to be categorized correctly, exercise your best judgment and change it. |
| If one ticket seems like a duplicate of another, go ahead and enter the change. |
| Every modification to the ticket is echoed to the DEV list and automatically subjected to peer review. |
| Err on the side of doing.</p> |
| </li> |
| <li> |
| <p>Use the issue tracker to <strong>vote for issues</strong> you feel should be handled first. If an issue on your |
| ballot doesn’t include a patch, feel free to try coding one yourself. (In a meritocracy, patches are |
| the only votes that matter.) |
| Dozens of developers have contributed code or documentation to Struts. You can too =:0)</p> |
| </li> |
| <li> |
| <p><strong>Answer questions on the user list</strong>. The Committers only have a limited amount of time to volunteer. |
| If Developers are supporting each other on the lists, the Committers have more time to spend on the next |
| release.</p> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <h3 id="decides_help">How can I help make the decisions?</h3> |
| </li> |
| </ul> |
| |
| <p>A guiding principle of the Apache Software Foundation is “them that do the work, make the decisions”. |
| This phrase is actually a double-entendre. A project will make some decisions by voting (very few), |
| but the real decisions are made when a volunteer actually does the work. Unless someone volunteers to do the work, |
| other decisions are meaningless.</p> |
| |
| <p>In an ASF project, like Apache Struts, volunteers who make sustained contributions to the project |
| are invited to become “Committers”. In due course, Committers are invited to join the Project Management |
| Committee (PMC). |
| A goal of the ASF is for all Committers to be on the PMC.</p> |
| |
| <p>By “sustained”, we mean that an individual has been active in the project for at least six months. |
| The contributions should come in the form of both patches (to code or documentation), and posts to the mailing |
| lists. Patches must be competent and accepted into the repository. Posts must be consistently helpful, friendly, |
| and collaborative. The most important characteristic in a prospective Committer is an |
| amicable demeanor that fosters goodwill.</p> |
| |
| <p>As PMC members take note of Struts developers who meet our qualifications, one of us will call for a vote on |
| the internal PMC mailing list. (This usually happens when someone gets tired of applying |
| the volunteer’s patches!) The internal list is rarely used, and it is never used for development discussions. |
| If the PMC vote passes, we will send the developer a invitation privately, to give the individual a chance to accept |
| or discretely decline. |
| If the candidate is able to accept, the PMC will announce the new member on the dev list.</p> |
| |
| <p>For more about decision-making, see <a href="https://www.apache.org/foundation/how-it-works.html">How the ASF Works</a> |
| and the <a href="bylaws.html">Apache Struts Charter</a>. For more about project infrastructure, |
| see “Project Maintenance and Resources” in the <a href="http://wiki.apache.org/struts/">Struts 1 wiki</a>.</p> |
| |
| </section> |
| </article> |
| |
| |
| <footer class="container"> |
| <div class="col-md-12"> |
| Copyright © 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>. |
| All Rights Reserved. |
| </div> |
| <div class="col-md-12"> |
| Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are |
| trademarks of The Apache Software Foundation. |
| </div> |
| <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div> |
| </footer> |
| |
| <script>!function (d, s, id) { |
| var js, fjs = d.getElementsByTagName(s)[0]; |
| if (!d.getElementById(id)) { |
| js = d.createElement(s); |
| js.id = id; |
| js.src = "//platform.twitter.com/widgets.js"; |
| fjs.parentNode.insertBefore(js, fjs); |
| } |
| }(document, "script", "twitter-wjs");</script> |
| <script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script> |
| |
| <div id="fb-root"></div> |
| |
| <script>(function (d, s, id) { |
| var js, fjs = d.getElementsByTagName(s)[0]; |
| if (d.getElementById(id)) return; |
| js = d.createElement(s); |
| js.id = id; |
| js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1"; |
| fjs.parentNode.insertBefore(js, fjs); |
| }(document, 'script', 'facebook-jssdk'));</script> |
| |
| |
| </body> |
| </html> |