Contributing to the Quantum Development Kit (QDK)
The Quantum Development Kit is more than a collection of tools for writing quantum programs. It's part of a broad community of people discovering quantum computing, performing research in quantum algorithms, developing new applications for quantum devices, and otherwise working to make the most out of the quantum programming. As a member of that community, the Quantum Development Kit aims to offer quantum developers across a wide range of backgrounds with the features they need. Your contributions to the Quantum Development Kit help in realizing that goal by improving the tools used by other quantum developers, how those tools are documented, and even by creating new features and functionality that helps make the entire quantum programming community a better place to discover and create. We're very thankful for your kind contributions, and for the opportunity to work with you to make our community the best that it can be.
In this guide, we provide some advice on how to make your contribution as useful as possible to the broader quantum programming community.
The very first thing about making a contribution is to always keep in mind the community that you are contributing to. By acting respectfully and professionally towards your peers in the quantum programming community and more broadly, you can help to make sure that your efforts build the best and most welcoming community possible.
As a part of that effort, all Quantum Development Kit projects have adopted the Microsoft Open Source Code of Conduct. For more information, please see the Code of Conduct FAQ or contact email@example.com with any additional questions or comments.
What kinds of contributions help the community?
There are lots of different ways to help the quantum programming community through your contributions. In this guide, we'll focus on three ways that are especially relevant to the Quantum Development Kit. All of these ways are critical to building a quantum community that empowers people. That said, this is definitely not an exhaustive list — we encourage you to explore other ways to help the community build on the promise of quantum programming!
- Reporting bugs. The first step in fixing bugs and other kinds of problems is to identify them. If you've found a bug in the Quantum Development Kit, letting us know helps us fix it and make a better set of tools for the quantum programming community.
- Improving documentation. Any documentation set can always be better, can cover more details, be made more accessible.
- Contributing code. Of course, one of the most direct ways to contribute is by adding new code to the Quantum Development Kit.
These different kinds of contributions are all immensely valuable, and are greatly appreciated. In the rest of the guide, we'll offer advice on how to make each kind of contribution.
Where do contributions go?
The Quantum Development Kit includes a number of different pieces that all work together to realize a platform for writing quantum programs. Each of these different pieces finds its home on a different repository, so the one of the earlier things to sort out is where each contribution best belongs.
- microsoft/Quantum: Samples and tools to help get started with the Quantum Development Kit.
- microsoft/QuantumLibraries: Standard and domain-specific libraries for the Quantum Development Kit.
- microsoft/QuantumKatas: Self-paced programming exercises for learning quantum computing and the Q# programming language.
- microsoft/qsharp-compiler: The Q# compiler, Visual Studio extension, and Visual Studio Code extension.
- microsoft/qsharp-runtime: Simulation framework, code generation, and simulation target machines for the Quantum Development Kit.
- microsoft/iqsharp: Jupyter kernel and Python host functionality for Q#, as well as Docker images for using IQ# in cloud environments.
- microsoft/qdk-python: Python packages
- microsoft/qsharp-language: This is where new Q# features are developed and specified, and where you can share ideas and suggestions about the future evolution of the Q# language and core libraries.
- MicrosoftDocs/quantum-docs: Source code for Azure Quantum documentation.
We unfortunately cannot accept code and documentation contributions on the microsoft/Quantum-NC repository at this time, but we still very much appreciate bug reports.
There are also a few other, more specialized repositories focusing on auxiliary functionality related to the Quantum Development Kit.
- msr-quarc/qsharp.sty: LaTeX formatting support for Q# syntax.
- microsoft/quantum-viz.js: A tool for rendering quantum circuits using pure HTML, used in Q# Jupyter Notebooks.
Thanks for being a part of the Quantum Development Kit community, we're excited for your contributions! If you'd like to learn more about contributing, please continue with one of the following guides.
Submit and view feedback for