Lessons from the Astropy
Code of Conduct
Kelle Cruz (@kellecruz)

CUNY Hunter College
An overview of
Adrian Price-Whelan
! adrn "adrianprw
Astropy Core Package 

(currently v3.1.x)
• Units and
“Quantities” (arrays with
units that act the way
you’d expect).
Integrated with
comprehensive astro-
appropriate physical
constants

• Date/time good to
nanoseconds over a
Hubble time

• Celestial coordinates
and their transformations

• Table manipulation,
including many arcane
astro formats 

• nddata: Image analysis
and interoperability data
structures

• Astro-appropriate
convolution

• WCS (pixel sky
mapping)

• Extensible I/O: FITS,
VOTable, hdf5, custom

• Data modeling and fitting

• Common astrostatistics
tools

• Cosmology tools
Best place to look is always http://docs.astropy.org
Astropy Coordinated And Affiliated Packages
• APLpy: astronomical
plotting

• astroquery: access to
internet-accessible
astronomy resources 

• ginga: interactive image
viz

• imexam: quick image
analysis

• pydl: simple IDL ports

• PyVO: VO access

• WCSAxes: WCS-aware
matplotlib plots

• pyregion: ds9 region files

• montage-wrapper: image
mosaicing

• ccdproc: ccd reductions

• photutils: photometry

• specutils: spectroscopy

• gammapy: gamma-ray
astronomy

• sncosmo: supernova light
curves fitting/typing/etc

• halotools: high-
performance tools for
using n-body simulations
to model galaxy formation

• galpy: tools for Galactic
dynamics

• dust_extinction: tools for
those who study dust and
those who hate it
Canonical list is at: http://affiliated.astropy.org
Core package: General tools, long-term stable,
longer release schedule
Affiliated packages: More specialized tools,
faster development and release cycle
- Can also be Astropy-coordinated, managed
by the Astropy project
The Astropy Ecosystem
Core package + affiliated packages
A collaborative effort
~240 contributors
~20 package leads & maintainers
Who develops the Astropy Core Package?
Maintainers Deputies
The Astropy Coordination Committee
Erik Tollerud Kelle Cruz Tom Aldcroft Tom Robitaille
• Overall coordination and management of the Astropy project
• Evaluating new affiliated packages
• Arbitrating disagreements in the core package
• Managing finances for the project
We might be doing it wrong,
but we got something done!
• We followed our noses, read a couple other CoCs, and
basically made up something which felt right for us.

• These “lessons” are working for us but have not been
studied or even read over by an HR professional.
Lesson #1: Write the Code of
Conduct as a Community
• Astropy Code of Conduct was written via Google Docs
during the 2015 Python in Astronomy conference as
an unconference and hack project.

• Things were hashed out in-person and in a relatively
short amount of time.
Our goal is to keep ours a
positive, inclusive, successful,
and growing community.
Lesson #2: Identify the Goal
Lesson #3: Make the Code of
Conduct Aspirational
• We all have bad habits that we need to work on breaking.

• Everybody breaks the code of conduct every once in
awhile.
We pledge to… 
Lesson #4.1: Identify Exclusive
Practices and Barriers to Full
Participation
We pledge to treat all people with respect and provide a
harassment- and bullying-free environment, regardless of sex,
sexual orientation and/or gender identity, disability, physical
appearance, body size, race, nationality, ethnicity, and
religion. In particular, sexual language and imagery, sexist,
racist, or otherwise exclusionary jokes are not appropriate.
Lesson #4.2: Identify Exclusive Practices
and Barriers to Full Participation
We pledge to welcome those interested in joining the community, and
realize that including people with a variety of opinions and backgrounds will
only serve to enrich our community. In particular, discussions relating
to pros/cons of various technologies, programming languages, and
so on are welcome, but these should be done with respect, taking
proactive measure to ensure that all participants are heard and feel
confident that they can freely express their opinions.
In practice: No IDL bashing.
Lesson #4.3: Identify Exclusive Practices
and Barriers to Full Participation
We pledge to be conscientious of the perceptions of the wider community
and to respond to criticism respectfully. We will strive to model behaviors
that encourage productive debate and disagreement, both within our
community and where we are criticized. We will treat those outside our
community with the same respect as people within our community.
In practice: Don’t be rude when people complain.
Lesson #4.4: Identify Exclusive Practices
and Barriers to Full Participation
We pledge to welcome questions and answer them respectfully, paying
particular attention to those new to the community. We pledge to provide
respectful criticisms and feedback in forums, especially in discussion
threads resulting from code contributions.
In practice: Be as nice and patient as possible.
Lesson #5: Make Everyone
Mutually Accountable
We pledge to help the entire community follow the code of conduct, and
to not remain silent when we see violations of the code of conduct. We will
take action when members of our community violate this code such as
contacting confidential@astropy.org or talking privately with the person.
In practice, when there is not ideal behavior, we say,
“Code of conduct?” We say it to each other A LOT.
Frequent violations are good.
Tech rules have acted
as training wheels for
holding each other
accountable for
behavior and calling
each other out.
Leadership should model
desired behavior
The Coordination Committee members probably
call “Code of Conduct" on each other the most.
We do it during talks, in large groups, and
publicly on social media.
Lesson #6: Tell people what
the code of conduct is
Code of Conduct is discussed at the
beginning of every Python in Astronomy
conference and at the AAS Hack Day.
Discussion Topics
• Is this experience reproducible? Do you think these
elements would work in your community?

• Should Codes of Conduct include specific what-not-to-
dos in addition to more general aspirational statements?

• What are other examples of bad-habit behaviors we
should consider adding or would be good for other
types of communities?
Postscript - Oct 21, 2019
• These was a discussion in the conference slack and this Guide to Code of
Conducts was shared: https://files.frameshiftconsulting.com/books/
cocguide.pdf

• In Chapter 4 of that Guide, it specifically recommends to keep “positive/
expected” behaviors separate from “unacceptable” behaviors.

• Given that our CoC is already well established as aspirational behaviors,
I’ve proposed we make a document called "Unacceptable Behaviors"
which has the most egregious CoC violations and keep our Code of
Conduct as the document describing the desirable behaviors.

https://github.com/astropy/community-engagement/issues/10

Lessons from the Astropy Code of Conduct

  • 1.
    Lessons from theAstropy Code of Conduct Kelle Cruz (@kellecruz)
 CUNY Hunter College An overview of Adrian Price-Whelan ! adrn "adrianprw
  • 2.
    Astropy Core Package
 (currently v3.1.x) • Units and “Quantities” (arrays with units that act the way you’d expect). Integrated with comprehensive astro- appropriate physical constants • Date/time good to nanoseconds over a Hubble time • Celestial coordinates and their transformations • Table manipulation, including many arcane astro formats • nddata: Image analysis and interoperability data structures • Astro-appropriate convolution • WCS (pixel sky mapping) • Extensible I/O: FITS, VOTable, hdf5, custom • Data modeling and fitting • Common astrostatistics tools • Cosmology tools Best place to look is always http://docs.astropy.org
  • 3.
    Astropy Coordinated AndAffiliated Packages • APLpy: astronomical plotting • astroquery: access to internet-accessible astronomy resources • ginga: interactive image viz • imexam: quick image analysis • pydl: simple IDL ports • PyVO: VO access • WCSAxes: WCS-aware matplotlib plots • pyregion: ds9 region files • montage-wrapper: image mosaicing • ccdproc: ccd reductions • photutils: photometry • specutils: spectroscopy • gammapy: gamma-ray astronomy • sncosmo: supernova light curves fitting/typing/etc • halotools: high- performance tools for using n-body simulations to model galaxy formation • galpy: tools for Galactic dynamics • dust_extinction: tools for those who study dust and those who hate it Canonical list is at: http://affiliated.astropy.org
  • 4.
    Core package: Generaltools, long-term stable, longer release schedule Affiliated packages: More specialized tools, faster development and release cycle - Can also be Astropy-coordinated, managed by the Astropy project The Astropy Ecosystem Core package + affiliated packages
  • 5.
    A collaborative effort ~240contributors ~20 package leads & maintainers Who develops the Astropy Core Package?
  • 6.
  • 7.
    The Astropy CoordinationCommittee Erik Tollerud Kelle Cruz Tom Aldcroft Tom Robitaille • Overall coordination and management of the Astropy project • Evaluating new affiliated packages • Arbitrating disagreements in the core package • Managing finances for the project
  • 8.
    We might bedoing it wrong, but we got something done! • We followed our noses, read a couple other CoCs, and basically made up something which felt right for us. • These “lessons” are working for us but have not been studied or even read over by an HR professional.
  • 9.
    Lesson #1: Writethe Code of Conduct as a Community • Astropy Code of Conduct was written via Google Docs during the 2015 Python in Astronomy conference as an unconference and hack project. • Things were hashed out in-person and in a relatively short amount of time.
  • 10.
    Our goal isto keep ours a positive, inclusive, successful, and growing community. Lesson #2: Identify the Goal
  • 11.
    Lesson #3: Makethe Code of Conduct Aspirational • We all have bad habits that we need to work on breaking. • Everybody breaks the code of conduct every once in awhile. We pledge to… 
  • 12.
    Lesson #4.1: IdentifyExclusive Practices and Barriers to Full Participation We pledge to treat all people with respect and provide a harassment- and bullying-free environment, regardless of sex, sexual orientation and/or gender identity, disability, physical appearance, body size, race, nationality, ethnicity, and religion. In particular, sexual language and imagery, sexist, racist, or otherwise exclusionary jokes are not appropriate.
  • 13.
    Lesson #4.2: IdentifyExclusive Practices and Barriers to Full Participation We pledge to welcome those interested in joining the community, and realize that including people with a variety of opinions and backgrounds will only serve to enrich our community. In particular, discussions relating to pros/cons of various technologies, programming languages, and so on are welcome, but these should be done with respect, taking proactive measure to ensure that all participants are heard and feel confident that they can freely express their opinions. In practice: No IDL bashing.
  • 14.
    Lesson #4.3: IdentifyExclusive Practices and Barriers to Full Participation We pledge to be conscientious of the perceptions of the wider community and to respond to criticism respectfully. We will strive to model behaviors that encourage productive debate and disagreement, both within our community and where we are criticized. We will treat those outside our community with the same respect as people within our community. In practice: Don’t be rude when people complain.
  • 15.
    Lesson #4.4: IdentifyExclusive Practices and Barriers to Full Participation We pledge to welcome questions and answer them respectfully, paying particular attention to those new to the community. We pledge to provide respectful criticisms and feedback in forums, especially in discussion threads resulting from code contributions. In practice: Be as nice and patient as possible.
  • 16.
    Lesson #5: MakeEveryone Mutually Accountable We pledge to help the entire community follow the code of conduct, and to not remain silent when we see violations of the code of conduct. We will take action when members of our community violate this code such as contacting confidential@astropy.org or talking privately with the person. In practice, when there is not ideal behavior, we say, “Code of conduct?” We say it to each other A LOT.
  • 17.
    Frequent violations aregood. Tech rules have acted as training wheels for holding each other accountable for behavior and calling each other out.
  • 18.
    Leadership should model desiredbehavior The Coordination Committee members probably call “Code of Conduct" on each other the most. We do it during talks, in large groups, and publicly on social media.
  • 19.
    Lesson #6: Tellpeople what the code of conduct is Code of Conduct is discussed at the beginning of every Python in Astronomy conference and at the AAS Hack Day.
  • 20.
    Discussion Topics • Isthis experience reproducible? Do you think these elements would work in your community? • Should Codes of Conduct include specific what-not-to- dos in addition to more general aspirational statements? • What are other examples of bad-habit behaviors we should consider adding or would be good for other types of communities?
  • 21.
    Postscript - Oct21, 2019 • These was a discussion in the conference slack and this Guide to Code of Conducts was shared: https://files.frameshiftconsulting.com/books/ cocguide.pdf • In Chapter 4 of that Guide, it specifically recommends to keep “positive/ expected” behaviors separate from “unacceptable” behaviors. • Given that our CoC is already well established as aspirational behaviors, I’ve proposed we make a document called "Unacceptable Behaviors" which has the most egregious CoC violations and keep our Code of Conduct as the document describing the desirable behaviors.
 https://github.com/astropy/community-engagement/issues/10