Skip to content

Contributing code to Orchard Core

First of all, thank you for thinking about contributing to the code! Be sure to check out the general contribution docs first.

Info

Are you looking for information on contributing documentation? Head over to here instead.

Working with Orchard Core's source code

First, clone the repository using the command git clone https://github.com/OrchardCMS/OrchardCore.git and checkout the main branch. Then, you have multiple options, see below. You can also use any other .NET IDE too.

Command Line

  1. Install the latest version of the .NET SDK from https://dotnet.microsoft.com/download.
  2. Navigate to ./OrchardCore/src/OrchardCore.Cms.Web.
  3. Run dotnet run.
  4. Open the http://localhost:5000 URL in your browser.

Visual Studio

  1. Download Visual Studio 2022 (v17.8+) from https://www.visualstudio.com/downloads (any edition will work).
  2. Launch the solution by clicking on OrchardCore.sln. Give Visual Studio time to restore all missing NuGet packages.
  3. Ensure OrchardCore.Cms.Web is set as the startup project. Then run the app with Ctrl+F5.

Selecting what to work on

We warmly welcome fixes and features! Here are some resources to help you get started on how to contribute code:

Identifying the scale

First, identify the scale of what you would like to contribute. If it is small (grammar/spelling or a bug fix) feel free to start working on a fix. If you are submitting a feature or other substantial code contribution, please discuss it with the team first and ensure it follows the roadmap and fits into the bigger picture. We'd hate to see your work go to waste! The best is if you work on open issues, and open an issue for your idea too, before starting coding.

You might also read these two blog posts on contributing code: Open Source Contribution Etiquette by Miguel de Icaza and Don't "Push" Your Pull Requests by Ilya Grigorik.

Submitting a pull request (PR)

Info

If you don't know what a pull request is, read this article.

  • Familiarize yourself with the project and our coding conventions, as you can see in the repository. We follow the ASP.NET Core Engineering guidelines.
  • Make sure the repository can be built and all tests pass. This is also checked by the CI workflows.
  • If you change CSS or JavaScript files, be sure to run the Gulp pipeline.
  • If you want to start a conversation with other community members or run the CI workflows but you're not done yet, open your PR as a draft. Then, change it to ready for review.
  • If your PR addresses an issue, be sure to link them. This helps everyone find their way around contributions, and merging your PR will automatically close the issue too.
  • If there's no issue for your PR, then please describe the context and rationale in the pull request description, and provide screenshots/screen recordings of the changes if they affect the UX.
  • Refactoring is great, but if you do so, please guard it with new tests.
  • If you add a significant new feature or a breaking change, then document this under the release notes of the upcoming pull request.
  • So we can help you better, please allow our core contributors to edit your PR.

Tip

When in doubt, just ask the community for guidance, we're happy to help!

Feedback

All code submissions will be reviewed and tested by the core team, and only those that meet our bar for both quality and design/roadmap appropriateness will be merged. Please be patient; we very much appreciate you contributing to Orchard Core!

Note

Following the below recommendations will ensure that your PR is merged as quickly as possible. Please work with us so it's a pleasant experience for everyone.

  • Please update your pull request according to feedback until it is approved by one of the core team members.
  • Apply suggested changes directly so the reviewer doesn't have to eyeball the changes. These resolve themselves after applying them, and that's fine.
  • Don't resolve other conversations so it's easier to track for the reviewer. Then, the reviewer will resolve them.
  • Feel free to mark conversations that you addressed to keep track of them with an emoji or otherwise, just don't resolve them.
  • Please keep conversations happening in line comments in those convos, otherwise, communication will be a mess. If you have trouble finding them, see this video.
  • When you're done addressing all feedback of a review, click "Re-request review" in the top-right corner for each reviewer when you're ready for another round of review, so they know that you're done.

Tip

Do you want to demo what you've done to others, to showcase your work and to gather feedback? Join one of our meetings.