Publishing & Archiving 101



Daina Bouquin

Code is Speech.

Copyrightable creative work.


even if you don't write "copyright" anywhere

Copyright owner decides who can use the work and how.


There are a few exceptions to that rule:

  • multiple people created the work together, then they are all considered owners of the copyright as long as they intended for their contribution to be combined in that way (e.g., AstroPy Collaboration)
  • someone created the work in the course of their employment - the employer is probably the owner
  • Government employee - the work is not subject to copyright protection!

Only the copyright owner can give legal permission for others to copy, modify, or distribute the work.



This is what licenses are.

When you don't specify a license, you still own the copyright, but what people can legally do with your code is ambiguous.

Step 1: choose a license

I put my code online for free.
Isn’t it obvious that people can use it?


Unfortunately, no. Copyright law is very specific.
Implied licenses are difficult to establish.


Many people and companies will not use software that doesn't have a license.

It also makes it challenging for people engaged in software preservation to legally save and later distribute your code.

Do I have to choose an existing license?

Please, please, please choose an existing license rather than writing your own or doing anything weird.

So many great options!


Over 80 different licenses written by lawyers!

Note: Creative Commons Licenses are not intended to be used on code.

Is there an "open source" license that prohibits commercial use?


  • Free Redistribution

  • Source Code

  • Derived Works

  • No Discrimination Against Persons or Groups

  • No Discrimination Against Fields of Endeavors

  • License Must Not Be Specific to a Product
    (how it's distributed doesn't matter)


Open Source Licenses have many qualities, but these are the ones I usually remind people of:

We wrote a guide about all of this!

Now that you have a license, you want to actually publish your code.



GitHub distribution ≠ Publication



Sharing something online is not the same
as publishing it.

When you publish something it becomes a stable thing with specific authors that someone else can cite.

Think of this as being the difference between a Google Doc and a hardcover book.


The Google Doc is constantly changing and the document's URL can break (404 errors).


Unambiguous way to point at a specific thing in a specific place at a specific time.


Where the thing you are pointing at is at a specific time.






arXiv ID



Publications have identifiers





Step 2:
create an identifier
for your code

Archives mint and maintain identifiers


(you need to archive your code to create an identifier)

Using GitHub and Zenodo to archive your code and create an identifier.

Step 3:
create a citation file

* and add the file to your repo* 


Instantly gives you the "Cite this repository" button!

Step 4: consider writing a software paper

Open access journal

Peer review for your code

Short paper about the code

Links directly to the archived code

What about other journals?


Aim for open access journals


Make sure your software paper has a citation to your archived code in the references section


Last thing to remember:


Cite other people's software!


Cite software DOIs whenever you can find them


If software authors want you to cite a paper,
cite the paper and the software DOI


Put software citations in the references section!

Software Publishing 101

By Daina Bouquin

Software Publishing 101

A brief introduction to software publishing. Presentation given to interns participating in the 2022 SAO/UMass Latino Initiative Program at the Center for Astrophysics.

  • 128