| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>Contributing :: causeway</title> |
| <link rel="canonical" href="https://causeway.apache.org/conguide/latest/contributing.html"> |
| <meta name="generator" content="Antora 3.1.14"> |
| <link rel="stylesheet" href="../../_/css/site.css"> |
| <link rel="stylesheet" href="../../_/css/site-custom.css"> |
| <link rel="home" href="https://causeway.apache.org" title="causeway"> |
| <link rel="next" href="../latest/documentation/about.html" title="Documentation"> |
| <link rel="prev" href="building-apache-causeway.html" title="Building Apache Causeway"> |
| </head> |
| <body class="article"> |
| <header class="header"> |
| <nav class="navbar"> |
| <div class="navbar-brand"> |
| <a class="navbar-item" href="https://causeway.apache.org"> |
| <span class="icon"> |
| <img src="../../_/img/causeway-logo-no-words-65x48.png"></img> |
| </span> |
| <span class="navbar-title">causeway</span> |
| </a> |
| <button class="navbar-burger" data-target="topbar-nav"> |
| <span></span> |
| <span></span> |
| <span></span> |
| </button> |
| </div> |
| <div id="topbar-nav" class="navbar-menu"> |
| <a class="navbar-end"> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Quick Start</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Starter Apps</span> |
| <a class="navbar-item" href="../../docs/latest/starters/helloworld.html">Hello World</a> |
| <a class="navbar-item" href="../../docs/latest/starters/simpleapp.html">Simple App</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Learning & Tutorials</span> |
| <a class="navbar-item" href="../../docs/latest/reference/about.html">Reference App</a> |
| <a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Resources</span> |
| <a class="navbar-item" href="../../docs/latest/resources/cheatsheet.html">Cheatsheet</a> |
| <a class="navbar-item" href="../../docs/latest/resources/icons.html">Icons</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Guides</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Core</span> |
| <a class="navbar-item" href="../../userguide/latest/about.html">User Guide</a> |
| <a class="navbar-item" href="../../refguide/latest/about.html">Reference Guide</a> |
| <a class="navbar-item" href="../../testing/latest/about.html">Testing Guide</a> |
| <a class="navbar-item" href="../../security/latest/about.html">Security Guide</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">For use in apps</span> |
| <a class="navbar-item" href="../../valuetypes/latest/about.html">Value Types</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Development</span> |
| <a class="navbar-item" href="../../setupguide/latest/about.html">Setup Guide</a> |
| <a class="navbar-item" href="../../conguide/latest/about.html">Contributors' Guide</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Components</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Security</span> |
| <a class="navbar-item" href="../../security/latest/bypass/about.html">Bypass</a> |
| <a class="navbar-item" href="../../security/latest/simple/about.html">Simple</a> |
| <a class="navbar-item" href="../../security/latest/spring/about.html">Spring</a> |
| <a class="navbar-item" href="../../security/latest/keycloak/about.html">Keycloak</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Viewers</span> |
| <a class="navbar-item" href="../../vw/latest/about.html">Web UI (Wicket)</a> |
| <a class="navbar-item" href="../../gqlv/latest/about.html">GraphQL API</a> |
| <a class="navbar-item" href="../../vro/latest/about.html">REST API (Restful Objects)</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Persistence</span> |
| <a class="navbar-item" href="../../pjpa/latest/about.html">JPA (EclipseLink)</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Extensions</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Core</span> |
| <a class="navbar-item" href="../../userguide/latest/commandlog/about.html">Command Log</a> |
| <a class="navbar-item" href="../../userguide/latest/docgen/about.html">Doc Gen</a> |
| <a class="navbar-item" href="../../userguide/latest/executionlog/about.html">Execution Log</a> |
| <a class="navbar-item" href="../../userguide/latest/executionoutbox/about.html">Execution Outbox</a> |
| <a class="navbar-item" href="../../userguide/latest/executionrepublisher/about.html">Execution Republisher</a> |
| <a class="navbar-item" href="../../userguide/latest/excel/about.html">Excel</a> |
| <a class="navbar-item" href="../../userguide/latest/flyway/about.html">Flyway</a> |
| <a class="navbar-item" href="../../userguide/latest/layoutloaders/about.html">Layout Loaders</a> |
| <a class="navbar-item" href="../../userguide/latest/titlecache/about.html">Title Cache</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Security</span> |
| <a class="navbar-item" href="../../security/latest/secman/about.html">Secman</a> |
| <a class="navbar-item" href="../../security/latest/audittrail/about.html">Audit Trail</a> |
| <a class="navbar-item" href="../../security/latest/spring-oauth2/about.html">Spring OAuth2 Integration</a> |
| <a class="navbar-item" href="../../security/latest/sessionlog/about.html">Session Log</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Web UI (Wicket)</span> |
| <a class="navbar-item" href="../../vw/latest/fullcalendar/about.html">Full Calendar</a> |
| <a class="navbar-item" href="../../vw/latest/pdfjs/about.html">pdf.js</a> |
| <a class="navbar-item" href="../../vw/latest/sse/about.html">Server Side Events</a> |
| <a class="navbar-item" href="../../vw/latest/tabular/about.html">Tabular Download</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">REST API (Restful Objects)</span> |
| <a class="navbar-item" href="../../vro/latest/cors/about.html">CORS</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Persistence</span> |
| <a class="navbar-item" href="../../querydsl/latest/about.html">QueryDSL</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Support</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Contact</span> |
| <a class="navbar-item" href="../../docs/latest/support/slack-channel.html">Slack</a> |
| <a class="navbar-item" href="../../docs/latest/support/mailing-list.html">Mailing Lists</a> |
| <a class="navbar-item" href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a> |
| <a class="navbar-item" href="https://stackoverflow.com/questions/tagged/causeway">Stack Overflow</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Releases</span> |
| <a class="navbar-item" href="../../docs/latest/downloads/how-to.html">Downloads</a> |
| <a class="navbar-item" href="../../relnotes/latest/about.html">Release Notes</a> |
| <hr class="navbar-divider"/> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Framework</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">Process</span> |
| <a class="navbar-item" href="../../comguide/latest/about.html">Committers' Guide</a> |
| <a class="navbar-item" href="../../tooling/latest/about.html">Tooling</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Automated Analysis</span> |
| <a class="navbar-item" href="https://sonarcloud.io/dashboard?id=apache_causeway">SonarCloud.io</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Interim Builds</span> |
| <a class="navbar-item" href="../../comguide/latest/nightly-builds.html">Nightly builds</a> |
| <a class="navbar-item" href="../../comguide/latest/weekly-builds.html">Weekly builds</a> |
| <a class="navbar-item" href="https://apache-causeway-committers.github.io/causeway-nightly">Website Preview (not ASF hosted)</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Development</span> |
| <a class="navbar-item" href="../../core/latest/about.html">Internal Design Docs</a> |
| <a class="navbar-item" href="../../regressiontests/latest/about.html">Regression Tests</a> |
| <a class="navbar-item" href="../../incubator/latest/about.html">Incubator</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Thanks</span> |
| <a class="navbar-item" href="../../more-thanks/latest/more-thanks.html">Acknowledgements</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">ASF</a> |
| <div class="navbar-dropdown"> |
| <a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a> |
| <a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a> |
| <a class="navbar-item" href="https://www.apache.org/licenses/">License</a> |
| <a class="navbar-item" href="https://www.apache.org/security/">Security</a> |
| <a class="navbar-item" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a> |
| <a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| <a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a> |
| <hr class="navbar-divider"/> |
| <a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Causeway.html">PMC board minutes</a> |
| </div> |
| </div> |
| <a class="navbar-item" href="../../docs/latest/about.html"> |
| <span class="icon"> |
| <img src="../../_/img/home.png"></img> |
| </span> |
| </a> |
| </div> |
| </div> |
| </nav> |
| </header> |
| <div class="body "> |
| <div class="nav-container" data-component="conguide" data-version="2.1.0"> |
| <aside class="nav"> |
| <div class="panels"> |
| <div class="nav-panel-search hide-for-print"> |
| <input id="algolia-search-input" placeholder="Search"></span> |
| </div> |
| <div class="nav-panel-pagination"> |
| <a class="page-previous" rel="prev" href="building-apache-causeway.html" title="Building Apache Causeway"><span></span></a> |
| <a class="page-next" rel="next" |
| href="../latest/documentation/about.html" title="Documentation"><span></span></a> |
| <!-- |
| page.parent doesn't seem to be set... |
| <a class="page-parent disabled" rel="prev" href="" title="Building Apache Causeway"><span></span></a> |
| --> |
| </div> |
| <div class="nav-panel-menu is-active" data-panel="menu"> |
| <nav class="nav-menu"> |
| <h3 class="title"><a href="about.html">Contributors' Guide</a></h3> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <a class="nav-link" href="building-apache-causeway.html">Building Apache Causeway</a> |
| </li> |
| <li class="nav-item is-current-page" data-depth="1"> |
| <a class="nav-link" href="contributing.html">Contributing</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../latest/documentation/about.html">Documentation</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../latest/documentation/building-docs-and-website.html">Building Docs and Website</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../latest/documentation/asciidoc-syntax.html">AsciiDoc Syntax</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <a class="nav-link" href="../latest/intellij/about.html">IntelliJ</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <a class="nav-link" href="../latest/eclipse/about.html">Eclipse</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <a class="nav-link" href="../latest/git/about.html">Git Cookbook</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </nav> |
| </div> |
| <div class="nav-panel-explore" data-panel="explore"> |
| <div class="context"> |
| <span class="title">Contributors' Guide</span> |
| <span class="version">2.1.0</span> |
| </div> |
| <ul class="components"> |
| <li class="component"> |
| <span class="title"> </span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../docs/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../docs/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Committers' Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../comguide/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../comguide/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component is-current"> |
| <span class="title">Contributors' Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version is-current"> |
| <a href="about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Design Docs</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../core/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../core/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Extensions</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../extensions/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../extensions/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">GraphQL Viewer</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../gqlv/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../gqlv/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Incubator Catalog</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../incubator/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../incubator/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">JDO/DataNucleus</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../pjdo/latest/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjdo/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">JPA</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../pjpa/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../pjpa/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">QueryDSL</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../querydsl/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../querydsl/3.2.0/about.html">3.2.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Reference Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../refguide/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../refguide/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">regressiontests</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../regressiontests/latest/index.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/4.0.0-M1/index.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.6.0/index.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.5.0/index.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.4.0/index.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.3.0/index.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.2.0/index.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.1.0/index.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/3.0.0/index.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/2.1.0/index.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../regressiontests/2.0.0/index.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Release Notes</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../relnotes/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../relnotes/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">REST API (Restful Objects Viewer)</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../vro/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vro/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Security Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../security/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../security/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Setup Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../setupguide/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../setupguide/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Testing Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../testing/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../testing/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Tutorials</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../tutorials/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../tutorials/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">User Guide</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../userguide/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../userguide/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Value Types Catalog</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../valuetypes/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../valuetypes/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Web UI (Wicket Viewer)</span> |
| <ul class="versions"> |
| <li class="version"> |
| <a href="../../vw/latest/about.html">4.0.0-M2</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/4.0.0-M1/about.html">4.0.0-M1</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.6.0/about.html">3.6.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.5.0/about.html">3.5.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.4.0/about.html">3.4.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.3.0/about.html">3.3.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.2.0/about.html">3.2.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.1.0/about.html">3.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/3.0.0/about.html">3.0.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/2.1.0/about.html">2.1.0</a> |
| </li> |
| <li class="version"> |
| <a href="../../vw/2.0.0/about.html">2.0.0</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </aside> |
| </div> |
| <main role="main"> |
| <div class="toolbar" role="navigation"> |
| <button class="nav-toggle"></button> |
| <a href="../../docs/latest/about.html" class="home-link"></a> |
| <nav class="breadcrumbs" aria-label="breadcrumbs"> |
| <ul> |
| <li><a href="about.html">Contributors' Guide</a></li> |
| <li><a href="contributing.html">Contributing</a></li> |
| </ul> |
| </nav> |
| <div class="page-versions"> |
| <button class="version-menu-toggle" title="Show other versions of page">2.1.0</button> |
| <div class="version-menu"> |
| <a class="version" href="../latest/contributing.html">4.0.0-M2</a> |
| <a class="version" href="../4.0.0-M1/contributing.html">4.0.0-M1</a> |
| <a class="version" href="../3.6.0/contributing.html">3.6.0</a> |
| <a class="version" href="../3.5.0/contributing.html">3.5.0</a> |
| <a class="version" href="../3.4.0/contributing.html">3.4.0</a> |
| <a class="version" href="../3.3.0/contributing.html">3.3.0</a> |
| <a class="version" href="../3.2.0/contributing.html">3.2.0</a> |
| <a class="version" href="../3.1.0/contributing.html">3.1.0</a> |
| <a class="version" href="../3.0.0/contributing.html">3.0.0</a> |
| <a class="version is-current" href="contributing.html">2.1.0</a> |
| <a class="version" href="../2.0.0/contributing.html">2.0.0</a> |
| </div> |
| </div> |
| <div class="edit-this-page"><a href="https://github.com/apache/causeway/edit/2.1.0/antora/components/conguide/modules/ROOT/pages/contributing.adoc">Edit</a></div> |
| </div> |
| <article class="doc"> |
| <a name="section-top"></a> |
| <h1 class="page">Contributing</h1> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>This page explains how you can contribute to Apache Causeway. |
| You’ll probably also want <a href="../../setupguide/latest/about.html" class="xref page">set up your IDE</a> and learn <a href="../latest/building-apache-causeway.html" class="xref page">how to build Apache Causeway</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Thanks for considering to help out, your contributions are appreciated!</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="recommended-workflow-github"><a class="anchor" href="#recommended-workflow-github"></a>Recommended Workflow (GitHub)</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Apache Causeway' source code is hosted in at GitHub (<a href="https://github.com/apache/causeway.git">https</a>, or ssh: <code>git@github.com:apache/causeway.git</code>).</p> |
| </div> |
| <div class="paragraph"> |
| <p>As you might imagine, only committers are permitted to push changes to the GitHub repo. |
| As a contributor, we recommend that you fork the <a href="https://github.com/apache/causeway.git">apache/causeway</a> GitHub repo, and then use your fork as a way of publishing your patches for the Apache Causeway committers to apply.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The diagram below illustrates the process:</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="_images/contributing/git-workflow.png" alt="git workflow" width="600px"> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>That is:</p> |
| </div> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>as a one-time activity, you fork the <a href="https://github.com/apache/causeway.git">github.com/apache/causeway</a> repo into your own fork on github.com</p> |
| </li> |
| <li> |
| <p>as a one-time activity, you clone your fork to your local computer</p> |
| </li> |
| <li> |
| <p>you set the <a href="https://github.com/apache/causeway.git">github.com/apache/causeway</a> as your upstream branch; this will allow you to keep your local clone up-to-date with new commits</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>note the asymmetry here: the <code>upstream</code> repo (the Apache GitHub repo) is <strong>not</strong> the same as the <code>origin</code> repo (your fork).</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p>you work on your changes locally; when done, you push them to your GitHub fork</p> |
| </li> |
| <li> |
| <p>to contribute back a change, raise a <a href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a> ticket (you will need to log in or create a new account first), and ensure your commit message is in the form: <code>CAUSEWAY-nnnn: …​</code> so that changes can be tracked (more discussion on this point below). |
| In any case, before you decide to start hacking with Apache Causeway, it’s always worth creating a ticket in JIRA and then have a discussion about it on the <a href="../../docs/latest/support/mailing-list.html" class="xref page">mailing lists</a>.</p> |
| </li> |
| <li> |
| <p>Use GitHub to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a> for your feature</p> |
| </li> |
| <li> |
| <p>An Apache Causeway committer will review your change, and apply it if suitable.</p> |
| </li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="setting-up-your-forkclone"><a class="anchor" href="#setting-up-your-forkclone"></a>Setting up your fork/clone</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If you choose to create your own fork then you’ll need an account on <a href="https://github.com">github.com</a>. |
| You then fork simply by pressing the "Fork" button:</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="_images/contributing/github-forking.png" alt="github forking" width="600px"> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>An account isn’t needed if you just clone straight from the <a href="http://github.com/apache/causeway">github.com/apache/causeway</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Whether you’ve forked or not, you then need to clone the repo onto your computer. |
| GitHub makes this very easy to do:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>for Windows users, we suggest you use GitHub’s 'Clone in Windows' feature</p> |
| </li> |
| <li> |
| <p>for Mac/Linux users, create a clone from the command line:</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Again, the info is easily found in the GitHub page:</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="_images/contributing/github-cloning.png" alt="github cloning" width="600px"> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you’ve created your own fork, then you need to add the <code>upstream</code> remote to the <a href="https://github.com/apache/causeway">github.com/apache/causeway</a>. |
| This remote is traditionally called <code>upstream</code>. |
| You should then arrange for your <code>master</code> branch to track the <code>upstream/master</code> remote branch:</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you didn’t create your own fork, you can omit the above step. |
| Either way around, you can now fetch new commits using simply:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git fetch</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>For more info on tracking branches <a href="http://git-scm.com/book/en/Git-Branching-Remote-Branches">here</a> and <a href="http://gitready.com/beginner/2009/03/09/remote-tracking-branches.html">here</a>.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="commit-messages"><a class="anchor" href="#commit-messages"></a>Commit messages</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Although with git your commits are always performed on your local repo, those commit messages become public when the patch is applied by an Apache Causeway committer. |
| You should take time to write a meaningful commit message that helps explain what the patch refers to; if you don’t then there’s a chance that your patch may be rejected and not applied. |
| No-one likes hard work to go to waste!</p> |
| </div> |
| <div class="paragraph"> |
| <p>We therefore recommend that your commit messages are as follows:<sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup></p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-other hljs" data-lang="other">CAUSEWAY-999: Makes the example in CONTRIBUTING imperative and concrete |
| |
| Without this patch applied, the example commit message in the CONTRIBUTING |
| document is not a concrete example. This is a problem because the |
| contributor is left to imagine what the commit message should look like |
| based on a description rather than an example. This patch fixes the |
| problem by making the example concrete and imperative. |
| |
| The first line is a real life imperative statement with a ticket number |
| from our issue tracker. The body describes the behavior without the patch, |
| why this is a problem, and how the patch fixes the problem when applied.</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="sample-contribution-workflow"><a class="anchor" href="#sample-contribution-workflow"></a>Sample Contribution Workflow</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Assuming your development environment is all setup, let’s walk through how you might make contribute a patch. |
| In this example, suppose that you’ve decided to work on JIRA ticket #123, an enhancement to support Blob/Clob datatypes.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="update-your-master-branch"><a class="anchor" href="#update-your-master-branch"></a>Update your master branch</h3> |
| <div class="paragraph"> |
| <p>The first thing to do is to make sure your local clone is up-to-date. |
| We do this by retrieving new commits from upstream repo and then merging them as a fast-forward into your local branch.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Irrespective of whether you are using a GitHub fork, the upstream for your local <code>master</code> branch will be tracking the appropriate remote’s <code>master</code> branch. |
| So n either case, the same commands work:</p> |
| </div> |
| <div class="paragraph"> |
| <p>Alternatively, you can combine the <code>git fetch</code> and <code>git merge</code> and just use <code>git pull</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout master |
| git pull --ff-only</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If the <code>merge</code> or <code>pull</code> fails, it means that you must have made commits and there have been changes meanwhile on the remote <code>master’s branch. |
| You can use `gitk --all</code> to confirm. |
| If this fails, see our <a href="../latest/git/about.html#git-cookbook" class="xref page">git cookbook</a> page for a procedure to retrospectively sort out this situation.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="create-a-topic-branch"><a class="anchor" href="#create-a-topic-branch"></a>Create a topic branch</h3> |
| <div class="paragraph"> |
| <p>We recommend you name topic branches by the JIRA ticket, ie <tt>CAUSEWAY-nnn-description</tt>. |
| So let’s create a new branch based off <code>master</code> and call it "CAUSEWAY-123-blobs"</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can confirm the branch is there and is your new <code>HEAD</code> using either <code>gitk --all</code>. |
| Alternatively, use the command line:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git checkout -b CAUSEWAY-123-blobs</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The command line prompt should also indicate you are on a branch, isolated from any changes that might happen on the <code>master</code> branch.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="make-file-changes-and-commit"><a class="anchor" href="#make-file-changes-and-commit"></a>Make File Changes and Commit</h3> |
| <div class="paragraph"> |
| <p>Next, make changes to your files using the usual commands (see also our <a href="../latest/git/about.html#git-cookbook" class="xref page">git cookbook</a> section):</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>git add</code></p> |
| </li> |
| <li> |
| <p><code>git mv</code></p> |
| </li> |
| <li> |
| <p><code>git rm</code></p> |
| </li> |
| <li> |
| <p><code>git commit</code></p> |
| </li> |
| <li> |
| <p><code>git status</code></p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>and so on.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Continue this way until happy with the change. |
| Remember to run all your tests on the topic branch (including a full <code>mvn clean install</code>).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="rebasing-with-master"><a class="anchor" href="#rebasing-with-master"></a>Rebasing with <code>master</code></h3> |
| <div class="paragraph"> |
| <p>Before you can share your change, you should rebase (in other words replay) your changes on top of the <code>master</code> branch.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The first thing to do is to pull down any changes made in upstream remote’s <code>master</code> since you started your topic branch:</p> |
| </div> |
| <div class="paragraph"> |
| <p>These are the same commands that you would have run before you created your topic branch. |
| If you use <code>gitk --all</code>, there’s a good chance that new commits have come in.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Next, we reintegrate our topic branch by rebasing onto <code>master</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout CAUSEWAY-123-blobs |
| git rebase master</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>This takes all of the commits in your branch, and applies them on top of the new <code>master</code> branch. |
| When your change is eventually integrated back in, it will result in a nice clear linear history on the public repo.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If the rebase fails because of a conflict, then you’ll be dumped into REBASE mode. |
| Edit the file that has the conflict, and make the appropriate edits. |
| Once done:</p> |
| </div> |
| <div class="paragraph"> |
| <p>Once the rebase has completed, re-run your tests to confirm that everything is still good.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="raising-a-pull-request"><a class="anchor" href="#raising-a-pull-request"></a>Raising a pull request</h3> |
| <div class="paragraph"> |
| <p>If you have your own fork, you can now simply push the changes you’ve made locally to your fork:</p> |
| </div> |
| <div class="paragraph"> |
| <p>This will create a corresponding branch in the remote GitHub repo. |
| If you use <code>gitk --all</code>, you’ll also see a <code>remotes/origin/CAUSEWAY-123-blobs</code> branch.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Then, use GitHub to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>. |
| Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail to the <a href="../../docs/latest/support/mailing-list.html" class="xref page">dev mailing list</a>. |
| You’ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn’t mandatory).</p> |
| </div> |
| <div class="paragraph"> |
| <p>The process to raise the pull request, broadly speaking:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Open a web browser to your GitHub fork of causeway</p> |
| </li> |
| <li> |
| <p>Select your topic branch (pushed in the previous step) so that the pull request references the topic branch.</p> |
| </li> |
| <li> |
| <p>Click the <code>Pull Request</code> button.</p> |
| </li> |
| <li> |
| <p>Check that the Apache Causeway mailing list email came through.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="if-your-pull-request-is-accepted"><a class="anchor" href="#if-your-pull-request-is-accepted"></a>If your pull request is accepted</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>To double-check that your pull request is accepted, update your <code>master</code> branch from the <code>upstream</code> remote:</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can then use <code>gitk --all</code> (or <code>git log</code> if you prefer the command line) to check your contribution has been added.</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can now delete your topic branch and remove the branch in your GitHub:</p> |
| </div> |
| <div class="paragraph"> |
| <p>Finally, you might want to push the latest changes in master back up to your GitHub fork. |
| If so, use:</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="if-your-pull-request-is-rejected"><a class="anchor" href="#if-your-pull-request-is-rejected"></a>If your pull request is rejected</h3> |
| <div class="paragraph"> |
| <p>If your pull request is rejected, then you’ll need to update your branch from the main repository and then address the rejection reason.</p> |
| </div> |
| <div class="paragraph"> |
| <p>You’ll probably also want to remove the remote branch on github:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git push origin --delete CAUSEWAY-123-blobs</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>... and continue as before until you are ready to resubmit your change.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div id="footnotes"> |
| <hr> |
| <div class="footnote" id="_footnotedef_1"> |
| <a href="#_footnoteref_1">1</a>. Inspiration for the recommended commit format comes from the <a href="https://github.com/puppetlabs/puppet">puppet</a> project’s <a href="https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md">contributing</a> page. |
| </div> |
| </div> |
| </article> |
| <aside class="article-aside toc hide-for-print" role="navigation"> |
| <p class="toc-title">On this page</p> |
| <div id="article-toc"></div> |
| </aside> |
| </main> |
| </div> |
| <footer class="footer"> |
| <div class="content"> |
| <div class="copyright"> |
| <p> |
| Copyright © 2010~2024 The Apache Software Foundation, licensed under the Apache License, v2.0. |
| <br/> |
| Apache, the Apache feather logo, Apache Causeway, and the Apache Causeway project logo are all trademarks of The Apache Software Foundation. |
| </p> |
| </div> |
| <div class="revision"> |
| <p>Revision: build-website.20260712-1517</p> |
| </div> |
| </div> |
| </footer> |
| <script src="../../_/js/site.js"></script> |
| <script async src="../../_/js/vendor/highlight.js"></script> |
| <script src="../../_/js/vendor/jquery-3.4.1.min.js"></script> |
| <script src="../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script> |
| <script src="../../_/js/vendor/jquery.tocify.min.js"></script> |
| |
| <script> |
| $(function() { |
| $("#article-toc").tocify( { |
| showEffect: "slideDown", |
| hashGenerator: "pretty", |
| hideEffect: "slideUp", |
| selectors: "h2, h3", |
| scrollTo: 120, |
| smoothScroll: true, |
| theme: "jqueryui", |
| highlightOnScroll: true |
| } ); |
| }); |
| </script> |
| |
| <script src="../../_/js/vendor/docsearch.min.js"></script> |
| <script> |
| function focusSearchInput () { document.querySelector('#algolia-search-input').focus() } |
| var search = docsearch({ |
| appId: '5ISP5TFAEN', |
| apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c', |
| indexName: 'causeway-apache-org', |
| inputSelector: '#algolia-search-input', |
| autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] }, |
| debug: false, |
| }).autocomplete |
| search.on('autocomplete:closed', function () { search.autocomplete.setVal() }) |
| focusSearchInput() |
| window.addEventListener('load', focusSearchInput); |
| </script> |
| |
| <!-- |
| docsearch options: |
| https://docsearch.algolia.com/docs/behavior/ |
| --> |
| <!-- |
| https://www.algolia.com/doc/api-reference/api-parameters/ |
| algoliaOptions: { hitsPerPage: 6 }, |
| --> |
| </body> |
| </html> |