add a developer guidelines page
diff --git a/site/src/site/pages/guidelines.groovy b/site/src/site/pages/guidelines.groovy
new file mode 100644
index 0000000..4ee8fd3
--- /dev/null
+++ b/site/src/site/pages/guidelines.groovy
@@ -0,0 +1,81 @@
+layout 'layouts/main.groovy', true,
+ pageTitle: 'The Apache Groovy programming language - Developer Guidelines',
+ mainContent: contents {
+ div(id: 'content', class: 'page-1') {
+ div(class: 'row') {
+ div(class: 'row-fluid') {
+ div(class: 'col-lg-3') {
+ ul(class: 'nav-sidebar') {
+ include template: 'includes/support-navbar.groovy'
+ li(class: 'active') {
+ a(href: 'guidelines.html') {
+ strong 'Developer Guidelines'
+ }
+ }
+ }
+ }
+
+ div(class: 'col-lg-8 col-lg-pull-0') {
+ include template: 'includes/contribute-button.groovy'
+ h1 {
+ i(class: 'fa fa-map-signs') {}
+ yield ' Developer Guidelines'
+ }
+ article {
+ h2 'Useful build tasks'
+ ul {
+ li "`installGroovy` or `iG` will build a local install of Groovy which can be used for testing (consider `-PskipIndy` if you don't need indy and want a faster build)"
+ li '`install` will publish to local Maven repo'
+ li '`testAll` to run the test suite'
+ li '`groovydocAll` to produce Groovydoc for all modules'
+ li '`:test --tests=some.package.SomeTest` to run an individual test'
+ }
+ h2 'Build cache'
+ p """
+ The Groovy build makes use of Gradle's build cache. This speeds up the build in many scenarios
+ but sometimes gets in the way (we no doubt have tasks in our build that aren't properly configured wrt stale output).
+ In such cases, use `--no-build-cache` when running tasks.
+ """
+ h2 'Binary compatibility'
+ p """
+ We regard binary compatibility as very important. It's not simply an issue related to
+ how our build works but it impacts many Groovy users. When making changes API, it's not just a case of
+ checking for all usages within the Groovy codebase that might be impacted but also whether
+ changes will impact other projects and users of Groovy.
+ In particular changes related to the Groovy runtime must be done with extreme care.
+ These are the classes that compiled Groovy code might call into during execution.
+ """
+ p """
+ In general, we try to evolve the Groovy codebase to minimise impact on Groovy-based frameworks.
+ For example, we'd ideally like a Grails application built with Groovy 3 to work with a Grails plugin compiled under Groovy 2.5.
+ This isn't always possible but we should then make life easier for frameworks by appropriate documentation when a breaking change is needed (see hints below).
+ """
+ p """
+ In theory, classes under the `org.codehaus` and 'org.apache' packages are more internal than those in the `groovy` package.
+ But users of Groovy will use any public/protected class, so make changes in all areas of the codebase with care.
+ [NOTE: If we start using JDK9+ modules more we might be able to alter this approach but we haven't started down that path yet.]
+ """
+ p {
+ yield 'Hints:'
+ ul {
+ li 'Run the `:binary-compatibility:checkBinaryCompatibility` task before committing.'
+ li 'If a public/protected method needs a new parameter, keep the existing method and create an additional one with the extra parameter. Sometimes the old method should be `@Deprecated`.'
+ li 'If you want to rename a method, keep the old one and (if appropriate) deprecate the old one rather than just rename the existing one.'
+ li 'If the return type of a method changes but nothing else, consider creating a bridge method - the build is set up to use a `Bridger` utility to do this for `$$bridge` methods.'
+ li "If the change can't be totally hidden, start a discussion in the dev/users mailing list as appropriate to investigate usages of the API by others."
+ li "If the change can't be totally hidden, do mark the related JIRA issue (create one if needed) with the `breaking` label."
+ li "If the change can't be totally hidden, do add a little summary/migration note in the relevant release note(s)."
+ }
+ }
+ h2 'Checkstyle'
+ p 'TBD'
+ h2 'Codenarc'
+ p 'TBD'
+ h2 'Coverage'
+ p 'TBD'
+ }
+ }
+ }
+ }
+ }
+ }
diff --git a/site/src/site/sitemap-dev.groovy b/site/src/site/sitemap-dev.groovy
index 2255909..071bb86 100644
--- a/site/src/site/sitemap-dev.groovy
+++ b/site/src/site/sitemap-dev.groovy
@@ -60,6 +60,7 @@
page 'download', 'download', [category: 'Download', distributions: distributions]
page 'versioning', 'versioning', [category: 'Download']
page 'contribute', 'index', [category: 'Develop']
+ page 'guidelines', 'guidelines', [category: 'Develop']
page 'buildstatus', 'buildstatus', [category: 'Develop']
page 'faq', 'faq', [category: 'Documentation']
page '404','404', [:]