features:
# TOP FEATURE
  top:
    - name: Dynamic Application Security Testing (DAST)
      available_in: [ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/application_security/dast/'
      documentation_text: "Read through the documentation on DAST"
      image_url: '/images/10_4/dast.png'
      reporter: bikebilly
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/3956'
      description: |
        Running static checks on your code is the first step to detect
        vulnerabilities that can put the security of your code at risk.
        Yet, once deployed, your application is exposed to a new category of
        possible attacks, such as cross-site scripting or broken authentication
        flaws.

        Spotting problems automatically gets even better in GitLab 10.4, adding Dynamic
        Application Security Testing (DAST) to audit a live version of your application,
        for example the Review App created in a previous job, directly from your CI/CD pipeline.
        Results are shown in the Merge Request to give easy access to them. Starting with GitLab 10.4.2,
        [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-dast) will run DAST automatically
        against the [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/) of your application.

# PRIMARY FEATURES
  primary:
    - name: SAST for Docker Containers
      available_in: [ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/project/merge_requests/sast_docker.html'
      documentation_text: "Read through the documentation on SAST for Docker Containers"
      image_url: '/images/10_4/sast-container.png'
      reporter: bikebilly
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/3724'
      description: |
        Modern applications that run inside of Containers are more secure because
        the code is separated from other Containers on the same host. But even if
        your code is safe, the environment it runs on may contain flaws that can impact
        the security of the entire application, for example, a vulnerable system library.

        GitLab 10.4 includes the ability to run security checks on the image
        that contains your application and to report possible warnings in the
        Merge Request before merging the changes into the stable branch.
        These checks are part of
        [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast-for-docker-images)
        to provide security by default.

    - name: Web IDE Editor (Beta)
      available_in: [ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/project/web_ide'
      documentation_text: "Read through the documentation on the Web IDE"
      image_url: '/images/10_4/web-ide.png'
      reporter: jramsay
      epic_url: 'https://gitlab.com/groups/gitlab-org/-/epics/24'
      description: |
        With the introduction of the new editor (beta) as the first feature of
        the [Web IDE](https://about.gitlab.com/direction/product-vision/#ide),
        we are making it faster and easier to contribute small fixes and
        resolve merge request feedback by eliminating the need to stash changes
        and switch branches locally.

        In upcoming releases we will integrate the Web IDE more deeply with
        [merge requests](https://gitlab.com/gitlab-org/gitlab-ee/issues/4569)
        and improve
        [commit staging](https://gitlab.com/gitlab-org/gitlab-ee/issues/4541),
        and ultimately add live previews and a web terminal so anyone can
        contribute.

        While in the early stages of the Beta, access to the Web IDE is by opting in.
        To enable the Web IDE, click on your profile image in the top right
        corner and navigate to **Settings > Preferences**, enable the Web IDE
        and **Save**.

    - name: Rebase and fast-forward in CE
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/project/merge_requests/fast_forward_merge.html'
      documentation_text: "Read through the documentation on fast-forward merge requests"
      image_url: '/images/10_4/ff_merge_rebase.png'
      reporter: victorwu
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/40301'
      description: |
        You can now rebase and fast-forward merge directly in the merge request web UI
        in GitLab CE. You don't need to jump between GitLab and your local command line
        anymore while doing these activities; you can do it in a single flow right inside
        GitLab.

        This feature was previously EE only. In support of [GNOME's move to GitLab CE](https://gitlab.gnome.org/GNOME)
        we are excited to bring rebase and fast-forward merge to GitLab CE.

# SECONDARY FEATURES
  secondary:
    - name: Reordering Issues in Epics
      available_in: [ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/group/epics/'
      documentation_text: "Read through the documentation on Epics"
      image_url: '/images/10_4/reorder_epic_issues.png'
      reporter: victorwu
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/3694'
      description: |
        Epics allow you to manage a list of associated
        issues that together share a theme. Often an epic represents a
        large feature that has been separated into multiple issues to be
        worked on across multiple milestones.

        Depending on an organization's workflow,
        they may want the list order in epics to reflect different scenarios.
        This could be priority, difficulty, feasibility, or order of implementation.

        Some organizations might want to put closed issues near the top, while others
        might want them near the bottom. With this release, users can now
        reorder the issues in an epic by simply dragging and dropping, similar
        to that in Issue Boards.

    - name: Epics API
      available_in: [ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/api/epics.html'
      documentation_text: "Read through the documentation on Epics API"
      reporter: victorwu
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/4250'
      description: |
        With this release, the GitLab API supports Epics. So you can now
        manage individual epics, lists of epics, and all epic attributes
        (title, description, and dates) through the API, allowing your team
        to create custom and/or automated workflows outside of GitLab.

        Managing the list of issues associated with an epic [is also supported](https://docs.gitlab.com/ee/api/epic_issues.html),
        including the newly introduced reordering capability.

    - name: Group Issue Boards API
      available_in: [premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/api/group_boards.html'
      documentation_text: "Read through the documentation on Group Issue Boards API"
      reporter: victorwu
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/3413'
      description: |
        Similar to Project Issue Boards, you can now manage Group Issue Boards
        through the API, starting in this release, providing further
        flexibility and opportunities for automation in managing your individual team workflows.

        For example, some teams have certain custom business requirements to move issues automatically
        between board columns under certain conditions. This is now possible for group issue boards
        through the API.

    - name: Easily deploy Prometheus on Kubernetes
      available_in: [core, starter, premium, ultimate]
      #gitlab_com: false #please check
      documentation_link: 'https://docs.gitlab.com/ee/user/project/clusters/index.html#installing-applications'
      documentation_text: "Read through the documentation on deploying Prometheus on Kubernetes with GitLab"
      reporter: joshlambert
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/41053'
      image_url: '/images/10_4/prometheus_deploy.png'
      description: |
        GitLab can now deploy [Prometheus](https://prometheus.io/) into a
        [connected Kubernetes cluster](https://docs.gitlab.com/ee/user/project/clusters/index.html)
        with a single click, making it easier than ever to
        begin monitoring the performance of your application. System metrics like
        processor and memory utilization latency are automatically retrieved from
        Kubernetes, and response metrics like latency and throughput are available
        with a
        [supported ingress](https://docs.gitlab.com/ee/user/project/integrations/prometheus_library/nginx_ingress.html). To get started, connect a cluster at `CI/CD > Clusters`.

        If GitLab has network connectivity to Prometheus, [Prometheus integration](https://docs.gitlab.com/ee/user/project/integrations/prometheus.html)
        can be enabled to analyze and display these metrics directly within GitLab. In the next release, GitLab 10.5, integration will be
        [automatically enabled](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16182)
        and will not require direct network access, offering seamless integration.

    - name: Fast SSH key lookup in CE
      available_in: [core, starter, premium, ultimate]
      gitlab_com: false #please check
      documentation_link: 'https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html'
      documentation_text: "Read through the documentation on fast SSH key lookup"
      reporter: jramsay
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ee/issues/3953'
      description: |
        When authorizing a user, OpenSSH uses linear search to find a key. This
        means that SSH operations become slower as the number of users on a
        GitLab instance grows. For large instances significant time and disk
        I/O may be required to fulfill a request, making Git over SSH slow.

        In GitLab 9.3 fast SSH key lookup was added to GitLab EE. This
        authorizes SSH users via a fast, indexed lookup in the GitLab database
        instead of the default slow linear search. GitLab CE is designed for
        small teams, and as a result did not previously include this
        optimization. However, in support of GitLab's Cloud Native Helm Charts,
        all parts of the code base will need to support fast SSH key lookup
        and has thus been added to GitLab CE.

    - name: Status icon for LFS-tracked files
      available_in: [core, starter, premium, ultimate]
      image_url: '/images/10_4/lfs-icon.png'
      documentation_link: 'https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html'
      documentation_text: "Read through the documentation on Git LFS"
      reporter: jramsay
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/15567'
      description: |
        Identify which files are tracked by Git LFS with the new LFS tracking
        status icon shown in blob views and file lists, including the merge
        request change list. This makes it possible to verify binary files are
        correctly tracked by LFS when reviewing a merge request.

    - name: GitLab Geo support for HA now Generally Available
      available_in: [premium, ultimate]
      gitlab_com: false
      documentation_link: 'https://docs.gitlab.com/ee/gitlab-geo/ha.html'
      documentation_text: "Read through the documentation on GitLab Geo and High Availability"
      reporter: jramsay
      epic_url: 'https://gitlab.com/groups/gitlab-org/-/epics/16'
      description: |
        In GitLab 10.2 both Geo and Postgres HA individually reached general
        availability (GA), but the use of Geo in combination with HA was
        considered Beta.

        Configurations using GitLab Geo in combination with HA are now
        considered GA. This allows geographically distributed teams to enjoy
        faster Git fetch operations using GitLab Geo and the increased
        redundancy of highly available configurations

    - name: Browser Performance Testing now included in Auto DevOps
      available_in: [premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/topics/autodevops/#auto-browser-performance-testing'
      documentation_text: "Read through the documentation on Browser Performance Testing in Auto DevOps"
      reporter: joshlambert
      mr_url: 'https://gitlab.com/gitlab-org/gitlab-ci-yml/merge_requests/132'
      image_url: '/images/10_4/performance_autodevops.png'
      description: |
        In 10.3 we added
        [Browser Performance Testing](/blog/2017/12/22/gitlab-10-3-released/#browser-performance-testing)
        to easily determine the performance impact of a change for web apps,
        *prior* to merge. To use this feature, it was necessary to [add an additional job](https://docs.gitlab.com/ee/ci/examples/browser_performance.html)
        to your `.gitlab-ci.yml` and adapt to your needs.

        In GitLab 10.4, Browser Performance Testing is now
        included in [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops)
        as well, providing automatic performance analytics of the root page
        with zero configuration.

        If you'd like to test add additional pages, simply add the relative
        paths to a `.gitlab-urls.txt` file in the root directory of the
        repository.

    - name: Improved environment performance dashboard
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/ci/environments.html#monitoring-environments'
      documentation_text: "Read through the documentation on monitoring deployed environments"
      reporter: joshlambert
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/38030'
      image_url: '/images/10_4/performance_new_ux.png'
      description: |
        In GitLab 10.4 we have improved the design of the
        [environment performance dashboard](https://docs.gitlab.com/ee/ci/environments.html#monitoring-environments),
        which displays the system and response metrics captured by Prometheus.

        Now, when reviewing metrics at a specific point in time, they are
        clearly displayed on the hover over instead of in the chart's
        legend. In an upcoming release, we will add summary metrics to the legend,
        displaying statistics such as the maximum throughput, or average latency
        over the time span.

    - name: Support for openSUSE Leap 42.3
      available_in: [core, starter, premium, ultimate]
      gitlab_com: false
      documentation_link: 'https://about.gitlab.com/install/#opensuse-42-2-and-42-3'
      documentation_text: "Install GitLab on openSUSE 42.3"
      reporter: joshlambert
      issue_url: 'https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2685'
      description: |
        With GitLab 10.4, Omnibus packages are now available for
        [openSUSE 42.3](https://en.opensuse.org/Portal:42.3).

        This will be the
        [last release with support](#end-of-support-for-the-opensuse-42.2-omnibus-package)
        for openSUSE 42.2, as it is being officially discontinued.

    - name: Clear the Runner cache
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/ci/runners/#manually-clearing-the-runners-cache'
      documentation_text: "Read through the documentation on clearing the Runner cache"
      image_url: '/images/10_4/clear-cache.png'
      reporter: bikebilly
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/41249'
      description: |
        GitLab Runner uses a cache to speed up execution by reusing existing data
        between different jobs. But sometimes it leads to inconsistent
        behaviors, for example, when the local copy of the repository is
        modified by one job, and the new changes impact the execution of the
        following one.

        In GitLab 10.4, we introduce a new button in the Pipelines page that
        can be used to clear any existing cache for the specific project and
        start fresh with a new one. This immediately solves the problem of
        "dirty" runs.

    - name: GitLab Clusters now Generally Available
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/project/clusters/'
      documentation_text: "Read through the documentation on connecting GitLab with a Kubernetes cluster"
      reporter: bikebilly
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/41054'
      description: |
        With GitLab 10.4, we are proud to announce that the Kubernetes cluster
        integration is now Generally Available! You can connect your existing
        clusters to your project, or create new ones on Google Kubernetes
        Engine (GKE) with a few clicks of your mouse, using the new Clusters
        page, under the CI/CD section.

        The old Kubernetes integration service is still accessible, but it can
        be used only if it was enabled before the upgrade to GitLab 10.4. In
        the upcoming releases, the existing data will be migrated to the new
        Cluster page and the integration page will be eventually removed.
        [Service Templates](https://docs.gitlab.com/ee/user/project/integrations/services_templates.html),
        available in the Admin area, are working as usual.

    - name: Run a scheduled pipeline manually
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/ee/user/project/pipelines/schedules.html#running-a-scheduled-pipeline-manually'
      documentation_text: "Read through the documentation on running scheduled pipelines immediately"
      image_url: '/images/10_4/pipeline_schedule_play.png'
      reporter: bikebilly
      issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/38741'
      description: |
        Scheduled pipelines are very useful to run recurring jobs without a manual
        action by the user. They are normally used to perform maintenance tasks, or
        to create nightly builds for your software. But sometimes that exact scope
        is also needed on-demand, and recreating the same environment (e.g., adding
        custom variables) can be hard and time consuming.

        GitLab 10.4 introduces the ability to run a scheduled pipeline manually,
        directly from the web interface: a "play" button can be found for each
        schedule in the list, and running the pipeline is just as simple as a click.

    - name: GitLab Runner 10.4
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://docs.gitlab.com/runner/'
      documentation_text: "Read through the documentation on GitLab Runner"
      description: |
        We're also releasing GitLab Runner 10.4 today! GitLab Runner is the
        open source project that is used to run your CI/CD jobs and send the
        results back to GitLab.

        The most interesting changes:

        * [Add (overwritable) pod annotations for the Kubernetes executor](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/666)
        * [`docker.allowed_images` can use glob syntax in `config.toml`](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/721)
        * [Add support for user-defined Docker runtime](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/764)
        * [Do not use `git config --local` as it's not available in Git v1.7.1](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/790)

        List of all changes can be found in GitLab Runner's
        [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-runner/blob/v10.4.0/CHANGELOG.md).

# Omnibus and performance improvements

    - name: Omnibus improvements
      available_in: [core, starter, premium, ultimate]
      gitlab_com: false
      documentation_link: 'https://docs.gitlab.com/omnibus/README.html'
      documentation_text: 'Read through the documentation on Omnibus GitLab'
      reporter: joshlambert
      description: | # supports markdown
        * GitLab Mattermost version 4.5 includes Zoom plugin for video, audio,
        screen sharing, and much more.
        * CA certificates have been updated to 2017.09.20
        * GitLab Monitor has been updated to 2.4.0
        * Ruby has been updated to 2.3.6
        * Go based libraries such as Registry, Workhorse, and Prometheus are built
        with Go 1.9.2

    - name: Performance improvements
      available_in: [core, starter, premium, ultimate]
      performance_url: https://gitlab.com/groups/gitlab-org/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=10.4&label_name[]=performance
      documentation_text: See all the performance improvements in GitLab 10.4
      reporter: jramsay
      description: |
        We are continuing to make great strides in improving the performance of
        GitLab in every release.
        [We're committed](/handbook/product/#performance) not only to making
        individual instances of GitLab even faster but also greatly
        improving the performance of GitLab.com, an instance that has over one
        million users!

        In GitLab 10.4 we are shipping performance improvements for issues,
        merge requests, repositories and API. Some of the more noteworthy
        improvements include:

        * [Drastically improved filtering performance of issues by label](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16136)
        * [Improve query performance of retrieving merged and closed event information for the merge request widget](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15642)
        * [Improve performance and reduce memory usage of calculating commit stats](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16186)
        * [Prevent cache misses for empty markdown and HTML strings](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15856)
        * [Soft removals of data such as issues and merge requests has been removed](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15789), simplifying database queries. Any soft removed data will be removed physically in this release.
        * [Fix N+1 query problem when displaying a project's Atom feed](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16199) reducing the loading time of Atom feeds
        * [Fix N+1 query problem in the projects build API](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16445)

# MVP
mvp:
  fullname: George Tsiolis
  gitlab: gtsiolis
  description: |
    George, a first-time contributor in GitLab 10.4, has worked consistently
    over the last month polishing the GitLab interface with
    [seven contributions](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=10.4&author_username=gtsiolis),
    including fixes to
    [sidebar icon alignment](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16159)
    and
    [typographic hierarchy in user settings](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16090).

    Thank you, George, for your contributions and eye for detail! We've sent
    George some GitLab swag as a thank you, including a hoodie, socks, and a
    handmade tanuki.

# COVER IMAGE LICENCE
cover_img:
  image_url: 'https://unsplash.com/photos/2Bjq3A7rGn4'
  licence: Unsplash free license
  licence_url: 'https://unsplash.com/license'

# CTA BUTTONS
cta:
  - title: "Join us for an upcoming event"
    link: '/events/'
  - title: "Live Demo of GitLab Enterprise Edition"
    link: '/webcast/monthly-release/'

# UPGRADE BAROMETER
barometer:
  reporter: rspeicher
  description: |
    To upgrade to GitLab 10.4 from the latest 10.3 version, no downtime is
    required. To upgrade without downtime, please consult the
    [documentation on downtimeless upgrades](https://docs.gitlab.com/ee/update/README.html#upgrading-without-downtime).

    For this release we have migrations, post-deploy migrations, and background
    migrations.

    You can check the status of background migrations by running this command
    from [a Rails console](https://docs.gitlab.com/omnibus/maintenance/README.html#starting-a-rails-console-session): `Sidekiq::Queue.new('background_migration').size`

# DEPRECATIONS
deprecations:
  - feature_name: End of support for the openSUSE 42.2 Omnibus package
    due: January 22, 2018.
    reporter: balasankarc
    description: |
      GitLab 10.4 will be the last version to include support for openSUSE
      42.2, as it will be officially discontinued by
      [January 16, 2018](https://en.opensuse.org/Lifetime#openSUSE_Leap).
      GitLab packages are [now available](#support-for-opensuse-leap-423) for
      openSUSE 42.3.

  - feature_name: Mattermost configuration changes
    due: GitLab 11.0.
    reporter: joshlambert
    description: |
      With the release of GitLab 11.0, the number of Mattermost configuration
      options supported within `gitlab.rb` will be reduced. We will continue to
      support the
      [core configuration settings](http://docs.gitlab.com/omnibus/gitlab-mattermost/#upgrading-gitlab-mattermost-from-versions-prior-to-11-0)
      necessary to run Mattermost, and set up the integration with GitLab.
      Going forward, other configuration settings should be set directly within
      the Mattermost console, or
      [passed as environment variables](http://docs.gitlab.com/omnibus/gitlab-mattermost/#upgrading-gitlab-mattermost-from-versions-prior-to-11-0).

      Presently with two applications attempting to write to the same config
      file, changes can be lost.

  - feature_name: 'The <code>gitlab</code> Helm chart'
    due: March 22, 2018.
    reporter: joshlambert
    description: |
      The [`gitlab` Helm chart](https://docs.gitlab.com/ee/install/kubernetes/gitlab_chart.html)
      is deprecated. For installations on Kubernetes today, we recommend the beta [`gitlab-omnibus` Helm chart](https://docs.gitlab.com/ee/install/kubernetes/gitlab_omnibus.html).

      A new [cloud native GitLab chart](https://docs.gitlab.com/ee/install/kubernetes/#cloud-native-gitlab-chart) is in development with increased scalability, resilience, and other benefits. This chart will replace both existing charts when available later this year.

      For more information on GitLab Helm charts, please see [our documentation](https://docs.gitlab.com/ee/install/kubernetes/).

  - feature_name: API V3
    due: GitLab 11.0
    reporter: jramsay
    description: |
      In GitLab 8.17 we
      [announced](https://about.gitlab.com/blog/2017/02/22/gitlab-8-17-released/)
      the deprecation of API v3.

      We are still seeing a high volume of traffic on GitLab.com using API v3
      requests.

      API v3 will be removed in GitLab 11 and we just wanted to ensure that
      developers were migrating to API v4. Please refer to our
      [documentation](https://docs.gitlab.com/ee/api/v3_to_v4.html) that shows
      changes between the two API versions.
