Sunday, May 17, 2015

Read the Docs: growing with a little help from its friends at the PSF (and elsewhere)

Today's post, like the previous one, features a development project that the PSF has been delighted to fund once again this year.
On April 28, 2015, the PSF Board unanimously approved the following resolution:
RESOLVED, that the Python Software Foundation grant  $8,000 to Read the Docs, Inc. for developmental work.

What is RTD?

Looking for somewhere to host your open source project’s documentation in a way that will make it readily available, easy to find, fully searchable for your users, and exportable in PDF format, while at the same time offering you ease of use and the ability to add content as your project develops? Then, you’ll want to check out Read the Docs, the world’s largest documentation website for open source projects. 
… hosts documentation, making it fully searchable and easy to find. You can import your docs using any major version control system, including Mercurial, Git, Subversion, and Bazaar. We support webhooks so your docs get built when you commit code. There’s also support for versioning so you can build docs from tags and branches of your code in your repository.

RTD’s History

RTD was created in 2010 by Eric Holscher, Charles Leifer, and Bobby Grace for the 2010 Django Dash. Eric tells the interesting story at Djangocon. A Django Dash is a coding contest that allows 48 hours for development and implementation of a project. Eric and his team considered what to do and decided that, since current documentation hosting was less than satisfactory, they could be of most help to the community by creating a web-based doc hosting solution. They agreed that Sphinx was the best document tool for Python, so they went with that.
According to Eric, 2011 was the year that saw RTD go … from a hobby project, into something projects depended on. At that point, they were hosting documentation for Celery, Fabric, Nose, py.test, Virtualenv, Pip, Django CMS, Django, Grapelli/Floppyforms/Sentry, mod_wsgi. Currently, they are hosting what Eric describes as a decent part of the Python ecosystem, including SQL Academy, Pyramid, Requests, Minecraft Overviewer, and many others. They have over 50 contributors, 7500 users, and get over 15,000,000 pageviews a month. The code for RTD is on GitHub and its documentation can be found on the site. Rackspace provides free hosting. A full list of features is available on the site.

Photo Credit: Aaron Hockley, October 2014 
Creative Commons license 2.00

Use of PSF Grant

The PSF award was part of a fundraising drive that opened at PyCon 2015 and brought in $24,000 USD from 157 contributions since then (see the RTD Blog). Corporate sponsors included Twilio, Sentry, DreamHost, and Lincoln Loop; with service sponsorships from Elastic Search, MaxCDN, and Gandi.
This funding will support RTD for 3 months of development work on the path toward sustainability as an open source project. More specifically, the funds will allow RTD to hire 2 part-time paid positions: Community Developer and Operations Developer (see RTD Blogpost for details and how to apply).
Furthermore, RTD intends to document its use of PSF grant money;  how development time is spent and how funds are allocated will be posted on RTD’s public Trello board.
If you’d like to help, you can contribute to RTD at Gratipay and you can follow them on Twitter.
I would love to hear from readers. Please send feedback, comments, or blog ideas to me at

Friday, May 08, 2015

PSF funds development: Armin Rigo's CFFI 1.0

In looking back over the PSF newsblog posts, it appears that most of the PSF funded projects I’ve written about were conferences, workshops, and education/outreach efforts. These are, of course, truly important. However, it’s also important to get the word out about several development projects that the PSF has sponsored in 2015. One such project is Armin Rigo’s work on CFFI 1.0. 
RESOLVED, that the Python Software Foundation grant Armin Rigo $2500 towards cffi development aimed at making cffi generated extension modules importable without runtime dependencies on an extension module build toolchain.
CFFI or C Foreign Function Interface for Python provides a way to call compiled C code, i.e., external C libraries, from Python using interface declarations written in C. This eliminates the need to use a programming language other than C and Python. At the same time, CFFI minimizes the amount of C code that needs to be written, so it really is a boon for Python developers. It works with Python 2.6 and up and with PyPy 2x and 3x. See CFFI Documentation.
CFFI has already had approximately 7 million downloads, so it is clearly of use, but its creator, Armin Rigo (who is also one of the creators of PyPy) saw room for improvement. Specifically, according to Armin, there were two main problems:
  1. The difficulties of installation [which] can be seen from outside by looking at various workarounds and 3rd-party documentation that have grown into existence. For example, the of projects like cryptography, PyNaCl and bcrypt deploys workarounds that are explicitly documented in
  2. The time taken at import is excessive in some cases. For example, importing pygame-cffi on a Raspberry Pi ARM board takes on the order of 10 to 20 seconds (and this is the fast case where the compiler doesn’t need to be invoked any more)
Due to the PSF grant, Armin was able to fix both problems. The 1.0 version, now in beta, is available at CFFI 1.0.
Our thanks to the amazing Armin Rigo for this very welcome tool!
Stay tuned for my next post about the PSF’s recent award of $8,000 USD for Read the Docs
I would love to hear from readers. Please send feedback, comments, or blog ideas to me at

Thursday, May 07, 2015

New Board Election! Important! Please Read!

For those of you who haven't followed the recent discussion on the PSF members list, there has been an important development regarding the election of members to the Board of Directors. 

Due to ambiguity with respect to the candidate nomination deadline (the former election administrator interpreted the deadline as midnight May 1, UTC; while others were operating with the understanding that the deadline was midnight Anywhere on Earth), a candidate who wished to self-nominate was not able to.

The PSF Board moved quickly to respond to this issue and the following solution was adopted: 

Here's the official explanation by the Chairman of the Board of Directors, Van Lindberg:

Due to some procedural problems with the current election for the Board of the Python Software Foundation, the Foundation has taken some steps to make sure that the elections are freely open for nominations and that there are no conflicts of interest. Specifically, today the board adopted the following resolutions:

RESOLVED, due to procedural deficiencies, the Board Election ballots issued on May 1st (AOE)/May 2nd (UTC) be deemed null and void.

RESOLVED, that David Mertz be removed as election administrator, and that Ian Cordasco be appointed as election administrator.

David has been the election adminstrator for quite a while, and designed the "e-vote" system that we use along with Massimo DePierro. He has put in a lot of time and effort, and we thank him for it. David in particular volunteered for a complex voting administration task that needed to be handled as the PSF expanded internationally beyond a primarily US-based membership that could previously realistically vote (in person, or by proxy) at physical meetings held annually at PyCon

Without David's efforts as Election Administrator over that time, it would not have been feasible to expand the membership as we have, including the conversion to an open membership model in the 2014 update to the PSF bylaws.

For anyone who has received a ballot already, or has received a ballot reminder, please ignore it. We will be canceling the election as quickly as possible.

We also wanted to make sure that the procedure for upcoming board elections was clear, particularly with regard to the timelines for nominations and voting eligibility. To address that, we also adopted the following resolution concerning the timing of future votes for the board. For those who aren't familiar with the term "AOE", it means "Anywhere on Earth." 

RESOLVED, that the Python Software Foundation adopt the follow procedure for Board elections:
    - Day 1: There is announcement of an upcoming board election via public announcement and email to existing voting members.
    - Day 10 (AOE): Nominations and voting eligibility closes for the upcoming board election. The list of voting members is updated.
    - Day 14-15: Ballots are sent out to voting members.
    - Day 25 (AOE): Election closes.

We also are starting a new election using this procedure, so the timeline for the election is as follows:

    - May 5: Announcement of a new election . . .  and an email to the voting members.
    - May 15 (AOE): Nominations and voting eligibility closes for the upcoming board election. The list of voting members is updated.
    - May 19-20: Ballots are sent out to voting members.
    - May 30 (AOE): Election closes.

This means that in an effort to be inclusive, the nominations will again be open for anyone until May 15 AOE. If you missed the opportunity to nominate for the 2015 Python Software Foundation Board, you will have that chance.


Van Lindberg
PSF Chair
I urge all prospective candidates to post their nomination statements in advance of the May 15 (midnight AoE*) deadline, and all voters to read the Wiki for the candidate statements and to cast their ballots in advance of the May 30 (midnight AoE*) deadline Wiki.

* AoE = UTC - 12

For those with more specific scientific requirements for deadline info, the following should be completely unambiguous:

Deadline for candidate nominations and voting rights self-certification: End of day May 15, 2015, AoE: = UTC May 16, by12 noon = ISO 8601: 2015-05-15T23:59:59-12

Deadline for Voting: End of day May 30, 2015, AoE = UTC May 31, by 12 noon = ISO 8601: 2015-05-31T23:59:59-12:00

Any questions or problems can be addressed to the Board ( and/or the new election administrator, Ian Cordasco (

Photo Credit: M.A. Sushinsky, private collection 
(S. Dali multiple original lithograph--sketch for Persistence of Memory)

("Time is the horizon for the unfolding of the meaning of Being," 
-- M. Heidegger, 1927)

I would love to hear from readers. Please send feedback, comments, or blog ideas to me at

Friday, May 01, 2015

PSF/NumFOCUS joint Working Group on Scientific Python

For the first time ever, the PSF has joined forces with another open source organization, NumFOCUS, to create a collaborative working group to make decisions on allocating grants or sponsorships for Scientific Python projects, conferences, etc. 
NumFOCUS, based in Austin Texas, has been promoting and funding open source computing resources for scientific research since 2012. Their core projects include AstroPiData CarpentryIPythonJuliaSimPyNumPy, and SciPyMatplotlibCythonPyTables, and more.
This new joint working group was spearheaded by PSF Director David Mertz, who will co-chair along with mathematician and Python evangelist Tim Couper.
The PSF has recently pledged initial annual support in the amount of of US$25,000, and agreed to match any amount NumFOCUS contributes beyond $25,000, up to $50,000 contributed by the PSF, during the PSF Board meeting on 4/28/15 (for combined funding up to $100,000). 
Image credit:
In forming the Working Group, David reached out via the PSF members' list to call for volunteers. As he wrote,
This note is a call for volunteers … The work needed … [is] keeping in mind a finite budget, and evaluating and discussing requests that come in for grants or sponsorship relative to this budget. In the best case, people connected to scientific communities will also do some outreach to let groups know that funds are potentially available, but it’s also necessary just to weigh requests that come to us independently.
The call for volunteers led to an extremely impressive group representing a range of scientific expertise and interests. The PSF is confident in the group’s ability to make capable evaluations of grant requests that will ensure a judicious use of limited funds.
Here are the WG members' biographies:
David Mertz: Ph.D. in Political Philosophy, gone astray into computer theory, with a stint in computational biochemistry. He has been a Fellow of the PSF since 2008, and a Director since 2009. He is author of Text Processing in Python (Addison Wesley) and the series Charming Python (IBM developerWorks).
Tim Couper: Oxford D.Phil. in Mathematics. Python evangelist and consultant for 16 years, now based in Scotland. Extensive python experience with organisations of all sizes from startups to large retail, pharmaceuticals & finance (banking & hedge funds).
Anthony Scopatz: Computational Physicist and avid Python developer since 2002 and PSF Fellow since 2013. He is coauthor of Effective Computation in Physics (O'Reilly). He will be joining the University of South Carolina as a tenure-track faculty member in Mechanical Engineering in August 2015.
Stéfan van der Walt: Assistant Researcher at the Berkeley Institute for Data Science and a senior lecturer in applied mathematics at Stellenbosch University, South Africa. He has been an active member of the scientific Python community since 2006, and frequently teaches Python at workshops and conferences. He is the founder of scikit-image and a contributor to numpy, scipy and dipy.
Travis Oliphant: Ph.D. in Biomedical Engineering from Mayo Clinic; professor of Electrical and Computer Engineering at BYU 2001 to 2007 with research in inverse problems and biomedical imaging; creator of SciPy, author of NumPy; founder of Numba, PyData, NumFOCUS, and Continuum Analytics. Currently CEO of Continuum.
Leah Silen: Executive Director of NumFOCUS, Leah has been involved daily in the support of the Python scientific computing community since NumFOCUS began three years ago. She has worked with the board of directors to initiate and carry out fiscal sponsorship, fellowship and grant programs funding both projects and individuals. She has also worked through the organization of PyData events to further support the community as well as on scholarship review committees of multiple conferences.
Dana Bauer: Geographer, Pythonista, open data enthusiast, mom to a future robot programmer. Dana has over 54 repositories at GitHub and works as a developer at Rackspace. 
Kurt Kaiser is the Treasurer of the Python Software Foundation.
Congratulations to the organizers and members and best of luck in your important work. We look forward to hearing about your activities.

I would love to hear from readers. Please send feedback, comments, or blog ideas to me at