A large and growing community of open source software (OSS) projects count on CircleCI to keep their projects running. We offer OSS projects free resources and unlimited usage and, as a result, we process nearly 2.6 million OSS jobs per month. Recently, we reached out to some of the most interesting OSS projects building on CircleCI to ask them about the importance of their project being open source, the importance of CI for their projects, and tips from their configs that other OSS projects can benefit from. For the second post in our series covering these projects (here is the first), we were able to find out more about SciPy from Pauli Virtanen, the current project lead.
Tell me about SciPy. What is your OSS project for?
SciPy is a collection of general-purpose routines for numerical scientific computation, e.g. numerical integration, optimization, and statistics. It aims to supplement the Python language with a basic mathematical feature set that is often needed by scientists, but is also used by many others in any field that involves quantitative work.
What do you do for the project?
The SciPy project is led by a council of long-term active developers and a project lead. I’m the current project lead. I became interested in working on SciPy largely from a general interest in scientific computation that grew out from my academic studies. I also wanted to use an open-source environment for what I was doing: the tools for science should be open. Python was one of the promising open-source upcomers in the world of high-level languages for scientific computing at the time, and my involvement with the SciPy project started one bug report and patch at a time. The ecosystem has only grown in size and popularity since, and I’m still happy to be involved with SciPy.
Why is it important for this project to be open source?
The features provided by SciPy are common basic building blocks that are often needed in both academic and industrial software doing numerical computation. They are useful for a very wide range of fields and so it is important that they can be used with few restrictions. It is also important for everyone to be able to, in principle at least, find out and understand how an algorithm they are using is actually implemented, and improve upon it. Open source and free software make both possible.
In what ways does CI improve the experience for your outside contributors?
One important role of CI with regard to outside contributors is to provide rapid, automated feedback. In our case, this means indicators of the outcome of test suites and other automated checks. A second important feature of modern CI solutions for OSS projects is their easy, transparent administration: having essentially all configuration publicly visible and fairly easily understandable helps to disseminate knowledge of how all the “plumbing” works among the volunteer developers. It is useful to avoid small bus factors and to have more hands on deck when something breaks, or the set of active developers changes, which certainly occurs in long-lived projects.
Can you share an interesting code snippet from your config and describe what you are doing in it?
This part of our CircleCI setup is fairly simple: it compiles and syntax-checks our documentation. For commits merged to the mainline, an additional deployment job pushes the results to a separate, publicly visible website. For pull requests on the other branches, the results are visible in CircleCI’s artifact store. Because our documentation involves a fair amount of mathematical expressions, this makes ensuring correctness and readability easier.
workflows: version: 2 default: jobs: - build_docs - deploy: requires: - build_docs filters: branches: only: master
Where can one find out more about your project?
We’re available on GitHub at scipy.
If you want to support our work, you can make donations to SciPy here.