Contribute to Astropy

The Astropy project is made both by and for its users, so we accept contributions of many kinds. We always welcome contributors who will abide by the Astropy Community Code of Conduct.

Feedback | Report an issue | Code/docs | Project Role | Affiliated Package | Financial | Academic Contributions

Contribute feedback

There are several ways in which you can give feedback.

Reporting Issues

If you have found a bug in Astropy please report it. The preferred way is to create a new issue on the Astropy GitHub issue page; that requires creating a free account on GitHub if you do not have one.

If you prefer not to create a GitHub account, please report the issue to either the astropy mailing list, the astropy-dev mailing list or sending a private email to the astropy core developers at

Please include an example that demonstrates the issue that will allow the developers to reproduce and fix the problem. You may be asked to also provide information about your operating system and a full Python stack trace; the Astropy developers will walk you through obtaining a stack trace if it is necessary.

Contribute code or documentation

If you are interested in contributing fixes, code or documentation to Astropy (whether the core package or affiliated packages), you should join the astropy-dev mailing list/forum, and start looking at any related issues. In particular, we have introduced a labeling system used across most Astropy-related packages which will allow you to find good starting issues. A good label to start with is Package-novice which means you don't need much prior experience of the package. You can use the following links to find all the issues labelled this way and also labeled by how much work they involve:

You may also want to familiarize yourself with the developer documentation, particularly the coding and documentation guidelines.

Once you have a change to propose, if it's a simple fix to just a single file, you can even just browse to the appropriate file and use the "edit" button on github. If it's a more complex change, we suggest you follow the developer install instructions, and use that with Astropy's github page to issue a pull request with your changes. If you aren't familiar with github, we suggest you looking over our workflow documentation. Once your code is accepted, you are officially an Astropy contributor and eligible to be included on the author list of future publications.

If you want to propose a larger change to Astropy, there's a procedure for that: Astropy Proposals for Enhancement (APEs) (modeled after Python's PEPs). The sort of changes that APEs are intended for include plans for new sub-packages, wide-ranging code re-organizations, a new procedure needing review by a lot of the Astropy community, or an informational document on some decision for Astropy that you want remembered. For more background on APEs, check out APE #1 and the APE repository's README. There is also a wiki page on Astropy's github repository that has an overview of the existing APEs.

Taking on a formal project role

If you are interested in a higher level of contribution to the project, you can consider taking on one of the formal project roles as listed in the Astropy Team page.

In order to be nominated for a named Astropy role, it is typical that a person will have been actively involved in the project for a considerable amount of time (at least a year and often longer) and have made substantial contributions. They will have shown a sustained commitment to Astropy by participating actively already in activities related to the role. This could involve submitting pull requests and participating in reviews, or discussions in other channels such as mailing lists or Slack, or other contributions as defined by a particular role. Finally, they need to express a desire to maintain this involvement going forward and accept the responsibility of having a role. For example, being a core sub-package maintainer involves interacting with users and responding to bug reports in a timely manner. If you are interested in taking on such a role, you can volunteer either on astropy-dev, by talking to a holder of the role you are interested in, or a coordination commitee member.

Develop an affiliated package

Whether you have an idea for a new Astronomy package, or already have a package that you want to integrate with the Astropy project, you can develop an affiliated package! You'll want to join the astropy-dev list so you can notify other developers of your intent to develop an affiliated package, and the astropy-affiliated-maintainers mailing list to be kept informed of updates to the package template, as well as to have any dicussions related to setting up affiliated packages. Then you can check out the affiliated package guidelines and the template for new affiliated packages to get started. We can even create a repository for your affiliated package in the astropy organization on GitHub, if you ask on the mailing list!

For academics: How to justify your contribution

While in some more technical areas, contributing code is recognized as a goal in and of itself, some academic fields have not yet developed a clear understanding of the role of code development relative to other more traditional contributions like publication. This sections aims to provide suggestions to academics for how you might justify contributions to the Astropy project if you are in a field or institution that needs convincing of the value of such contributions.

Contributing to the Astropy Project as a volunteer directly benefits the astronomical research community in tangible ways. Nevertheless, people employed in academic departments may be asked to justify their time and efforts in terms of direct benefit to their own department or organization. In this case it is worth highlighting the well-established role of community service in academia, including:

These volunteer duties typically bring no direct benefit to the home department of a researcher, yet they are widely accepted as necessary to the functioning of global research astronomy. We should now add the following to the above list of community service duties: