---
title: Development
description: Contribute to the development of Hugo.
categories: []
keywords: []
---

## Introduction

You can contribute to the Hugo project by:

- Answering questions on the [forum][]
- Improving the [documentation][]
- Monitoring the [issue queue][]
- Creating or improving [themes][]
- Squashing [bugs][]

Please submit documentation issues and pull requests to the [documentation repository][].

If you have an idea for an enhancement or new feature, create a new topic on the [forum][] in the "Feature" category. This will help you to:

- Determine if the capability already exists
- Measure interest
- Refine the concept

If there is sufficient interest, [create a proposal][]. Do not submit a pull request until the project lead accepts the proposal.

For a complete guide to contributing to Hugo, see the [Contribution Guide][].

## Prerequisites

To build Hugo from source you must install:

1. Install [Git][]
1. Install [Go][] version {{% current-go-version %}} or later

## GitHub workflow

> [!NOTE]
> This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.

Use this workflow to create and submit pull requests.

Step 1
: Fork the [project repository][].

Step 2
: Clone your fork.

Step 3
: Create a new branch with a descriptive name that includes the corresponding issue number.

  For a new feature:

  ```sh
  git checkout -b feat/implement-some-feature-99999
  ```

  For a bug fix:

  ```sh
  git checkout -b fix/fix-some-bug-99999
  ```

Step 4
: Make changes.

Step 5
: Build and install.

  To build and install the standard edition:

  ```sh
  CGO_ENABLED=0 go install
  ```

  {{< new-in v0.159.2 />}} To build and install the deploy edition:

  ```sh
  CGO_ENABLED=0 go install -tags withdeploy
  ```

  To build and install the extended edition, first install a C compiler such as [GCC][] or [Clang][] and then run the following command:

  ```sh
  CGO_ENABLED=1 go install -tags extended
  ```

  To build and install the extended/deploy edition, first install a C compiler such as [GCC][] or [Clang][] and then run the following command:

  ```sh
  CGO_ENABLED=1 go install -tags extended,withdeploy
  ```

Step 6
: Test your changes:

  ```sh
  go test ./...
  ```

Step 7
: Commit your changes with a descriptive commit message:

  - Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
    - Begin the summary with the name of the package, followed by a colon, a space, and a brief description of the change beginning with a capital letter
    - Use imperative present tense
    - See the [commit message guidelines][] for requirements
  - Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
  - Add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues][] addressed by this change.

  For example:

  ```sh
  git commit -m "tpl/strings: Create wrap function

  The strings.Wrap function wraps a string into one or more lines,
  splitting the string after the given number of characters, but not
  splitting in the middle of a word.

  Fixes #99998
  Closes #99999"
  ```

Step 8
: Push the new branch to your fork of the documentation repository.

Step 9
: Visit the [project repository][] and create a pull request (PR).

Step 10
: A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.

[Clang]: https://clang.llvm.org/
[Contribution Guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md
[GCC]: https://gcc.gnu.org/
[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
[Go]: https://go.dev/doc/install
[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug
[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines
[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md
[documentation repository]: https://github.com/gohugoio/hugoDocs
[documentation]: /documentation
[forum]: https://discourse.gohugo.io
[issue queue]: https://github.com/gohugoio/hugo/issues
[issues]: https://github.com/gohugoio/hugo/issues
[project repository]: https://github.com/gohugoio/hugo/
[themes]: https://themes.gohugo.io/
