|
| 1 | +.. _astropy-org-history: |
| 2 | + |
| 3 | +A brief history of the Astropy Project |
| 4 | +====================================== |
| 5 | + |
| 6 | +Some of the earliest use of Python in astronomy was at the Space |
| 7 | +Telescope Science Institute (STScI) with their release of PyRAF |
| 8 | +around 2000. That release helped raise awareness of Python as a |
| 9 | +scripting language, leading to its use at more institutions. STScI |
| 10 | +was also active in the development of Python tools for science, |
| 11 | +including a pre-cursor to numpy and early versions of matplotlib. |
| 12 | +By the early 2010s there were multiple independent efforts by |
| 13 | +institutions and individuals to use Python for data analysis. |
| 14 | + |
| 15 | +The initial trigger for Astropy was a `conversation in 2011 on the |
| 16 | +astropy mailing list (which pre-dated The Astropy Project by over |
| 17 | +a |
| 18 | +decade) <https://mail.python.org/pipermail/astropy/2011-June/001075.html>`__ |
| 19 | +on the topic of how many “general astronomy” packages were being |
| 20 | +written in Python. This discussion thread led to the creation of a |
| 21 | +`short-lived |
| 22 | +wiki <https://web.archive.org/web/20140811231510/http://astropy.wikispaces.com/>`__ |
| 23 | +where over 100 participants voted in favor of a shared package to |
| 24 | +combine the efforts of these different developers into a single |
| 25 | +space. This demonstrated broad interest in such an effort. With |
| 26 | +that motivation and charge in place, this same wiki was used to |
| 27 | +organize a planning meeting for this effort. |
| 28 | + |
| 29 | +That planning meeting, in Fall 2011, was the formal beginning of |
| 30 | +the Astropy Project and was held at the `Harvard Center for |
| 31 | +Astrophysics <https://github.com/astropy/astropy/wiki/CfAMeeting2011%20“CfA%20Astropy%20meeting”>`__. |
| 32 | +The `list of |
| 33 | +attendees <https://github.com/astropy/astropy/wiki/CfAMeeting2011#participants%20“CfA%20meeting%20participants”>`__ |
| 34 | +at that meeting underscores what has been essential to the launch, |
| 35 | +growth, and continued development of Astropy: it was a mix of |
| 36 | +graduate students, postdocs, scientists, and professional software |
| 37 | +developers. The attendees with permanent positions were willing to |
| 38 | +contribute both code and their time to the project; Space |
| 39 | +Telescope Science Institute (STScI) additionally contributed |
| 40 | +substantial staff time to the project. The early-career attendees |
| 41 | +had either already devoted substantial time to code development, |
| 42 | +would do so over the ensuing years, or both. |
| 43 | + |
| 44 | +The foundation of Astropy’s subsequent success was the combination |
| 45 | +of institutional resources, a deliberate effort to include and |
| 46 | +foster the growth of a broad community of contributors, the rapid |
| 47 | +growth of GitHub and the surrounding ecosystem of open source |
| 48 | +development tools, and a willingness of early-career professionals |
| 49 | +to contribute code to an open community project. The initial |
| 50 | +release for users of the core astropy package, version 0.2 on |
| 51 | +February 19, 2013, was less than 18 months after the CfA meeting |
| 52 | +and already contained many of the core subpackages that are part |
| 53 | +of the package today. That was possible only because some of the |
| 54 | +code already existed in a form that could be adapted to Astropy. |
| 55 | +Major pieces had been written by staff at STScI that were |
| 56 | +contributed by the Institute to the project. There were also large |
| 57 | +contributions from early participants who were graduate students |
| 58 | +and postdocs. |
| 59 | + |
| 60 | +By the time of the first stable release in 2013, the number of |
| 61 | +contributors to the code base was over 20, including several |
| 62 | +people who were not involved in the initial meeting. Though most |
| 63 | +of the lines of code at that point had been written by a handful |
| 64 | +of people, the effort they put into welcoming and supporting new |
| 65 | +contributors was just as important and is not easily captured in a |
| 66 | +single number. The project made an effort early on to provide |
| 67 | +prompt, constructive, and welcoming feedback to new contributors. |
| 68 | +The promptness was a key factor in encouraging early contributors |
| 69 | +and was possible in part because STScI devoted substantial staff |
| 70 | +time to the project with the explicit intent of growing the |
| 71 | +community of contributors. |
| 72 | + |
| 73 | +One of the Project’s first efforts to formally recruit early |
| 74 | +career scientists was participation in `Google’s Summer of Code |
| 75 | +(GSoC) |
| 76 | +program <https://github.com/astropy/astropy/wiki#google-summer-of-code>`__. |
| 77 | +That program provides participants with a stipend in exchange for |
| 78 | +doing extensive work on open source projects during the northern |
| 79 | +hemisphere summer. It was the first of several efforts to grow the |
| 80 | +community of contributors. These efforts yielded a handful of very |
| 81 | +active long-term contributors to the project whose cumulative work |
| 82 | +goes well beyond the initial code contributions made by |
| 83 | +participants. |
| 84 | + |
| 85 | +Another critical element in the growth of the Astropy Project was |
| 86 | +the Python in Astronomy conference series. The first Python in |
| 87 | +Astronomy conference was held in 2015. The hope was that the |
| 88 | +conference would encourage the development of Python packages in |
| 89 | +astronomy outside of the astropy core, foster the adoption of |
| 90 | +Astropy in the broader community, and serve as an introduction to |
| 91 | +contributing to open source software. Though it was not an Astropy |
| 92 | +conference, many of the astropy core developers were attending. |
| 93 | +For example, the initial Code of Conduct for the Astropy Project |
| 94 | +was written at the conference and the “Python in Astronomy” |
| 95 | +Facebook group was started, among `other |
| 96 | +activities <http://openastronomy.org/pyastro/2015/>`__. |
| 97 | + |
| 98 | +The intent from the first coordination meeting in 2011 was to put |
| 99 | +some functionality into more specialized packages, called |
| 100 | +affiliated packages, that were developed independent of the core |
| 101 | +project but followed the same coding, testing and documentation |
| 102 | +conventions and often used the same continuous integration (CI) |
| 103 | +infrastructure. The first affiliated packages were created in |
| 104 | +2011. That model has been quite successful: as of early 2022 there |
| 105 | +are almost 50 affiliated packages (pre-APE 22). The use of common |
| 106 | +conventions across the packages has eased the burden of |
| 107 | +maintaining those packages as the project ecosystem grows. |
| 108 | + |
| 109 | +Deliberate community development has been essential to the success |
| 110 | +of the Project and has included several aspects. Astropy was an |
| 111 | +early and enthusiastic adopter of an explicit Code of Conduct. |
| 112 | +This served to formalize the welcoming atmosphere established |
| 113 | +early in the project. Community presence has included setting up |
| 114 | +social media spaces for Python in Astronomy, workshops at AAS |
| 115 | +meetings, work on learning materials for Astropy and development |
| 116 | +of the project’s web presence. The Facebook group “Python in |
| 117 | +Astronomy’’ has been wildly successful with over 6400 members and |
| 118 | +nearly daily postings. This success is in part because of careful |
| 119 | +moderation by members of the project early in the list's history |
| 120 | +to keep conversations on topic, though community moderators have |
| 121 | +taken on more of those responsibilities as time has gone on. |
| 122 | +Workshops at AAS meetings have helped several hundred astronomers |
| 123 | +adopt Python and astropy as part of their workflow. |
| 124 | + |
| 125 | +The day-to-day effort of managing the Astropy codebase is |
| 126 | +unglamorous but critical. Tasks include promptly labeling and |
| 127 | +triaging new issues, responding to new pull requests, and watching |
| 128 | +for and fixing changes that break part of the infrastructure. |
| 129 | +There have been times when that infrastructure has shifted very |
| 130 | +rapidly, such as when `Travis-CI stopped hosting open source |
| 131 | +packages <https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing%20“Travis-CI%20open%20sources%20limits”>`__. |
| 132 | +Transitioning the entire ecosystem to a new infrastructure |
| 133 | +required substantial effort by a number of people, though it was |
| 134 | +facilitated primarily by a single individual. Indeed, much of this |
| 135 | +day-to-day work has been done by a handful of people, many of whom |
| 136 | +are in permanent positions at STScI and a few other institutions. |
| 137 | + |
| 138 | +The patterns at the beginning of the project have persisted |
| 139 | +throughout: it is the combined effort of individuals and |
| 140 | +institutions that includes scientists and software developers. It |
| 141 | +includes early-career individuals and those in permanent |
| 142 | +positions. |
| 143 | + |
| 144 | +There are a few important changes to the project since its |
| 145 | +inception. One is external funding from the Moore Foundation in |
| 146 | +2019 and from NASA in 2022, which provides monetary support for |
| 147 | +contributors at all career stages in addition to funding for |
| 148 | +Project needs. Another is the establishment of a formal governance |
| 149 | +structure (`APE 0 adopted in |
| 150 | +2021 <https://github.com/astropy/astropy-APEs/blob/main/APE0.rst>`__) |
| 151 | +that is open and responsive to community needs. |
| 152 | + |
| 153 | +Another development that was perhaps not envisioned at the start |
| 154 | +of the project is some contributors choosing to make Astropy an |
| 155 | +essential part of their career. Their involvement since the |
| 156 | +beginning of the project has provided continuity to the project |
| 157 | +and represents taking a risk that potential future employers may |
| 158 | +not scientifically value this software work, regardless of its |
| 159 | +impact on astronomy as a whole. |
| 160 | + |
| 161 | +As of summer 2022, the success of the Project hinged on a number |
| 162 | +of factors, including the willingness of institutions and |
| 163 | +individuals to contribute extensive prior work to a community |
| 164 | +project, a deliberate effort to foster new contributors, and an |
| 165 | +effort to create a welcoming community. It is difficult to see how |
| 166 | +the project could have come so far absent any of these factors or |
| 167 | +absent any one of the groups of contributors. Institutional |
| 168 | +support and individual contributions has been inextricably linked. |
0 commit comments