Toggle navigation
JUPYTER
FAQ
View as Slides
View as Code
View on GitHub
Execute on Binder
Download Notebook
talk-2013-sicm2
DevTools.ipynb
Notebook
In [1]:
%
load_ext
load_style
%
load_style
talk.css
Software development tools
¶
Git/GitHub
¶
Version control systems promote good software engineering practices
In the last few years, Git has emerged as one the best in class
GitHub has completely transformed collaborative software development
Contributions to open source projects have
exploded
as a result
Makes software development deeply social: "Facebook for coders"
Public repositories are free
Encourages open collaboration
All code, history, discussions are public
Some scientists are uncomfortable with this
The benefits outweight any downsides
Most contributions are peer reviewed!
You can have private repositories, but they cost $
Let's have a look at
IPython's GitHub repo
Git/GitHub as a path to reproducibility
¶
Version control systems are not the final answer to reproducibility, but they are a
necessary beginning
Developer behavior changes when they know that everything they do is public
Their reputation is on the line - employers routinely consult GitHub profiles
Documentation and tests magically appear ;-)
A case study with an undergraduate physics major
Zach Sailer graduated from Cal Poly in 2013 with a physics B.S.
He did his senior project on "Dielectric Behavior of de Vries Liquid Crystals"
"Hey you should post your senior project on GitHub"
Reproducibility magically follows...
Here is his
GitHub repo
Science inherits the attributes of the software tools used
¶
Travis CI (continuous integration)
¶
Let's assume that all of us are writing tests for our software ;-)
Everytime you make a change, the test suite should automatically run
You should get an email if a test fails
That is what Travis CI does
Let's have a look at the
Travis CI site for IPython
Language independent, complete control of dependency installation
Free for open source projects, $ for others
Seamless integration with GitHub
Science inherits the attributes of the software tools used
¶
Good software development tools and practices allow you to create projects with adoring communities of developers and users
Impact by attraction rather than promotion