Welcome, and thank you for your interest in contributing to Q#!
There are many ways in which you can contribute, beyond writing code. The goal of this document is to provide a high-level overview of how you can get involved. For more details on how to contribute to Q# or the rest of the Quantum Development Kit, please see the contribution guide.
Have a question? The q#
tags on Stack Overflow and Quantum Computing StackExchange are great places to ask questions about Q#, Quantum Development Kit and quantum computing in general.
You can learn more about our work on the Q# Development Blog and ask questions in the comments as well.
Wherever you ask it, your detailed question will serve as a resource to others searching for help.
Have you identified a reproducible problem in the Quantum Development Kit? Have a feature request? We want to hear about it! Here's how you can make reporting your issue as effective as possible.
The Quantum Development Kit is distributed across multiple repositories. Filing an issue against the correct repository will help address it swiftly. Check the list in the contribution guide to figure out which repo is a good place to file it. You can follow the template for reporting issues on this repository.
If you are interested in helping fix issues you or someone else encountered, please make sure that the corresponding issue has been filed on the repository. Check that nobody is currently working on it and that it has indeed been marked as bug. If that's the case, indicate on the issue that you are working on it, and link to the corresponding GitHub page where the fix is being developed. If someone is already working on a fix, ask if you can help or see what other things can be done. If an issue is tagged as feature, please follow the guidelines related to contributing features. Sometimes it may take a couple of days for us to tag issues appropriately. If an issue has not been tagged yet, please indicate that you would like to work on it and be patient - we are a small team and are doing our best to be quick with responding to your inquiry!
If you are interested in contributing a new feature, please first check if a similar functionality has already been requested. If so, consider contributing to the discussion around it rather than filing a separate issue. If no open or closed issue with such a request already exists, please file one following the feature request template. We will respond to feature requests and follow up with a discussion around its feasibility, how one might go about implementing it, and whether that is something we would consider adding to our repo. There are several reasons why we might not be able to eventually merge even a great feature for one reason or another. Take a look at our general contribution guide for reasons why this might be the case. Even if we are not able to incorporate something into the packages and extensions we distribute, we encourage you to pursue your passion project in your own fork, and share and discuss your thoughts and progress on the corresponding issue.
If you are looking for a place to get started with contributing code, search for example for the good-first-issue or help-wanted labels. Also, look for issues that have already been discussed in more detail, and check if you can help someone who has already started working on it.
Whether you want to help fixing bugs or add new features, please take a look at our general guide for Contributing Code.
If you are interested in contributing to conceptual documentation about Q#, please see the MicrosoftDocs/quantum-docs-pr repository. If you are interested in contributing API references, please see Contributing Code in the contribution guide.
And last but not least:
Your contributions to open source, large or small, make great projects like this possible. Thank you for taking the time to contribute.