Umbraco HQ will regularly mark newly created issues on the issue tracker with the community/up-for-grabs
tag. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. We encourage anyone to pick them up and help out.
If you do start working on something, make sure to leave a small comment on the issue saying something like: "I'm working on this". That way other people stumbling upon the issue know they don't need to pick it up, someone already has.
Great question! The short version goes like this:
-
Fork
Create a fork of
Umbraco-CMS
on GitHub -
Clone
When GitHub has created your fork, you can clone it in your favorite Git tool
-
Switch to the correct branch
Switch to the
contrib
branch -
Build
Build your fork of Umbraco locally as described in the build documentation: you can debug with Visual Studio Code or with Visual Studio.
-
Branch
Create a new branch now and name it after the issue you're fixing, we usually follow the format:
temp-12345
. This means it's a temporary branch for the particular issue you're working on, in this case issue number12345
. Don't commit tocontrib
, create a new branch first. -
Change
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will happily give feedback.
-
Commit and push
Done? Yay! 🎉
Remember to commit to your new
temp
branch, and don't commit tocontrib
. Then you can push the changes up to your fork on GitHub.
Once you've already got a fork and cloned your fork locally, you can skip steps 1 and 2 going forward. Just remember to keep your fork up to date before making further changes.
To sync your fork with this original one, you'll have to add the upstream url. You only have to do this once:
git remote add upstream https://github.com/umbraco/Umbraco-CMS.git
Then when you want to get the changes from the main repository:
git fetch upstream
git rebase upstream/contrib
In this command we're syncing with the contrib
branch, but you can of course choose another one if needed.
More information on how this works can be found on the thoughtbot blog.
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a .editorconfig
file so that Visual Studio knows what to do with whitespace, line endings, etc.
You can get in touch with [the core contributors team][core collabs] in multiple ways; we love open conversations and we are a friendly bunch. No question you have is stupid. Any question you have usually helps out multiple people with the same question. Ask away:
-
If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward.
-
If you want to ask questions on some code you've already written you can create a draft pull request, detailed in a GitHub blog post.
-
Unsure where to start? Did something not work as expected? Try leaving a note in the "Contributing to Umbraco" forum. The team monitors that one closely, so one of us will be on hand and ready to point you in the right direction.