13

I'm a teen who's writing a paper on Poisson-Disc distribution over the summer for fun, and I wanted to distribute the software I used for the simulations to maintain scientific integrity. Obviously I don't have anything like a university server I can host it on, so my first instinct is to host it on my GitHub. I guess this would work, but there are several problems with it, such as its fallibility. Furthermore, I'm not really used to professionalism yet, and I'm not sure if it's appropriate to host professional, academia stuff on my personal GitHub. I do go to a more-or-less significant technological program at my school, and since school starts back up in a few weeks, I guess I could talk to my teachers about hosting it on the school servers, but there's only a 50-50 chance they'll let me do that. Do y'all have any better ideas?

8
  • 30
    Lots of professional people use GitHub. Why is it fallible (presuming you use their servers, not your own)?
    – Jon Custer
    Jul 26, 2022 at 16:25
  • I thought of GitHub as more of a place to hold fast changing, collaborative code, but it makes sense that lots of professional people would use it. Thanks so much for the help! Jul 26, 2022 at 16:28
  • 27
    A personal GitHub account with your actual name is certainly considered professional. This may be a duplicate of How to share computer code? though.
    – Anyon
    Jul 26, 2022 at 16:30
  • For a few hundred dollars per year you can host your own domain. For this option, choose a professional name, not a frivolous one. You need both the domain and hosting. You can host several domains with the same host about as easily as one.
    – Buffy
    Jul 26, 2022 at 17:13
  • 3
    GitLab is an option too.
    – camden_kid
    Jul 27, 2022 at 8:24

3 Answers 3

27

Use GitHub (as mentioned in the comments), but with a twist.

You can archive GitHub repos to Zenodo (they have a machinery for that) or really any other scientific research storages (as a tarball, for example). In this manner you can ensure permanence. The visibility is easier on the GitHub, though.

And, as mentioned, a somewhat official-looking (like, with a real name) personal GitHub account is professional enough. It's basically the link from the paper to the GitHub that matters, not other way round.

3
  • Just create a read-only branch or a tag for the version used in your paper. That assures that the version should be readily available for future investigators as well as allowing ongoing development.
    – user158559
    Jul 28, 2022 at 11:53
  • 2
    Zenodo will also give you a DOI for the specific release of the code, which will be pretty easy to cite in your papers, and very easy to find in a few years, even if your Github repository goes missing. Jul 28, 2022 at 13:15
  • +1. You can also just upload a tarball to zenodo and bypass github entirely Jul 28, 2022 at 19:25
8

Using Github for this is fine and is generally not seen as unprofessional. There is a little bit more to proper sharing of code than just sticking it into a git repo. Github has a "releases" function that will let you capture an image of your code base in time. You can say "I tested this code with release v1.2.3 from this github repository." In that way your code will always be retrievable in the state that worked despite any modifications, updates, re-releases etc you do on it.

The problem is capturing the metadata and environment data that you used to run the code. There are tools for this but one of the "easiest" ways to do this would be to write a docker file that has all the library/environment dependencies you need to make the code run, include your released code into that, build the image and host that on docker-hub. Gitlab also has a docker image repo that you can use for free. There are also all sorts of automated CI/CD pipelines built into gitlab/hub you can use to automate this but that might be going a little far.

Using a combination of releases/docker, in the future, a different user will be able to pull the exact same code you used, run it with the exact same versions of all the libraries, and hopefully get the exact same results. You should also address the provenance of the input data, preprocessing steps etc in case the code doesn't auto generate everything from scratch.

0

I'm not sure what you mean by GitHub's "fallibility." Due to its size, reputation and the funding behind it (Microsoft, now) it's likely one of the most reliable places to host a Git repo.

But the key characteristic of Git repos is that they're essentially blockchain based, so the source of the repo (i.e., where it's hosted) is not really that important. Commit 0b9b56adcdf56ff013421c50d0721d29fa08f43a is that commit regardless of where you got it. So it's not such a big deal if a repo moves around, or came from a dodgy source; someone has a copy of a repo with that commit in it, it's almost certainly the code I'm talking about when I talk about that commit. (Note that all this is not the case for information outside of the repo, such as in GitHub wikis or issues.)

So put your code up on GitHub, or GitLab, or Bitbucket, or on any other site that looks as if it's not going to vanish too soon and when you reference it give not just the hosting location but the commit ID of the commit in the repo containing the code used in your paper. The commit ID ensures that regardless of the source your code is identified, and being on GitHub (or any other major provider) makes it likely that it will be easy to find and download the repo. But even if it vanishes off GitHub for some reason (which is unlikely unless you deliberately delete it), if there's enough identifying information in the repo and in your paper (e.g., if the paper's author and title are mentioned in the repo) a web search may find it, and the commit ID will provide verification that the correct repo has been found.

1
  • 1
    I removed a long discussion about blockchain, Merkle trees, and data structures, which eventually devolved into some rude/condescending comments. Let us remember our code of conduct.
    – cag51
    Jul 28, 2022 at 5:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .