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

Thursday, April 30, 2015

South African Brothers and Sisters for Python

Today’s post is a follow-up to a previous post about a PSF funded project by Hyperion Development in South Africa. 
The PSF has recently heard from Riaz Moola about his latest project–working with Brothers For All to deliver Python courses in 42 prisons–including eight female corrections facilities–in the Western Cape.
Brothers is run by an ex-con, Sihle Tshabalala, who taught himself to code online. When he got out of prison, he wanted to do something to slow the recidivism rate of South African ex-convicts. Not only does South Africa have the world’s eighth highest prison population, but the rate of re-offenders is over 80%. In addition, an extremely high unemployment rate of 25% adds to the hopelessness felt by those with prison records and without marketable skills.
Brothers began last September by opening a center in a Western Cape township area. There, ex-cons and at-risk youth come to learn coding skills, entrepreneurship, and marketable crafts.
According to Tshabalala,
“We chose coding because it leapfrogs over the need for more conventional, expensive and time consuming job skills training… Plus there currently is a high demand in the market for such skilled labour.”
They have recently been given approval by the provincial government to take the program into 42 prisons in the Western Cape. This way, prisoners can gain skills while incarcerated so that they are ready for employment immediately upon release. 
The ambitious scope of this program caused Brothers to partner up with Hyperion. While Brothers will focus on getting the programs into the prisons and more township areas, Hyperion will provide course content.
Hyperion’s main concerns at this point are logistical and for long-term sustainability. As Riaz told the PSF, there are many challenges specific to South Africa; for example, for four hours every day there is a power blackout, which obviously poses a problem for internet connectivity. In addition, South Africa has the highest data costs of any country in the world. Travel for tutors and volunteers is also very expensive. And then, of course, there’s the poverty and its inevitable expression in crime. Sadly, one of the project’s computer labs was recently burglarized, resulting in the loss of equipment. But Brothers also has support streams, so they are currently receiving donations to make up for the loss. In future, they plan to purchase laptops, which can be more easily secured.
Hyperion has been able to achieve a solid team of Python instructors. With the help of the PSF and other institutions, Hyperion is able to pay the travel and data costs for their volunteers. This has allowed them to be very selective; their instructors must pass tests of their technological and teamwork skills. Even so, Riaz tells us, they are never at a loss for instructor applicants.
The Cape Town team, led by Hyperion manager Sobane Motlomelo (a Master’s degree student at University of Cape Town), will be primarily responsible for handling the prison project. Sobane's team has recently accepted four new members, and Riaz is confident of their ability. This is good news for Riaz, who began Hyperion as an experiment when he was an undergraduate, then saw it spiral into something very large, to which he has been giving all his time. Currently he’d like to step back just a bit. Our congratulations to him on being offered a Google internship! 
More info on this remarkable program can be found at its twitter page and
I would love to hear from readers. Please send feedback, comments, or blog ideas to me at

Tuesday, April 28, 2015

Highly Contagious: Python Spreads through South America!

As you may recall, I previously posted about a wonderful project in South America that has been funded in part by the PSF. That first blog post described the Python events that Manuel Kaufmann had organized in Argentina and his plans to move on to Paraguay and then Bolivia. Please check it out at Python in Argentina.
I’m very happy to report that Manuel Kaufmann has continued to be busy bringing Python events and knowledge to more and more people, as he left Argentina for Paraguay. He recently reached out to us to tell about his experiences. Here's a recap:
First of all, PyDay Asunción took place as scheduled on March 28th. This event was the culmination of Manuel’s efforts in creating the brand new Python Paraguay community. His Paraguayan adventure began by meeting with people from different Software Libre groups (PHP, OpenStreetMap, Sugar, Google Code In, etc) in an attempt to merge them into a new community focussed on Python. Their first meeting had 13 attendees who immediately began organizing for PyDay Asunción. 
This first PyDay (or mini-conference) in Paraguay was a great success. Over 100 people with varying levels of programming and Python skill attended. Manuel was pleased to report that among the presenters were a 17 year old boy and a young woman–clearly the diversity of our community is growing demographically as well as geographically. In addition, the importance of this event was marked by the Paraguayan government, who declared PyDay Asunción an official Technology and Cultural Event. Congratulations to Manuel and everyone who worked to make this a reality.You can read more about the day (in Spanish) at Manuel’s own blog post.

PyDay Asunción
Of course, as before, the momentum didn’t stop at one event. With a new community formed, new events were bound to occur. It always amazes me the way hard work and a good idea will grow. In fact, Manuel reported that some of the attendees of last month’s PyDay Formosa, Argentina were so enthused that they travelled 400 km to attend and help out at PyDay Paraguay. That kind of passion and commitment says a lot about the quality of these events and the desire for more. Perhaps Python is contagious!
Similarly, Manuel tells us that a talk at PyDay Paraguay gave rise to another event: HACKÁra Asuka Guaraní: an event to translate the Sugar platform to Guaraní. This event was organized by Ricardo Saucedo and Martín Abente (one of the members of Python Paraguay). In fact, the idea of this event came out of Martin’s talk at PyDay Asunción. There were around 15 teenagers including 6 girls and a teacher who helped with the translation into their native language. According to Manuel, this potentially could lead to many people who don't speak Spanish being able to learn programming.

Manuel has no intention of slowing down. Although his original plan was to spend three months on the project, he hasn’t yet made it to Bolivia, so he’s going to extend his time commitment. One problem he’s having is with his car. Apparently it needs quite a bit of TLC to keep it going. If you’d like to help with that, Manuel is accepting donations at Manuel’s Project. Since a little goes a long way to keep a car running, I hope you'll join me in giving him the cost of a latte or two.

In any case, his project appears unstoppable, with many future events either completely set to go or in the planning stages. The following events are already scheduled for May: 
In addition, Manuel has some exciting ideas for future projects, such as creating a Robot Course for kids, and bringing Facundo Batista (one of the best Argentinian Python hackers) to Asunción, Paraguay to develop a 3-days course. These are in the early planning stages, but if I know Manuel, I think we can look forward to hearing about their successful completion in the future.
If you’d like to follow Manuel’s travel plans, or provide some support, please visit his website.

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

Reminder: Friday May 1 deadline for PSF Board nominations

As we previously announced, nominations for the Python Software Foundation's board of directors are open, and they will be accepted through Friday May 1. Please see our original announcement as well as details about the wiki here.

Candidates for the 11 seats on the board are found at Those interested in running for one of the positions can add themselves, and per Section 5.14 of our bylaws, all candidates must disclose their affiliations.

Thursday, April 23, 2015

Finding global voices

On the psf-members mailing list today, current Director David Mertz expressed some sentiments about increasing diversity in the governance of the foundation that I'd like to share.  Making the Python community, and the Python Software Foundation itself, more diverse, globally and across dimensions of privilege is something we have been striving for very consciously for years. Here's what he wrote (re-posted with his permission):
This year, as for the last bunch of years, I'll be the election administrator in the upcoming election. This will have some candidates for the Board of Directors of the PSF, and probably a few other issues like Sponsor Members approvals or membership resolutions.
    This year, as in past Board elections, I will use "approval voting" again. This will be explained again when you get ballots and announcements here. But the general idea is that each voter can cast as many Approve votes as they wish to for the 11 seats. A voter might vote for only the one candidate they really like to avoid diluting that vote. Or they might vote for every candidate except the one they really don't like as an "anyone but" vote. Or, in most cases, voters will vote for some number of candidates whom they feel generally comfortable with or prefer, and skip voting for any others.
    I give this preface to explain how I intend to vote. I am a white, male, middle-class, middle-aged, cis-gendered, American who has been on the Board for a long while. I may or may not run for it again (my name is on the wiki now with no candidate description, but mostly as a placeholder to get some permission issues sorted out for editing the wiki).
    But what I REALLY want is to have a PSF Board that is less American, less white, less male (and ideally represents diversity along other dimensions also: religious, sexual identities, linguistic, disability, etc). So I earnestly urge any or all PSF members, or their friends and colleagues, or other members of the Python community, or general supporters of Free Software, who might consider serving on the Board to place themselves in nomination, or allow themselves to be so placed.
    Serving on the Board is a genuine commitment of time and effort, and carries a fiduciary obligation. It's not just an item to put on a resume, and I don't want names of Directors from subaltern* groups there just as names alone. But I really do want those names as people who actively participate in making our community both more vigorous and more diverse.
    Which is to say, that for MY own vote, I can pledge to vote Approve to any candidate with a minimal indication of commitment to the selfless, volunteer tasks involved who doesn't look or sound quite so much like myself.
    Please, wonderful potential candidates, step up and let me cast these votes!
[*] In critical theory and postcolonialism, subaltern is the social group who are socially, politically and geographically outside of the hegemonic power structure of the colony and of the colonial homeland. In describing "history told from below", the term subaltern derived from Antonio Gramsci's work on cultural hegemony, which identified the social groups who are excluded from a society's established structures for political representation, the means by which people have a voice in their society.
I would love to hear from readers. Please send feedback, comments, or blog ideas to me at 

Friday, April 17, 2015

Board of Directions Nomination Instructions Update

Unfortunately, the Python Wiki has experienced some spamming and vandalism lately. This may mean that editing the Wiki, including the Directors nomination page may take a little extra work until we get things sorted out.  This is described on the Front Page:
Since spamming and vandalism on this wiki has reached a level that is starting to require daily intervention, new users are no longer allowed to edit pages.
If you want to edit a page and have just signed up, or you find that you can no longer edit a page that you could edit before, please write to the pydotorg-www mailing list, stating your account name and your intended edits and we'll add you to the EditorsGroup.
Sorry for the inconvenience, but we want to keep this wiki a useful tool for the community, while at the same time need to prevent wiki admin burnout effects.
Bear with us.  We will continue balancing making the Wiki usable with also making it resistant to harmful changes by unregistered or malicious users.  Our great thanks go out to Marc-André Lemburg and the PyDotOrg team who rescued an almost completely vandalized Wiki using imperfect backups, and heroic efforts, back in 2013.

Run for the Board of Directors!

The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.
It’s that time of year again! The PSF annual election for its 2015 Board of Directors is currently seeking candidates.

But what exactly, you may ask, does the PSF Board do? Well, it turns out that the fulfillment of the above-quoted mission statement requires that they do quite a bit.
Basically, the directors manage all the business of the PSF. This includes appointing the PSF’s officers; holding and protecting Python’s intellectual property rights and licenses (the open source stack of licenses on the source code, all logos and trademarks); managing the budget and allocating funds; organizing and managing the annual PyCon North America (through the esteemed PyCon team); maintaining the PSF's legal status as a non-profit corporation (with all appropriate legal documents, such as articles of incorporation, bylaws, etc.); managing and maintaining the website and related resources; fundraising and obtaining sponsors; public relations; education and outreach; and membership management and services (and probably some other categories that I forgot).
There are 11 total seats available; Directors are elected annually for a term of one year. Directors need not be residents of the US, and they are not compensated for their work. See PSF ByLaws for more complete info.
If you or someone you know would like to run, i.e., do all of that extremely important work for free—although you will bask in glamor (glamour, if you’re British), glory, and gratitude, here’s the wiki for nominations: PSF Director Nominations.
At the moment, no deadlines have been set; I will provide that info as soon as it’s available.
Additional relevant info can be found at: PSF home pagePSF membership FAQ, and PSF members' wiki.
I would love to hear from readers. Please send feedback, comments, or blog ideas to me at