From 9d4ecc1d4145d4cfb783e367fb4b1d2660dd584b Mon Sep 17 00:00:00 2001 From: Mike Masey Date: Tue, 2 Apr 2019 20:09:03 +0100 Subject: [PATCH 1/2] fix: update contributing.md with correct branch to rebase with (v8/dev) --- .github/CONTRIBUTING.md | 374 ++++++++++++++++++++-------------------- 1 file changed, 187 insertions(+), 187 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index bb962cb04b..e12641abaf 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,187 +1,187 @@ -# Contributing to Umbraco CMS - -👍🎉 First off, thanks for taking the time to contribute! 🎉👍 - -The following is a set of guidelines for contributing to Umbraco CMS. - -These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. - -Remember, we're a friendly bunch and are happy with whatever contribution you might provide. Below are guidelines for success that we've gathered over the years. If you choose to ignore them then we still love you 💖. - -**Code of conduct** - -This project and everyone participating in it is governed by the [our Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Sebastiaan Janssen - sj@umbraco.dk](mailto:sj@umbraco.dk). - -**Table of contents** - -[Contributing code changes](#contributing-code-changes) - * [Guidelines for contributions we welcome](#guidelines-for-contributions-we-welcome) - * [What can I start with?](#what-can-i-start-with) - * [How do I begin?](#how-do-i-begin) - * [Pull requests](#pull-requests) - -[Reviews](#reviews) - * [Styleguides](#styleguides) - * [The PR team](#the-pr-team) - * [Questions?](#questions) - -[Working with the code](#working-with-the-code) - * [Building Umbraco from source code](#building-umbraco-from-source-code) - * [Working with the source code](#working-with-the-source-code) - * [Making changes after the PR was opened](#making-changes-after-the-pr-was-opened) - * [Which branch should I target for my contributions?](#which-branch-should-i-target-for-my-contributions) - * [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository) - -## Contributing code changes - -This document gives you a quick overview on how to get started. - -### Guidelines for contributions we welcome - -Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valuable time. - -We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes. - -Remember, if an issue is in the `Up for grabs` list or you've asked for some feedback before you sent us a PR, your PR will not be closed as unwanted. - -### What can I start with? - -Unsure where to begin contributing to Umbraco? You can start by looking through [these `Up for grabs` issues](https://github.com/umbraco/Umbraco-CMS/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs+) - -### How do I begin? - -Great question! The short version goes like this: - - * **Fork** - create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS) - - ![Fork the repository](img/forkrepository.png) - - * **Clone** - when GitHub has created your fork, you can clone it in your favorite Git tool - - ![Clone the fork](img/clonefork.png) - - * **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](BUILD.md) - * **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](#questions) - * **Commit** - done? Yay! 🎉 **Important:** 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 `12345`. When you have a branch, commit your changes. Don't commit to `dev-v8`, create a new branch first. - * **Push** - great, now you can push the changes up to your fork on GitHub - * **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go. - - ![Create a pull request](img/createpullrequest.png) - -### Pull requests -The most successful pull requests usually look a like this: - - * Fill in the required template - * Include screenshots and animated GIFs in your pull request whenever possible. - * Unit tests, while optional are awesome, thank you! - * New code is commented with documentation from which [the reference documentation](https://our.umbraco.com/documentation/Reference/) is generated - -Again, these are guidelines, not strict requirements. - -## Reviews - -You've sent us your first contribution, congratulations! Now what? - -The [pull request team](#the-pr-team) can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request you to make some additional changes. - -We have [a process in place which you can read all about](REVIEW_PROCESS.md). The very abbreviated version is: - -- Your PR will get a reply within 48 hours -- An in-depth reply will be added within at most 2 weeks -- The PR will be either merged or rejected within at most 4 weeks -- Sometimes it is difficult to meet these timelines and we'll talk to you - -### Styleguides - -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. - -### The PR team - -The pull request team consists of a member of Umbraco HQ, [Sebastiaan](https://github.com/nul800sebastiaan), who gets assistance from the following community members - -- [Anders Bjerner](https://github.com/abjerner) -- [Dave Woestenborghs](https://github.com/dawoe) -- [Emma Burstow](https://github.com/emmaburstow) -- [Poornima Nayar](https://github.com/poornimanayar) - -These wonderful volunteers will provide you with a first reply to your PR, review and test out your changes and might ask more questions. After that they'll let Umbraco HQ know if everything seems okay. - -### Questions? - -You can get in touch with [the PR team](#the-pr-team) in multiple ways, we love open conversations and we are a friendly bunch. No question you have is stupid. Any questions 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 -- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"](https://our.umbraco.com/forum/contributing-to-umbraco-cms/) forum, the team monitors that one closely - -## Working with the code - -### Building Umbraco from source code - -In order to build the Umbraco source code locally, first make sure you have the following installed. - - * Visual Studio 2017 v15.9.7+ - * Node v10+ - * npm v6.4.1+ - -The easiest way to get started is to run `build.ps1` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details. - -Alternatively, you can open `src\umbraco.sln` in Visual Studio 2017 (version 15.9.7 or higher, [the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects). In Visual Studio, find the Task Runner Explorer (in the View menu under Other Windows) and run the build task under the gulpfile. - -![Gulp build in Visual Studio](img/gulpbuild.png) - -After this build completes, you should be able to hit `F5` in Visual Studio to build and run the project. A IISExpress webserver will start and the Umbraco installer will pop up in your browser, follow the directions there to get a working Umbraco install up and running. - -### Working with the source code - -Some parts of our source code are over 10 years old now. And when we say "old", we mean "mature" of course! - -There's two big areas that you should know about: - - 1. The Umbraco backoffice is a extensible AngularJS app and requires you to run a `gulp dev` command while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes. - You may need to run the following commands to set up gulp properly: - ``` - npm cache clean --force - npm install - npm run build - ``` - 2. "The rest" is a C# based codebase, which is mostly ASP.NET MVC based. You can make changes, build them in Visual Studio, and hit `F5` to see the result. - -To find the general areas of something you're looking to fix or improve, have a look at the following two parts of the API documentation. - - * [The AngularJS based backoffice files](https://our.umbraco.com/apidocs/ui/#/api) (to be found in `src\Umbraco.Web.UI.Client\src`) - * [The C# application](https://our.umbraco.com/apidocs/csharp/) - -### Which branch should I target for my contributions? - -We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `dev-v8`. Whatever the default is, that's where we'd like you to target your contributions. - -![Which branch should I target?](img/defaultbranch.png) - -### Making changes after the PR was opened - -If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco! - -### Keeping your Umbraco fork in sync with the main repository - -We recommend you sync with our repository before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier. - -Also, if you've submitted a pull request three weeks ago and want to work on something new, you'll want to get the latest code to build against of course. - -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/dev-v8 -``` - -In this command we're syncing with the `dev-v8` branch, but you can of course choose another one if needed. - -(More info on how this works: [http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated](http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated)) +# Contributing to Umbraco CMS + +👍🎉 First off, thanks for taking the time to contribute! 🎉👍 + +The following is a set of guidelines for contributing to Umbraco CMS. + +These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. + +Remember, we're a friendly bunch and are happy with whatever contribution you might provide. Below are guidelines for success that we've gathered over the years. If you choose to ignore them then we still love you 💖. + +**Code of conduct** + +This project and everyone participating in it is governed by the [our Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Sebastiaan Janssen - sj@umbraco.dk](mailto:sj@umbraco.dk). + +**Table of contents** + +[Contributing code changes](#contributing-code-changes) + * [Guidelines for contributions we welcome](#guidelines-for-contributions-we-welcome) + * [What can I start with?](#what-can-i-start-with) + * [How do I begin?](#how-do-i-begin) + * [Pull requests](#pull-requests) + +[Reviews](#reviews) + * [Styleguides](#styleguides) + * [The PR team](#the-pr-team) + * [Questions?](#questions) + +[Working with the code](#working-with-the-code) + * [Building Umbraco from source code](#building-umbraco-from-source-code) + * [Working with the source code](#working-with-the-source-code) + * [Making changes after the PR was opened](#making-changes-after-the-pr-was-opened) + * [Which branch should I target for my contributions?](#which-branch-should-i-target-for-my-contributions) + * [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository) + +## Contributing code changes + +This document gives you a quick overview on how to get started. + +### Guidelines for contributions we welcome + +Not all changes are wanted, so on occassion we might close a PR without merging it. We will give you feedback why we can't accept your changes and we'll be nice about it, thanking you for spending your valuable time. + +We have [documented what we consider small and large changes](CONTRIBUTION_GUIDELINES.md). Make sure to talk to us before making large changes. + +Remember, if an issue is in the `Up for grabs` list or you've asked for some feedback before you sent us a PR, your PR will not be closed as unwanted. + +### What can I start with? + +Unsure where to begin contributing to Umbraco? You can start by looking through [these `Up for grabs` issues](https://github.com/umbraco/Umbraco-CMS/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs+) + +### How do I begin? + +Great question! The short version goes like this: + + * **Fork** - create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS) + + ![Fork the repository](img/forkrepository.png) + + * **Clone** - when GitHub has created your fork, you can clone it in your favorite Git tool + + ![Clone the fork](img/clonefork.png) + + * **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](BUILD.md) + * **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](#questions) + * **Commit** - done? Yay! 🎉 **Important:** 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 `12345`. When you have a branch, commit your changes. Don't commit to `dev-v8`, create a new branch first. + * **Push** - great, now you can push the changes up to your fork on GitHub + * **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go. + + ![Create a pull request](img/createpullrequest.png) + +### Pull requests +The most successful pull requests usually look a like this: + + * Fill in the required template + * Include screenshots and animated GIFs in your pull request whenever possible. + * Unit tests, while optional are awesome, thank you! + * New code is commented with documentation from which [the reference documentation](https://our.umbraco.com/documentation/Reference/) is generated + +Again, these are guidelines, not strict requirements. + +## Reviews + +You've sent us your first contribution, congratulations! Now what? + +The [pull request team](#the-pr-team) can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request you to make some additional changes. + +We have [a process in place which you can read all about](REVIEW_PROCESS.md). The very abbreviated version is: + +- Your PR will get a reply within 48 hours +- An in-depth reply will be added within at most 2 weeks +- The PR will be either merged or rejected within at most 4 weeks +- Sometimes it is difficult to meet these timelines and we'll talk to you + +### Styleguides + +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. + +### The PR team + +The pull request team consists of a member of Umbraco HQ, [Sebastiaan](https://github.com/nul800sebastiaan), who gets assistance from the following community members + +- [Anders Bjerner](https://github.com/abjerner) +- [Dave Woestenborghs](https://github.com/dawoe) +- [Emma Burstow](https://github.com/emmaburstow) +- [Poornima Nayar](https://github.com/poornimanayar) + +These wonderful volunteers will provide you with a first reply to your PR, review and test out your changes and might ask more questions. After that they'll let Umbraco HQ know if everything seems okay. + +### Questions? + +You can get in touch with [the PR team](#the-pr-team) in multiple ways, we love open conversations and we are a friendly bunch. No question you have is stupid. Any questions 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 +- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"](https://our.umbraco.com/forum/contributing-to-umbraco-cms/) forum, the team monitors that one closely + +## Working with the code + +### Building Umbraco from source code + +In order to build the Umbraco source code locally, first make sure you have the following installed. + + * Visual Studio 2017 v15.9.7+ + * Node v10+ + * npm v6.4.1+ + +The easiest way to get started is to run `build.ps1` which will build both the backoffice (also known as "Belle") and the Umbraco core. You can then easily start debugging from Visual Studio, or if you need to debug Belle you can run `gulp dev` in `src\Umbraco.Web.UI.Client`. See [this page](BUILD.md) for more details. + +Alternatively, you can open `src\umbraco.sln` in Visual Studio 2017 (version 15.9.7 or higher, [the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects). In Visual Studio, find the Task Runner Explorer (in the View menu under Other Windows) and run the build task under the gulpfile. + +![Gulp build in Visual Studio](img/gulpbuild.png) + +After this build completes, you should be able to hit `F5` in Visual Studio to build and run the project. A IISExpress webserver will start and the Umbraco installer will pop up in your browser, follow the directions there to get a working Umbraco install up and running. + +### Working with the source code + +Some parts of our source code are over 10 years old now. And when we say "old", we mean "mature" of course! + +There's two big areas that you should know about: + + 1. The Umbraco backoffice is a extensible AngularJS app and requires you to run a `gulp dev` command while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes. + You may need to run the following commands to set up gulp properly: + ``` + npm cache clean --force + npm install + npm run build + ``` + 2. "The rest" is a C# based codebase, which is mostly ASP.NET MVC based. You can make changes, build them in Visual Studio, and hit `F5` to see the result. + +To find the general areas of something you're looking to fix or improve, have a look at the following two parts of the API documentation. + + * [The AngularJS based backoffice files](https://our.umbraco.com/apidocs/ui/#/api) (to be found in `src\Umbraco.Web.UI.Client\src`) + * [The C# application](https://our.umbraco.com/apidocs/csharp/) + +### Which branch should I target for my contributions? + +We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `dev-v8`. Whatever the default is, that's where we'd like you to target your contributions. + +![Which branch should I target?](img/defaultbranch.png) + +### Making changes after the PR was opened + +If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco! + +### Keeping your Umbraco fork in sync with the main repository + +We recommend you sync with our repository before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier. + +Also, if you've submitted a pull request three weeks ago and want to work on something new, you'll want to get the latest code to build against of course. + +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/v8/dev +``` + +In this command we're syncing with the `v8/dev` branch, but you can of course choose another one if needed. + +(More info on how this works: [http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated](http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated)) From 6d6121faa6cf289cf777cc54d22cddd901f240c4 Mon Sep 17 00:00:00 2001 From: Mike Masey Date: Tue, 2 Apr 2019 20:47:47 +0100 Subject: [PATCH 2/2] feat: add updated defaultbranch image and update missed dev-v8 references to v8/dev --- .github/CONTRIBUTING.md | 4 +- .github/README.md | 80 +++++++++++++++++----------------- .github/img/defaultbranch.png | Bin 15454 -> 17217 bytes 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e12641abaf..84115b946a 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -62,7 +62,7 @@ Great question! The short version goes like this: * **Build** - build your fork of Umbraco locally as described in [building Umbraco from source code](BUILD.md) * **Change** - make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](#questions) - * **Commit** - done? Yay! 🎉 **Important:** 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 `12345`. When you have a branch, commit your changes. Don't commit to `dev-v8`, create a new branch first. + * **Commit** - done? Yay! 🎉 **Important:** 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 `12345`. When you have a branch, commit your changes. Don't commit to `v8/dev`, create a new branch first. * **Push** - great, now you can push the changes up to your fork on GitHub * **Create pull request** - exciting! You're ready to show us your changes (or not quite ready, you just need some feedback to progress). GitHub has picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go. @@ -155,7 +155,7 @@ To find the general areas of something you're looking to fix or improve, have a ### Which branch should I target for my contributions? -We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `dev-v8`. Whatever the default is, that's where we'd like you to target your contributions. +We like to use [Gitflow as much as possible](https://jeffkreeftmeijer.com/git-flow/), don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `v8/dev`. Whatever the default is, that's where we'd like you to target your contributions. ![Which branch should I target?](img/defaultbranch.png) diff --git a/.github/README.md b/.github/README.md index 6d46466681..bdf9ef9f67 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,40 +1,40 @@ -# [Umbraco CMS](https://umbraco.com) · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE.md) [![Build status](https://umbraco.visualstudio.com/Umbraco%20Cms/_apis/build/status/Cms%208%20Continuous?branchName=dev-v8)](https://umbraco.visualstudio.com/Umbraco%20Cms/_build?definitionId=75) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) [![pullreminders](https://pullreminders.com/badge.svg)](https://pullreminders.com?ref=badge) - -Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social. - -Learn more at [umbraco.com](https://umbraco.com) - -

- Umbraco Logo -

- -See the official [Umbraco website](https://umbraco.com) for an introduction, core mission and values of the product and team behind it. - -- [Getting Started](#getting-started) -- [Documentation](#documentation) -- [Community](#join-the-umbraco-community) -- [Contributing](#contributing) - -Please also see our [Code of Conduct](CODE_OF_CONDUCT.md). - -## Getting Started - -[Umbraco Cloud](https://umbraco.com/cloud) is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed. - -If you want to DIY, you can [download Umbraco]((https://our.umbraco.com/download)) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you. - -## Documentation - -The documentation for Umbraco CMS can be found [on Our Umbraco](https://our.umbraco.com/documentation/). The source for the Umbraco docs is [open source as well](https://github.com/umbraco/UmbracoDocs) and we're happy to look at your documentation contributions. - -## Join the Umbraco community - -Our friendly community is available 24/7 at the community hub we call ["Our Umbraco"](https://our.umbraco.com/). Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources. - -Besides "Our", we all support each other also via Twitter: [Umbraco HQ](https://twitter.com/umbraco), [Release Updates](https://twitter.com/umbracoproject), [#umbraco](https://twitter.com/hashtag/umbraco) - - -## Contributing - -Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our [guide to contributing](CONTRIBUTING.md). - +# [Umbraco CMS](https://umbraco.com) · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE.md) [![Build status](https://umbraco.visualstudio.com/Umbraco%20Cms/_apis/build/status/Cms%208%20Continuous?branchName=v8/dev)](https://umbraco.visualstudio.com/Umbraco%20Cms/_build?definitionId=75) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) [![pullreminders](https://pullreminders.com/badge.svg)](https://pullreminders.com?ref=badge) + +Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social. + +Learn more at [umbraco.com](https://umbraco.com) + +

+ Umbraco Logo +

+ +See the official [Umbraco website](https://umbraco.com) for an introduction, core mission and values of the product and team behind it. + +- [Getting Started](#getting-started) +- [Documentation](#documentation) +- [Community](#join-the-umbraco-community) +- [Contributing](#contributing) + +Please also see our [Code of Conduct](CODE_OF_CONDUCT.md). + +## Getting Started + +[Umbraco Cloud](https://umbraco.com/cloud) is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed. + +If you want to DIY, you can [download Umbraco]((https://our.umbraco.com/download)) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you. + +## Documentation + +The documentation for Umbraco CMS can be found [on Our Umbraco](https://our.umbraco.com/documentation/). The source for the Umbraco docs is [open source as well](https://github.com/umbraco/UmbracoDocs) and we're happy to look at your documentation contributions. + +## Join the Umbraco community + +Our friendly community is available 24/7 at the community hub we call ["Our Umbraco"](https://our.umbraco.com/). Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources. + +Besides "Our", we all support each other also via Twitter: [Umbraco HQ](https://twitter.com/umbraco), [Release Updates](https://twitter.com/umbracoproject), [#umbraco](https://twitter.com/hashtag/umbraco) + + +## Contributing + +Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our [guide to contributing](CONTRIBUTING.md). + diff --git a/.github/img/defaultbranch.png b/.github/img/defaultbranch.png index 09919441b6ed9d372324fb32bafc1d47c60a9ccf..f3a5b9efbcbe911f254dd4b30cee1cdfb2fa436f 100644 GIT binary patch literal 17217 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