In June 2011, the announcement of a new Python package for Astronomy on the astropy mailing list prompted a long thread that started as a criticism of the proliferation of independently-developed Astronomy Python packages but quickly became the start of a common effort to develop a single core package for Astronomy. Many hundreds of emails, and one workshop later, the project is well underway! Development is actively ongoing, and it is likely that we will see an initial public release in the summer, if not sooner!
The Astropy project, as it is now called, brings together almost 90 developers from around the world. The project is coordinated by Perry Greenfield (STScI), Erik Tollerud (UC Irvine), and myself (Tom Robitaille, MPIA). We have written a long-term vision and have a code repository on GitHub that already contains thousands of lines of code, including not only ‘framework’ code (testing, configuration, etc.), but also functional astronomy submodules such as astropy.wcs and astropy.io.vo (ported over by Mike Droettboom, STScI, from pywcs and vo). PyFITS is almost ready for inclusion as astropy.io.fits (thanks to Erik Bray, STScI), and a number of other major components are being finalized.
Contributing to Astropy: Affiliated Packages
One of the key requirements of the Astropy project is that code that gets included in the package should be of a high standard, and with documentation and tests already included. This means that development of many sub-packages is not done directly in the main Astropy repository, but is done separately, and code is merged in once these criteria are met. To this end, we have converged on a system we refer to as ‘affiliated packages’. Essentially, these are self-contained packages that implement specific functionality (for example photometry, or spectrum-related functionality). Affiliated packages may be merged into the Astropy package once ready, although these can remain independent if they are too large, too specialized, have license conflicts with the core package, or if the author simply wants to maintain autonomy in their development cycle. An installation/configuration tool is in the works which should simplify installing affiliated packages, simplifying the process of gathering up the python astronomy tools you need.
If you are interested in developing an affiliated package for Astropy, first check here whether anyone is already working on a similar package. If so, then please avoid duplicating efforts, and contact the maintainer of the affiliated package to offer your help. Otherwise, read the README.rst file in the affiliated package template, then add your package to the list on the wiki page.
Other ways to contribute to Astropy
If you are interested in improving existing components of Astropy, you do not need to create an affiliated package. In that case, you can just fork the Astropy repository, work on the code, then submit a pull request which we can then review, and iterate on, before merging. Instructions for doing this are included here.
Once we start moving towards a first public release, we will ask for volunteers to try out the package, and read over and improve the documentation and write tutorials, so even if you don’t want to code, there are still ways in which you can help!
Finally, if you are interested in staying up to date with the development of Astropy, you can join the astropy-dev mailing list; the astropy mailing list will remain a general purpose Astronomy Python mailing list.