Head Librarian, Harvard-Smithsonian Center for Astrophysics
Publishing & Archiving 101
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.
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?
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.
Publications have identifiers
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.
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