Let's work together.

If you would like to become involved in the development of Microsoft Azure SDKs and Tools there are many different ways in which you can contribute. We strongly value your feedback, questions, bug reports, and feature requests.

Ways to contribute

Consider these options

  • Use the products
  • Submit a GitHub issue to the appropriate repo (for a guide on submitting good bug reports, read Painless Bug Tracking).
  • Verify fixes for bugs.
  • Submit a code fix for a bug.
  • Submit a new feature request (as a GitHub issue).
  • Help answer questions on forums such as StackOverflow.
  • Submit a unit test.
  • Submit another unit test.
  • Code review pending pull requests and bug fixes.
  • Tell others about these projects.
Get the source code

Our source is developed & published on GitHub.com (learn more). If you are new to Git, check out the Pro Git Book online or at your bookseller of choice.

We have based our development process for moving code around on the now-classic Successful Git Branching Model as well as using GitHub pull requests and forks between the central organization repository and developer accounts.

From any of the Microsoft Azure code repositories on GitHub, you can "Fork" the code to your own account.

To get the source on your local development machine, simply clone the repo using Git:
git clone https://github.com/USERNAME/PROJECT.git
git checkout dev

Each repository has a README that should be helpful to learn more about the specifics of the language, project and its development environment.

Q&A forums

The easiest way to ask questions is to use the Microsoft Azure SDK and Tools forums on StackOverflow and MSDN. If your target language is .NET the most appropriate forums for discussion are on MSDN. For all other languages please use StackOverflow.

Forum Provider Tags Notes
StackOverflow

StackOverflow

azure A friendly, open and fun community of developers.
Microsoft Forums for Windows Azure

Microsoft forums

A good place for support and feedback on Microsoft Azure features and services like Web Sites, Mobile Services, etc.
Reporting bugs & issues

Issues and feature requests are submitted through the project's Issues section on GitHub. Please use the following guidelines when you submit issues and feature requests:

  • Make sure the issue is not already reported by searching through the list of issues
  • Provide detailed description of the issue including the following information:
    • Which feature the issue appears in
    • Under what circumstances the issue appears
    • What is desired behavior
    • What is breaking
    • What is the impact (things like loss or corruption of data, compromizing security, disruption of service etc.)
    • Any code that will be helpful to reproduce the issue

Issues are regularly reviewed and updated with additional information by the core team. Sometimes the core team may have questions about particular issue that might need clarifications so, please be ready to provide additional information.

Feature requests

Feature requests and Design Change Requests (DCRs) are an important part of the lifecycle of any software project. Please log these as Issues in the appropriate GitHub repository.

Although the team will consider any opened issues, please keep in mind that there is an extremely high bar when it comes to expanding the scope and functionality of a core product such as an SDK for Microsoft Azure.

When opening any feature requests, consider including as much information as possible, including:

  • Detailed scenarios enabled by the feature or DCR.
  • Information about your use case or additional value your business or site will see from the feature.
  • Any design tips or estimation ideas you may have considered already.
  • Make note of whether you are opening an issue you would like the Microsoft team or another community member to work on or if you are looking to design & develop the feature yourself.
  • Any potential caveats or concerns you may have already thought about.
  • A miniature test plan or list of test scenarios is always helpful.
Note: A Contribution Legal Agreement (CLA) is required before the team can consider your contributions & pull requests. Please read this entire page carefully.
Contributing code

From an engineering standpoint, please make sure that you can build and test the code. Familiarize yourself with our project guidelines and coding conventions.

The SDK team also recommends that you read these great posts about open source:

If you have ever considered contributing to the ASP.NET Web Stack, we have modeled much of this process on that project.

Before you start working on a feature or substantial code contribution please discuss it with the team and ensure it is an appropriate addition to the core product.

Note that code submissions will be rigorously reviewed and tested by the Microsoft Azure SDK Team (or the appropriate Azure service owners), and only contributions that meet an extremely high bar for both quality and design/roadmap appropriateness will be merged into the source.

In some situations Microsoft employees may engage with you to review design decisions and mitigate issues as part of the contribution process. Understand that in some situations, developers inside Microsoft may decide to decline your pull request and instead log the issue for a future product milestone or bug fix. The team will provide information in the pull in these situations and still thank you for your contribution.

For bug fixes, simply start a conversation in the related GitHub issue to notify the team and chat about the design of the fix if needed.

There are many opportunities to build value-add services and frameworks that do not need to direct alterations to the SDKs and products: NuGet packages for .NET or NPM modules for Node.js devs can easily take a dependency on the core SDK components, for example.

  • You have properly documented any new functionality using the documentation standards for the language (this includes clasees, methods and functions, properties etc.)
  • For any change you make proper inline documentation is included
  • For any new functionality you have written complete unit tests
  • You have ran all unit tests and they pass

In order to speed up the process of accepting your contributions, you should try to make your checkins as small as possible, avoid any unnecessary deltas and the need to rebase.

Contribution License Agreement (CLA)

In order to become a contributor to the Microsoft Azure open source projects on GitHub you must follow some legal requirements.

Until you meet the legal requirements your pull requests / source contributions will not be considered or reviewed.

As a community member you must sign the Contribution License Agreement (CLA) before you can contribute to Microsoft open source projects.

You only need complete and submit the documentation once. Please carefully review the document; you may also need to have your employer sign the document.

Signing the Contribution License Agreement (CLA) does not grant you rights to commit to the main repository but it does mean that the Microsoft Azure team will be able to review and consider your contributions and you will get credit if we do.

The Contribution License Agreement (CLA) is available at: https://cla.azure.com/.

Azure Contribution License Agreement (CLA)

If you are currently employed as an active Full-Time Employee (FTE) at Microsoft you may be able to contribute through your job to the SDK without signing a CLA.

You will need to clearly identify yourself as a Microsoft employee in your GitHub profile. You should also include your alias in any pull requests.

As a courtesy you should have a conversation about contributing to the Azure open source projects with your manager, and remember to follow your business group's guidelines and policies.

If your Microsoft team is looking to partner with the Azure SDK team to ship new bits, create new open source projects & meet your shipping criteria, please start engaging the Microsoft Azure SDK triad early.

Our SharePoint site contains plenty of information on the onboarding process, timelines and contacts.

Open Azure SDK SharePoint
Requires corporate credentials

Active contributors might be asked to join the core team or help with feature development. The ability to merge pull requests typically remains with the SDK team to ensure that contributions to master are thoroughly reviewed.

Please configure your Git client with a name and email address to use for your commits. This will also help the team validate your CLA status:

git config user.name Your Name 
git config user.email YourAlias@YourEmailDomain

Step-by-step guide
Checkout the latest code

In order to obtain the source code you need to become familiar with Git (see http://progit.org/book/) and Github (see http://help.github.com/) and you need to have Git installed on your local machine. You can obtain the source code from Github and start a contributor environment by following the these steps on your local machine:

  • Go to https://github.com/Azure/[PROJECT]
  • Select fork and choose your own Github account as target
  • Clone the repository on your local machine with the following Git command:
    git clone git@github.com:[USERNAME]/[PROJECT]
  • When you clone the repository you should see, at least, 2 branches: dev and master. dev is the branch where the team does all the day to day development while master is the branch that is always up to date with the latest release. This means, before starting any work, you should switch to the dev branch. You can do so with the following command:
    git checkout dev
Create bug fixes and features

You can then start to make modifications to the code in your local Git repository. This can be done in your local dev branch or, if you prefer, in a branch out of dev. In the simplest scenario, working directly on dev, you can commit your work with following commands:

  • Add and commit your local changes
    git commit -a
  • Push your changes from your local repository to your github fork
    git push

Once your code is in your github fork, you can then submit a pull request for the team's review. You can do so with the following commands:

  • In GitHub click on the Pull Request button pull request
  • In the pull request select your fork as source and Azure/[PROJECT] as destination for the request
  • Write detailed message describing the changes in the pull request
  • Submit the pull request for consideration by the Core Team

If there are conflicts between your fork and the main project one, github will warn you that the pull request cannot be merged. If that's the case, you can do the following:

  • Add remote to your local repository using the following Git commands
    git remote add upstream -f git@github.com:Azure/[PROJECT]
  • Update your local repository with the changes from the remote repository by using the following Git commands (make sure you're in the branch you're submitting the code from)
    git merge upstream/dev
  • Resolve any conflicts locally and finally do another push with the command
    git push

Please keep in mind that not all requests will be approved. Requests are reviewed by the Core Team on a regular basis and will be updated with the status at each review. If your request is accepted you will receive information about the next steps and when the request will be integrated in the main branch. If your request is rejected you will receive information about the reasons why it was rejected.

Code Reviews

The Microsoft Azure SDK team has an active Microsoft discussion group used for submitting code reviews and discussing design changes, best practices, and other important topics.

Part of the code review process involves using a code review tool, and for most open source projects, the team uses the built-in Pull Request functionality on GitHub for enabling annotations and comments on code before accepting the pull request/s.

Expect a good amount of feedback as part of any pull request: not only which branch to merge to and from, but also consistency guidelines, matching existing code, and making targeted, smart changes when fixing bugs.

Community code reviews

The SDK team is considering allowing for community code reviews as well. If you watch a repository of interest, you can make comments on any public pull request. The best time for providing feedback is during dev branch pulls into the primary Azure GitHub organization.

Contact the team

The best way to get in touch with the team regarding feature ideas, developer designs amd communicating about bug fixes is to use the Issues system built in to GitHub.

If you are looking for support or to provide feedback, there are a lot of places to do this.

Detailed support and contact information »

Thank you!

Huge thanks go to the contributors from the community who have been actively working with the Microsoft Azure SDK team.

You can find a list of contributors here.

Jobs

Microsoft is always hiring bright and talented students & professionals. Please consider submitting your resume and applying for open positions at //careers.microsoft.com.