---
description: >-
  “If you want to go fast, go alone. If you want to go far, go together”. -
  Attributed to an African proverb
---

# Why open source

Although we develop both open and closed source pieces of code in our group, we try our best to release any software that is potentially useful to more than one person as open source. This ends up being almost all the software that we write except perhaps code written to conduct a specific scientific analysis.&#x20;

Benefits of open-source software include:&#x20;

* authors can include the code in their portfolio for future job applications
* you get recognition from the community of users of your code as well as personal pride
* more users means more bug reports - this sounds scary but is in fact very useful and important for your own research
* outside developers can contribute fixes and features, so your code gets better for free
* much less friction - easy to share code, fork it, etc. without needing to set up permissions or access. Easy to distribute and install the code, e.g. via PyPI
* many services like CircleCI and PyCharm offer their products for free when the codebase is open source. Not only does this save money, it more importantly saves a lot of time in coordinating purchasing requests through LBNL that need to be renewed.
* your own programming will automatically improve because your code is open source and public. You will be more likely to write documentation and write clean code if you know it is for the world and not only for yourself. This will also encourage writing the code in a more general manner rather than specific to your application.
* you can write a paper about your code whenever ready. There is no separate process of “making the code open source” if it is already open source from day 1.
* it is the right thing to do for the betterment of the research community!

Clarifying common misconceptions about open source code:&#x20;

* Writing open source code almost never exposes you to getting scooped or having some outsider leapfrog you in research. First of all, it is very rare that an outsider will use your code rather than make their own, especially if you do not advertise your code. Most of the time, you will have the opposite problem - i.e., to convince people to use and trust your code. Second, as the code author you are the expert in the code. Even when there is an outside user, it is rare that they are as proficient as you in the use of the code. Third, the majority of people are friendly and not as manipulative as you may think.
* Open source code doesn’t need to be perfect, nor does it even need to be any good. Often people think that they will make a code open source when it is “ready”. This is not the right approach; code does not need to be “ready” to be open source.
* Publishing a code as open source doesn’t mean that you need to support the code or vouch for its correctness. You are offering the code publicly without any guarantees whatsoever, and you don’t have any additional obligations to anyone. However, if you actively want your code to be used by the community and extended, then be prepared to document and support your code, and to help users and resolve their problems. But this is a separate decision. It is perfectly OK to have an open-source code for which you provide no support so long as you don’t try to advertise it for more than it is. It is still better than having that same code be closed off.
