layout 'layouts/main.groovy', true,
        pageTitle: 'The Apache Groovy programming language - Versioning',
        mainContent: contents {
            div(id: 'content', class: 'page-1') {
                div(class: 'row') {
                    div(class: 'row-fluid') {
                        div(class: 'col-lg-3') {
                            ul(class: 'nav-sidebar') {
                                li {
                                    a(href: 'download.html', 'Download Groovy')
                                }
                                li {
                                    a(href: 'download.html#distro', class: 'anchor-link', 'Distributions')
                                }
                                li {
                                    a(href: 'download.html#sdkman', class: 'anchor-link', 'Through SDKMAN!')
                                }
                                li {
                                    a(href: 'download.html#buildtools', class: 'anchor-link', 'From your build tools')
                                }
                                li {
                                    a(href: 'download.html#otherways', class: 'anchor-link', 'Other ways to get Groovy')
                                }
                                li(class: 'active') {
                                    a(href: 'versioning.html') {
                                        strong 'Groovy version scheme'
                                    }
                                }
                                li {
                                    a(href: 'indy.html', 'Invoke dynamic support')
                                }
                            }
                        }

                        div(class: 'col-lg-8 col-lg-pull-0') {
                            include template: 'includes/contribute-button.groovy'
                            h1 {
                                i(class: 'fa fa-copy') {}
                                yield ' Groovy version scheme'
                            }
                            article {
                                h2 'Since Groovy 2.0.0'
                                p "Since Groovy 2.0.0 we follow the ${$a(href: "http://semver.org/", 'semantic version scheme')}. This means the next minor version after 2.0.0 is 2.1.0, the first bugfix version after 2.0 is 2.0.1 and the next major version will be 3.0.0."

                                h2 'Before Groovy 2.0.0'
                                p 'Before Groovy 2.0.0 we followed a version scheme where we had X.Y.Z, where X.Y was the major version, and Z the minor version.\n' +
                                        'Bugfix versions where not really done, you had to upgrade to the next minor version for that.\n' +
                                        'Since Groovy 1.0 we incremented only the Y for a new major version.\n' +
                                        'The increment of X we wanted to leave for a very big breaking change, like a new Meta-Object Protocol.\n' +
                                        'The last major version in these scheme is 1.8(.0), 1.8.1 is the first minor and bugfix version.\n' +
                                        'The major versions in the past using this scheme are: 1.8, 1.7, 1.6, 1.5, 1.0. Each of them having around 10 minor/bugfix versions.'

                                h2 'Official Major Version'
                                p 'The official major version is the current major version that should/can be used by the developers if they are not bound to a specific major version.'

                                h2 'Maintenance Release Branch'
                                p 'Here we indicate a former major version\'s bugfix release.'

                                h2 'How long is a major version maintained?'
                                p 'That depends on the users. Let\'s say we have X in maintenance and Y is the official major version, ' +
                                        'then if a new major version Z is released, Y goes into maintenance. Usually we make one or two more bugfix releases for X and then we discontinue it, ' +
                                        'unless there are strong requests to have certain things fixed for users that can absolutely not upgrade.'
                            }
                            hr(class: 'divider')
                        }
                    }
                }
            }
        }
