Slide 1

Slide 1 text

Astropy and the Open Source Revolutiˑn in Astronomy Tom Robitaille (@astrofrog) MPIA | The Astropy Project

Slide 2

Slide 2 text

What does “Open Source” really mean?

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Open Closed

Slide 5

Slide 5 text

Open Binaries :’( Examples: Keynote, PowerPoint, etc. Closed

Slide 6

Slide 6 text

Open Source Code :| No license does not mean free/open source! Examples: Supermongo, any unlicensed code, etc. Binaries :’( Examples: Keynote, PowerPoint, etc. Closed

Slide 7

Slide 7 text

Open Source Code :| No license does not mean free/open source! Examples: Supermongo, any unlicensed code, etc. :) Includes license that gives right to study, change, redistribute Open Source/Free So!ware Examples: CASA, IRAF, DS9, etc. Binaries :’( Examples: Keynote, PowerPoint, etc. Closed

Slide 8

Slide 8 text

Open Source Code :| No license does not mean free/open source! Examples: Supermongo, any unlicensed code, etc. :) Includes license that gives right to study, change, redistribute Open Source/Free So!ware Examples: CASA, IRAF, DS9, etc. Binaries :’( Examples: Keynote, PowerPoint, etc. Open development Discussion is done in the open and anyone can join in! Examples: ENZO, yt, SunPy, Astropy, etc. :D Closed

Slide 9

Slide 9 text

Open Source Code :| No license does not mean free/open source! Examples: Supermongo, any unlicensed code, etc. :) Includes license that gives right to study, change, redistribute Open Source/Free So!ware Examples: CASA, IRAF, DS9, etc. Binaries :’( Examples: Keynote, PowerPoint, etc. Open development Discussion is done in the open and anyone can join in! Examples: ENZO, yt, SunPy, Astropy, etc. :D Closed This talk

Slide 10

Slide 10 text

What is the Astropy Project?

Slide 11

Slide 11 text

The Astropy Project is a community effort to develop a single core package for Astronomy in Python and foster interoperability between Python astronomy packages.

Slide 12

Slide 12 text

• Ryan Abernathey • Shailesh Ahuja • Tom Aldcro" • Anne Archibald • Cristian Ardelean • Matteo Bachetti • Kyle Barbary • Geert Barentsen • Pauline Barmby • Paul Barrett • Andreas Baumbach • Chris Beaumont • Daniel Bell • Kristin Berry • Francesco Biscani • Thompson Le Blanc • Christopher Bonnett • Joseph Jon Booker • Médéric Boquien • Azalee Bostroem • Matthew Bourque • Larry Bradley • Gustavo Bragança • Erik M. Bray • Eli Bressert • Hannes Breytenbach • Hugo Buddelmeijer • Doug Burke • Mihai Cara • Patti Carroll • Mabry Cervin • Pritish Chakraborty • Alex Conley • Jean Connelly • Simon Conseil • Ryan Cooke • Yannick Copin • Matthew Craig • Steven Crawford • Neil Crighton • Kelle Cruz • Daniel Datsev • Matt Davis • Christoph Deil • Nadia Dencheva • Jörg Dietrich • Axel Donath • Michael Droettboom • Zach Edwards • Jonathan Eisenhamer • Thomas Erben • Henry Ferguson • Jonathan Foster • Ryan Fox • Lehman Garrison • Simon Gibbons • Adam Ginsburg • Christoph Gohlke • Danny Goldstein • Perry Greenfield • Dylan Gregersen • Austen Groener • Frédéric Grollier • Karan Grover • Kevin Gullikson • Hans Moritz Günther • Alex Hagen • Paul Hirst • Moataz Hisham • Michael Hoenig • Emma Hogan • Derek Homeier • Chris Hanley • JC Hsu • Anthony Horton • Eric Jeschke • Joseph Jon Booker • Sarah Kendrew • Marten van Kerkwijk • Wolfgang Kerzendorf • Lennard Kiehl • Rashid Khan • Dominik Klaes • Kacper Kowalik • Roban Hultman Kramer • Arne de Laat • Antony Lee • Simon Liedtke • Pey Lian Lim • Joseph Long • Joe Lyman • Vinayak Mehta • Aaron Meisner • Serge Montagnac • José Sabater Montes • Brett Morris • Michael Mueller • Stuart Mumford • Demitri Muna • Prasanth Nair • Bogdan Nicula • Asra Nizami • Joe Philip Ninan • Bryce Nordgren • Miruna Oprescu • Carl Osterwisch • Luigi Paioro • Asish Panda • Madhura Parikh • Neil Parley • Sergio Pascual • Rohit Patil • David Perez-Suarez • Ray Plante • Orion Poplawski • Adrian Price-Whelan • J. Xavier Prochaska • David Pérez-Suárez • Tanuj Rastogi • Thomas Robitaille • Juan Luis Cano Rodríguez • Evert Rol • Alex Rudy • Joseph Ryan • Eloy Salinas • Gerrit Schellenberger • David Shiga • Albert Y. Shih • David Shupe • Jonathan Sick • Leo Singer • Brigitta Sipocz • Shivan Sornarajah • Shantanu Srivastava • Ole Streicher • Matej Stuchlik • Bernardo Sulzbach • James Taylor • Jeff Taylor • Kirill Tchernyshyov • Víctor Terrón • Scott Thomas • Erik Tollerud • James Turner • Jake VanderPlas • Miguel de Val-Borro • Jonathan Whitmore • Julien Woillez • Lisa Walter • Benjamin Alan Weaver • Jonathan Whitmore • Julien Woillez • Víctor Zabalza Project Coordinators: Perry Greenfield (STScI), Thomas Robitaille (MPIA), Erik Tollerud (Yale) Developers/Contributors for core package (as of 1st Nov 2015):

Slide 13

Slide 13 text

4 major public releases (first release February 2013) Latest stable version: v1.0.6 (released 22nd October 2015) Over 150 individual contributors so far! Almost 14,000 commits (as of 1st November 2015) Astropy Core Package

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Image reprojection Publication-quality image plotting Machine learning Photometry Interface to many web services/archives Gamma-ray data analysis CCD image reduction Interfaces to ds9 Spectroscopic analysis ‘Big’ spectral cube analysis (e.g. ALMA, etc.) Spectral cube slicing etc. Astropy-affiliated packages

Slide 16

Slide 16 text

How did the Astropy project start?

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

[AstroPy] PyAstronomy Stefan Czesla • [AstroPy] Proliferating py-astro-libs Marshall Perrin ◦ [AstroPy] Proliferating py-astro-libs Wolfgang Kerzendorf ■ [AstroPy] Proliferating py-astro-libs Stefan Czesla ■ [AstroPy] Proliferating py-astro-libs Erik Tollerud ■ [AstroPy] Proliferating py-astro-libs Erik Bray ◦ [AstroPy] Proliferating py-astro-libs Taro Sato ■ [AstroPy] Proliferating py-astro-libs Thomas Robitaille ◦ [AstroPy] Proliferating py-astro-libs Thomas Robitaille ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs Erik Tollerud ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs James Turner ■ [AstroPy] Proliferating py-astro-libs James Turner ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs Kelle Cruz ■ [AstroPy] Proliferating py-astro-libs Tom Aldcroft ■ [AstroPy] Proliferating py-astro-libs Matthew Turk ■ [AstroPy] Proliferating py-astro-libs Mubdi Rahman ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs Tommy Grav ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs Tommy Grav ■ [AstroPy] Proliferating py-astro-libs Christoph Deil ■ [AstroPy] Proliferating py-astro-libs James Turner ■ [AstroPy] Proliferating py-astro-libs Kelle Cruz ■ [AstroPy] Proliferating py-astro-libs Thomas Robitaille ■ [AstroPy] Proliferating py-astro-libs Victoria G. Laidler ■ [AstroPy] Proliferating py-astro-libs James Turner ■ [AstroPy] Proliferating py-astro-libs Thomas Robitaille ■ [AstroPy] Proliferating py-astro-libs Perry Greenfield ■ [AstroPy] Proliferating py-astro-libs Erik Tollerud ■ [AstroPy] Proliferating py-astro-libs Marcel Haas ■ [AstroPy] Proliferating py-astro-libs Neil Crighton ■ [AstroPy] organizing meetings to organize astropy Marshall Perrin ■ [AstroPy] Proliferating py-astro-libs Mark Sienkiewicz ■ [AstroPy] Proliferating py-astro-libs Thomas Robitaille etc ...

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

First Astropy Coordination Meeting - Center for Astrophysics, 2011 (followed by STScI in 2012, Yale in 2013) In-person meetings are crucial

Slide 22

Slide 22 text

Made with gource.io

Slide 23

Slide 23 text

Open Development Astropy follows an model

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

How can we ensure consistent code quality?

Slide 29

Slide 29 text

def  test_constellations():        #  the  actual  test  for  accuracy  is  in  test_funcs  -­‐  this  is  just  meant  to  make        #  sure  we  get  sensible  answers        sc  =  SkyCoord(135*u.deg,  65*u.deg)        assert  sc.get_constellation()  ==  'Ursa  Major'        assert  sc.get_constellation(short_name=True)  ==  'UMa'        scs  =  SkyCoord([135]*2*u.deg,  [65]*2*u.deg)        npt.assert_equal(scs.get_constellation(),  ['Ursa  Major']*2)        npt.assert_equal(scs.get_constellation(short_name=True),  ['UMa']*2) (x 10,000)

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

travis-ci.org (Linux and OSX testing) Python 3 MacOS X Documentation Style

Slide 32

Slide 32 text

ci.appveyor.com (Windows testing)

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

readthedocs.org (Documentation)

Slide 35

Slide 35 text

Challenges for open-development projects (in no specific order)

Slide 36

Slide 36 text

Challenge #1: Keeping the barrier of entry low

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Challenge #2: Heterogeneous development

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

Challenge #3: Giving credit to contributors

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

Challenge #4: Improving diversity

Slide 44

Slide 44 text

Web: http://www.astropy.org Docs: http://docs.astropy.org Code: http://github.com/astropy/astropy Twitter: @astropy