Monday, July 27, 2020

Abigail Dogbe Awarded the PSF Community Service Award for Q1 2020

Abigail Dogbe, lead organizer PyLadies Ghana and co-organizer of Pycon Africa 2019, has been awarded the Python Software Foundation Q1 2020 Community Service Award.

Abigail holds a Bachelor's Degree in Computer Science and Engineering from the prestigious University of Mines and Technology, Ghana.

RESOLVED, that the Python Software Foundation award the 2020 Q1 Community Service Award to Abigail Dogbe in recognition of her efforts with leading the PyLadies Ghana community, with helping organize PyCon Africa and volunteering for PyLadies global and PyCon US.

Origin Story - Abigail's Introduction to Programming

Abigail was introduced to programming at the University of Mines and Technology, Ghana. taking classes in Java, C++ and Visual Basic under the department of Computer Science and Engineering.

In 2017, Abigail attended a Django Girls workshop as a mentee. The goal of the workshop was to teach women how to build web apps using Django and Python.

It was that Django Girls workshop that introduced Abigail to the Python programming language. She was hooked to the simplicity of using Python to build web apps, compared to the other languages she had learnt in school.

Community Involvement - Teaching Other Women Python 

Abigail volunteered to serve as a coach at the next Django Girl workshop, held in September of 2017. And this heralded the setting up of the Python Ghana community, joining together the Pythonistas she met.

Together with her team, they travelled across Ghana, teaching women how to code. She was at the time the only woman on the team. This sparked her interests in getting more women as coaches for the Django girls.

Working with an amazing and supportive team, Abigail set up six different PyLadies chapters, each chapter working independently. They organize meetups and workshops focused on Python and other professioanl skills like how to speak at conferences.

The Python Ghana community evolved beyond workshops and meetups, to sharing of ideas and looking out for each other.

And that's what community is all about!

Abigail has also played pivotal roles in helping kickstart PyLadies communities in Ethiopa, Liberia, and Zambia.

In her words - 
I personnally look forward to helping more Pythonistas kickstart their Python communities.

Impact Stories

Abigail's active participation in the Python Ghana Community has helped move the goals and vision of the community forward, says Crystabell Atutonu, from PyLadies Tema.
Her vibrant activities in the Python software community in Ghana has helped in the smooth sailing of activities especially during the conferences held in Ghana. Her organizational skills is top notch bringing together everyone in the community to support activities.
Abigail is like a mother figure to us and personally, she has impacted my life in terms of my confidence in the tech field. She motivated me to give my first talk at PyCon Africa 2019, Accra. 
When you feel that you cannot accomplish something, Abigail already sees you doing it. And starts talking about it, as if you can do it! 
This motivates us a lot at PyLadies Ghana.

Road to 500 PyLadies in Ghana

Aseda Addai-Deseh went on to speak about how Abigail's dedication to the community has led to the involvement of over 500 women in the PyLadies Ghana community within 2 years.
Her innovative initiatives at PyLadies Ghana such as PyLadies Night (a WhatsApp group chat with a tech expert on a subject), Monday motivation (Monday motivational messages for the week), PyScrumble Friday (a fun Python puzzle every Friday), PyLadies #WCW (acknowledging outstanding women in the PyLadies Ghana community every Wednesday), Pythonic Tips and Tricks (short Python blogs) and PyLadies Field trips (trips to tech companies in Ghana to learn more about their work). 
PyLadies Ghana has seen a significant involvement of ladies in the tech community.  
PyLadies Ghana started with 32 ladies at our first meetup and has grown to involve over 500 ladies in a space of 2 years under Abigail's leadership.  
Her support for the PyLadies vision to help more women become active participants and leaders in the Python open-source community. She has seen to the establishment of PyLadies Ghana chapters in all major universities in Ghana.

Abigail Dogbe - Inspiring and Helping Women in Tech in Ghana to Grow

We asked Abigail what drives/inspires her into doing all that she does for the Python community.

She says -
I particularly have a keen interest in tech community building and I find joy in helping others grow in their career.
On women's participation in the developer community, how can more women be encouraged to be active in the community?

Abigail says -
Women's participation in the developer community keeps rising steadily. However, there is still need to focus on providing more platforms to these women in tech. 
To encourage women, we need to show and make role models and mentors accessible to them. I also believe that instilling confidence, supporting and creating room for networking with other women in tech will really be of great help. 
Another way is to make these things accessible to girls in primary, junior high and senior high schools by tackling the current gap between academic training and needs within the business community.
The Python Software Foundation congratulates and celebrates the amazing work and contributions of Abigail Dogbe to the Ghana Python community, and for inspiring PyLadies Ghana.

Friday, July 24, 2020

Python Software Foundation Fellow Members for Q2 2020

Let's give a round of applause to our newest PSF Fellow Members for Q2 2020!

Berker Peksag

David Lord
Twitter, GitHub, Website

Julien Palard
GitHub, Twitter, Mastodon:, Website

Kristian Glass
Twitter, Website

Marco Rougeth
Website, Twitter, GitHub

Roy Hyunjin Han
LinkedIn, Twitter, GitHub

Younggun Kim

Congratulations! Thank you for your continued contributions. We have added you to our Fellow roster online.

The above members have contributed to the Python ecosystem by teaching Python, maintaining Python libraries, creating education material, contributing to documentation, assisting with translations, contributing to and maintaining Python infrastructure, organizing Python events and conferences, starting Python communities in local regions, and overall being great mentors in our community. Each of them continues to help make Python more accessible around the world. To learn more about the new Fellow members, check out their links above.

Let's continue to recognize Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online: If you would like to nominate someone to be a PSF Fellow, please send a description of their Python accomplishments and their email address to psf-fellow at We are accepting nominations for quarter 3 through August 20, 2020.

Help Wanted!

The Fellow Work Group is looking for more members from all around the world! If you are a PSF Fellow and would like to help review nominations, please email us at psf-fellow at More information is available at:

Monday, July 13, 2020

Pip team midyear report

The grant-funded team working on improvements to pip in 2020 has now passed the halfway mark. Here's an update on where are so far and what's next.

Funding and Timeline Status

The plan that we proposed last year said that, by now, we would have finished Foundational work (Phase I) and Resolver work (Phase II), and the team would be doing Maintenance and Sustainability work (Phase III). Please see the timeline for user experience work and the timelines for development work.

We are behind where we had planned to be in the work roadmap. This is partially because the COVID-19 pandemic disrupted our work, but also because of policy and architecture decisions the project needed, and because foundational user experience research work has taken more time than we originally allotted. Thus, we have finished the Phase I and Phase II sections of the development work, and are approximately 75% of the way through the Phase I and Phase II user experience work. See below for accomplishments so far.

Funding: we predicted that we would be approximately 80% of the way through our one-year project budget (since the second half of the year has a slower work pace, primarily focusing on maintaining and deepening the work we started in the first half). We are now approximately 71% of the way through the budget, which gives us flexibility for the second half of the project.


  • pip's new dependency resolver is about to go into beta. We released pip 20.1 in April which included an alpha version of the new resolver (hidden behind an optional "--unstable-feature=resolver" flag, but usable). This month we will release pip 20.2, which will include a robust beta of the new resolver (hidden behind an optional "--use-feature=2020-resolver" flag) that we will encourage users to test.
  • User experience data-gathering included:
    • Administered 5 surveys to gather feedback about issues with the pip resolver and dependency management
    • Interviewed and/or did user tests with over 30 maintainers and users so far
  • UX findings and resulting improvements included:

Next steps

Phase III development work commences next month. We will continue to improve the pip dependency resolver in response to testers' feedback. This will help us prepare to release pip 20.3, with the new resolver on by default, in October. We'll also review and respond to code contributions and new issues, to keep up with the pip code and issue review queue, help new contributors develop into continuing contributors, and help existing contributors grow into co-maintainers.

And our user experience work will also enter Phase III, deepening and expanding foundational research in Python packaging. We will recruit more users for interviews and surveys, develop user journey maps & workflows, work with maintainers to write documentation and help messages, develop templates for UI bugs, commands, error messages, output, documentation, and configuration files, and teach pip maintainers UX practices.

For more info or to contribute:

We run this project as transparently as possible, so you can:

Thank you

Thanks to our contractors on this project: Nicole Harris, Bernard Tyers, and Georgia Bullen of Simply Secure; Pradyun Gedam; Ilan Schnell; Paul F. Moore of Atos; Tzu-ping Chung; Sumana Harihareswara of Changeset Consulting.
This award continues our relationship with Mozilla, which supported Python packaging tools with a Mozilla Open Source Support Award in 2017 for Warehouse. Thank you, Mozilla! (MOSS has a number of types of awards, which are open to different sorts of open source/free software projects. If your project is looking for financial support, do check the MOSS website to see if you qualify.)

This is new funding from the Chan Zuckerberg Initiative. This project is being made possible in part by a grant from the Chan Zuckerberg Initiative DAF, an advised fund of Silicon Valley Community Foundation. Thank you, CZI! (If your free software/open source project is used by biology researchers, check the Essential Open Source Software for Science Request for Applications and consider applying for the next round).

Thank you to the pip and PyPA maintainers, to the PSF and the Packaging WG, and to all the contributors and volunteers who work on or use Python packaging tools.

Wednesday, July 01, 2020

Announcing the PSF Project Funding Working Group

For the past 3 years, the PSF has been working on grant funded projects to improve our internal systems and platforms. This work has been done with the Packaging Working Group, and focused on our packaging ecosystem of PyPI and pip. We have been able to show that applying directed funding to open source projects has the ability to dramatically increase the speed of development, and move our community forward in a much more sustained way than relying solely on volunteer effort.

Along with the external grant funding of PSF projects, we have also committed PSF funds in the past to improve developments of community projects. This shows that the experience of directed funding is applicable to our community projects, as well as our own. An example here is the BeeWare project that was given funding via our Education Grants last year:

Another wonderful example has been a number of scientific Python projects that have raised large amounts of grant funding, mostly through NumFocus. They have been a large inspiration for our focus on grant funding as an important source of revenue for open source projects. The scientific open source community has been immeasurably improved by this funding, and we hope to expand this opportunity to the entire Python community.

Helping the community get funding

The PSF has created the Project Funding Working Group to help our community seek similar funding for their own projects. We hope to expand the amount of money going into the Python community as a whole, by providing resources and advice to projects who are interested in seeking funding from external sources.

Our charter starts with our intended purpose:

This Working Group researches, and advises Python community volunteers on applying for external grants and similar funding to advance the mission of the PSF, which includes, but is not limited to, things such as advancing the Python core, Python-related infrastructure, key Python projects, and Python education and awareness.
You can read the entire charter for more information about the vision for the group that we intend to build over the medium and long term.


In the short term, the first resource that we have put together is a list of potential funders that are applicable to our community. It’s on GitHub, and we welcome contributions to the list if you know of additional sources of funding. The other initial resource we are able to provide is advice, so if you have any questions about funding, you can email us at, and we will do our best to help. We can advise you on picking tasks to propose, making a budget, writing a proposal, and more.
We are excited about the possibilities for the Python community when we see more funding being applied to our mission. There is a lot of amazing open source software out there being built by volunteers, and we hope that giving them additional resources will create even more impact for our mission of advancing the Python community. 
-- Eric Holscher, co-chair, Project Funding Working Group

Friday, June 26, 2020

2020 Python Software Foundation Board of Directors Election Retrospective and Next Steps

With the 2020 Board of Directors Election Results announced, a new class of directors will officially be joining June 30th!
In light of the results and narrow margins, the Python Software Foundation (PSF) staff, incoming directors, existing directors, and community have already taken time to consider and discuss the participation and representation of our global community on the PSF Board of Directors. These facets are crucial to the long term direction and resilience of our community.
For now, the PSF staff would like to share information on participationrepresentation, and the next steps we plan to take to improve these facets of our membership.

Full Results

Nina Zakharenko263
Dustin Ingram249
Jeff Triplett240
Thomas Wouters237
Valeria Calderon234
Débora Azevedo219
Manuel Kaufmann217
Ngazetungue Muheue201
Mannie Young194
Maria Fernanda Petri Betto184
Iqbal Abdullah168
Shauna Gordon-McKeon148
Philip James116
Serah Rono111
Jason R. Coombs110
Agata Skamruk (Bublewicz)107
Sayantika Banik100
Nathan Epstein91
Amadikwa Joy N67
Asif Saif Uddin62
Rahul Chaudhary58
Adam Hopkins56
Emmanuel Essien26
Arunkumar Venkataramanan21
Ajayi Stephen16
Mohammad Razavi16


2019 Participation By Membership Class

Membership ClassEligibleVotedTurnout
Contributing or Managing47216535.0%

2020 Participation By Membership Class

Membership ClassEligibleVotedTurnout
Contributing or Managing55519134.4%
For definitions of each membership class, please see
* Note: Fellow membership increased 10% 2019 -> 2020 with the advent of the PSF Fellow Working Group
** Note: 2019 Supporting membership was partially disenfranchised, see next section.

Voter Disenfranchisement

In the process of administering this year's election we realized that 114 of 1151 voters were initially disenfranchised from this year's vote. In addition we were able to confirm that approximately the same number were disenfranchised from the 2019 vote due to the same issue.
While researching a missing ballot the election administrator discovered that a large number of Supporting members were missing from the 2020 voter roll.
When pulling information for Supporting members from our relationship management platform, we erred in overlooking that "Supporting with Yearly Renewal" memberships were not included when querying for "Supporting" memberships.
This excluded 125 members from our result and thus the voter roll. 11 of those members were already represented in other membership classes (Fellow, Contributing, Managing). The result was 114 disenfranchised voters.
For past years, we'll be working to retroactively to understand how long this has been affecting the voter roll. We've requested the voter rolls from past elections from the previous volunteer Election Administrator and will share analysis when we are able.
For 2020, ballots were issued for those voters 2 days into voting, and email notifications and reminders were sent so that they had a chance to vote, and have their votes counted. We have also updated our voter roll report and documentation to correctly query for all Supporting members moving forward.


After the results were published, an immediate question raised was "what do the demographics of our members and voters look like?".
This is not a new question among the PSF staff, directors, or community, but was particularly impassioned this year due to the extremely close margins. Especially given that the winning candidates (unlike the candidate pool) all reside in North America and Western Europe.
Bluntly, we do not have the data needed to answer this question accurately. Currently the only membership class we have any demographic information for is Supporting members, who constitute less than 25% of the voter roll, and that only includes their postal address.

Next steps

The PSF staff have already begun to discuss and formulate plans around the following:

Short term: Improved demographic information in Member profiles

The PSF staff and board understand that demographic information is highly sensitive and should not be needlessly collected. We are currently discussing and making plans for what demographic information may be added to membership profiles and if specific pieces of information will be voluntary or required.
Demographic information such as country of residence, years of experience with Python, and years of participation with the PSF will allow for us to better understand how the board represents our global membership. Most importantly it will allow us to track progress towards our goal to best represent our community over time.

Medium term: Consolidating membership management

Members may not realize that each membership class is currently managed in a set of disparate systems and processes:
  • Basic members sign up at
  • Supporting members donate at to sign up
  • Contributing and Managing members submit their certification via a Google form
  • Fellows are manually managed by PSF staff on
This regularly leads to headaches and confusion for everyone involved.
The PSF staff was planning to migrate to a new relationship management platform in 2020, but had to abandon this effort due to the financial outlook in the aftermath of the cancellation of PyCon 2020. Instead, we have renewed efforts to invest in our existing platform, CiviCRM. This will include consolidating all membership signups and management in one place: 
We hope that this will also improve the experience for new and existing members and empower the PSF staff to better answer questions about our members as a whole.

Long term: Reconsidering membership classes and benefits

Ideas for how we can best welcome members as well as any and all Python users globally are also being discussed and researched by the PSF staff. We will be assessing what barriers exist for new members and what helps to drive and retain participation of existing members. This process may include bylaws changes and user research. We hope to be able to share a timeline for this work as it develops.


We are grateful as an organization for each and every member of our community past, present, and future. We are excited to see the field for the board expanding to better represent our global community. We look forward to doing the work necessary to improve the membership experience of the Python Software Foundation and will be sharing more information over the coming months as the PSF staff and board better develop plans.

Thursday, June 18, 2020

2020 Python Software Foundation Board of Directors Election Results

The 2020 Python Software Foundation Board of Directors election has concluded.
Of 1,151 eligible voting members, 462 ballots were cast. This surpasses the necessary 1/3 quorum.
The four top votegetters via approval voting are:
  • Nina Zakharenko
  • Dustin Ingram
  • Jeff Triplett
  • Thomas Wouters
They will serve a three year term on the board.
No ties were necessary to break.
The full result is visible to elligible voters at using the same credentials as their ballot.
The Python Software Foundation thanks all the nominees, voting members, and the newly elected directors! The long term viability of our community relies on participation of our global membership.
If you would like to participate as a voter in the next election join as a Supporting, Contributing, or Managing member today! You can read more about the different classes at on

Thursday, May 14, 2020

Lightning Talks Part 2 - Python Language Summit 2020

Zac Hatfield-Dodds

Teaching Python with Errors

When a new coder begins learning Python, the first Python feature they usually see is SyntaxError. In Zac Hatfield-Dodds's experience, novices meet these errors practically as soon as they start typing, and they will spend most of their time over the following months struggling with them. Since experienced programmers rarely encounter syntax errors and easily fix them, the core team has not built very good tooling for them, and the official Python tutorial doesn't cover errors until Section 8. In any case, documentation is not the place to fix novices' user experience, since they don't know where to look for help. The only place to fix it is in CPython.

Read more 2020 Python Language Summit coverage.

SyntaxError does little to help a beginner. It directs their attention to the spot after the token that caused the error. In this example from the tutorial, the caret points at the last letter of print, but the coder's mistake was omitting a colon after True:
>>> while True print('Hello world')
  File "<stdin>", line 1
    while True print('Hello world')
SyntaxError: invalid syntax
Hatfield-Dodds proposed more precise errors that tell users about mismatched parentheses, unterminated string literals, missing commas and colons, and so on. Pablo Galindo Salgado said, via Zoom chat, that Python 3.8 has improved some error messages, for example:
>>> (1+3+4))
  File "<stdin>", line 1
SyntaxError: unmatched ')'
The new parser for 3.9 might improve error messages further, although in the short term it requires more work just to bring it to parity with the current parser.

Hatfield-Dodds suggested CPython could implement "did you mean..." for both SyntaxErrors and NameErrors, by fuzzily searching for replacements for typos. Incremental improvements to SyntaxError could be funded by educational institutions, he guessed, and would make a good project for contributors from outside the core team, if the core developers are willing to guide them. "I care a lot about this," said Hatfield-Dodds, and paused to let out a big exhale. "If people's first exposure to errors in Python is an error that tells them what the problem is and how to fix it, we might even convince them to read error messages in the future, which would be magical."

Jim Baker

State of Jython

"We are not dead yet!" said Jim Baker to the Language Summit. He admitted that "this is something I've said many times about Jython in the past." The project is certainly behind CPython—it has just published a bugfix release of 2.7, and Python 3 support is far off—but it is making progress nevertheless. "And again," said Baker, "our apologies."

Jython's previous bugfix release was nearly two years ago; the main topics of the latest version, Jython 2.7.2, were an overhaul Jython's PyJavaType objects, and solutions to deep race conditions. Baker said there is still an active user base for Jython based on the response to Jython's recent betas, but "capacity in the project is low." The project is currently led by Jeff Allen with two other regular contributors, none devoted to Jython full-time. Emeritus developers chip in occasionally. Baker hopes there will be more interest once Jython 3 ships, but he wrote in his slides, "the journey is unpredictable and resources are few."

There are several Python 3 implementations on the JVM, but none is ready to use. Isaiah Peng made a solo attempt at implementing Jython 3 in 2016-2017. It is too late now to resume this work, because Peng's branch didn't pull changes from the main Jython repository and they have now diverged too far. Baker said Jython should copy ideas from this prototype and credit Peng's work. Since 2016, Jeff Allen has been writing the Very Slow Jython Project, "a project to re-think implementation choices in the Jython core, through the gradual, narrated evolution of a toy implementation." Independently of the Jython team, Oracle is actively building an experimental Python 3 implementation on the Graal (pronounced "grail") JVM. "It's fantastic," said Baker, but unlike Jython "it doesn't do this beautiful subclassing of Java classes with Python classes."

The plan for Jython is to target the Python 3.8 language, including type hints. Baker has prototyped code to generate Python type hints from Java classes. The team will overhaul the core implementation using modern Java features, and continue to emphasize Jython's strengths: convenient integration with Java libraries, speed equal to CPython or better, and high concurrency (unlike CPython). Baker speculated that Jython 3.8's asyncio module could be built on the high-performance Netty library. He hopes that the new HPy API will take off, because it would simplify supporting C extensions from Jython.

Eric Holscher

Read the Docs features of interest

Holscher's presentation was an advertisement for nifty additions to ReadTheDocs, and an enticement to move CPython's documentation there.

ReadTheDocs recently added the hoverxref feature; when a reader hovers their cursor over a link in a documentation page, a tooltip shows the content of the linked section. Holscher has forked the CPython docs to host them on ReadTheDocs and demonstrate this feature's utility.
ReadTheDocs also has nicer pull request integration than the CPython repository does. Currently, when contributors offer pull requests to CPython, the patched documentation is available for download as a zip archive of HTML files. ReadTheDocs goes one better; its PR builder publishes the patched docs to the web for review. Search engines are blocked from indexing these docs, and each page displays a warning that it was created from a pull request. (After the Summit, at the core developers' request, the ReadTheDocs team enabled this feature for pull requests to the Python Developer Guide, which is hosted on ReadTheDocs.)

Finally, Holscher claimed that ReadTheDocs's text search is better than what CPython uses, which is generated by Sphinx. ReadTheDocs's search results include direct links to pages' subsections, and they provide search-as-you-type.

Sanyam Khurana commented via Zoom chat, "This looks very promising and amazing!" Pablo Galindo Salgado suggested hosting the PEPs on ReadTheDocs as well.

"Some of this is beta," said Holscher. Nevertheless, it's exciting to consider how much better the reader experience would be if CPython migrated. He argued that CPython should benefit from future improvements in ReadTheDocs, and ReadTheDocs should benefit from the attention of CPython developers. "We’ve talked about this in the past, there were blockers," he said, but the ReadTheDocs team has now addressed them.

Mariatta Wijaya

Make your life happier (with Zapier)

"I want you all to do more automation in your lives," said Mariatta Wijaya. She acknowledged that Zapier is her employer, but her intention was pure. "I know you're volunteering for open source. You should use more automation and save time."

For a demonstration, Wijaya showed the Zapier workflow she had used to invite attendees to the Language Summit. "You all received calendar invites for this event," she said. "I did not send them by going to Google Calendar." Instead, she collected names and email addresses in a Google spreadsheet. For each attendee, once she obtained a recording waiver and consent to the code of conduct, she put a "y" in the attendee's row in the spreadsheet. Her Zap then sent the invite automatically.

Earlier in the summit, some core developers had complained about the firehose of Discourse emails. Zapier has a Discourse integration that can manage this torrent. A user can create a "Zap" that takes new Discourse messages, filters them according to keywords or other attributes the user chooses, then triggers an email, Slack notification, or some other action. Wijaya also described how Zapier automates onboarding new PyLadies organizers.


"Well, we made it," said Łukasz Langa at the end of the second day of the videoconference. "I'm sorry it was not what a real Python Language Summit could have been, but I hope it was better than nothing." His co-organizer Mariatta Wijaya congratulated attendees from all over the globe for staying up. "I know this is past bed time for many of you." It was 8pm Pacific Time, the middle of the night for attendees in Europe and Africa, and the morning of the next day in Asia. She thanked the PSF and PyCon staff, and MongoDB for sponsoring the Summit.

Victor Stinner added, "Thanks TCP/IP for making this possible."

Sumana Harihareswara said, "This was real to me."

Wednesday, May 13, 2020

Call for Volunteers! Python GitHub Migration Work Group

Call for community volunteers! It is time to assemble a Python Work Group that will aid in Python’s migration to GitHub!
PEP 581 was accepted and Python is now starting to plan for the actual migration (per PEP 588)!
We are looking for volunteers to participate in a work group that will be involved with Python’s migration from to GitHub. We want to make sure the directions this migration takes represents what the community needs!
The transition will be completed with the assistance of GitHub’s team and the PSF will be contracting a Technical Project Manager to assist. Certain Steering Council members and PSF staff members will be part of this work group as well!
The work group will help review contractor resumes, weigh in on discussions, help guide decisions, help get community input, and have a close overview of the entire project. If you have experience with Roundup and GitHub we want to hear from you! We want to ensure that through this Work Group we have a wide range of users represented. The discussions and decisions will help mold what the final outcome will be.
Fill out this application form by May 27: We will reach out soon after.

6 Ways Salesforce Gets Things Done with Python

Salesforce Engineering puts Python to work across many areas of their business. 

Read on to see how they use python in machine learning, security, internal devops teams and more.

The Python programming language has strong ties to both engineering and science disciplines, which gives its users access to a wide number of libraries to solve both practical and theoretical problems. We put it to work across (our non-profit product arm), Heroku, Salesforce Einstein, Industries and Service Clouds, internal devops teams, and more.

Here are 6 things we use Python to do (and you can too!) through projects we’ve open sourced:

1. Conquer the Natural Language Decathlon by performing ten disparate natural language tasks (DecaNLP).

Deep learning has significantly improved state-of-the-art performance for natural language processing (NLP) tasks, but each one is typically studied in isolation. The Natural Language Decathlon (decaNLP) is a new benchmark for studying general NLP models that can perform a variety of complex, natural language tasks. By requiring a single system to perform ten disparate natural language tasks, decaNLP offers a unique setting for multitask, transfer, and continual learning.

2. Create SSL/TLS client fingerprints that are easy to produce on any platform and can be easily shared for threat intelligence (JA3).

JA3 gathers the decimal values of the bytes for the following fields in the Client Hello packet; SSL Version, Accepted Ciphers, List of Extensions, Elliptic Curves, and Elliptic Curve Formats. It then concatenates those values together in order, using a “,” to delimit each field and a “-” to delimit each value in each field.

3. Use Google Sheets like tables in code (pygsheetsorm).

Ever wanted to be able to use a Google Sheet like a table in your code? How about if you could get a list of objects that automatically mapped column headers into properties? Then this project is for you! This is a simple interface on top of pygsheets.

4. Get rid of silent errors in Perforce syncs (o4).

At Salesforce, we use Perforce at a very large scale. A scale that exposes some shortcomings in p4 itself. o4 was created to improve reliability of a sync and increase scalability in our very large-scale CI. What that boils down to is the rather horrendous reality that a p4 sync makes most of the changes to your local files. o4 allows you to continue using Perforce and all the associated tools and IDE plugins, without the uncertainty around a sync. Every sync is guaranteed perfect, every single time. In the rare occurrence that a sync could not be met to 100%, o4 will fail loudly. Crash and burn. No more silent errors! In addition to that, o4 allows some dramatic improvements to CI.

5. Automatically verify, de-duplicate, and suggest payouts for vulnerability reports through HackerOne (AutoTriageBot).

This bot can automatically verify reports about XSS, SQLi, and Open Redirect vulnerabilities (via both GET and POST). In addition, it is built in a modular manner so that it can be easily expanded to add tests for other classes of vulnerabilities.

6. Run continuous integration from the command line for Salesforce Managed Package applications (CumulusCI).

Out of the box, CumulusCI provides a complete best practice development and release process based on the processes used by to build and release managed packages to thousands of users. It offers a flexible and pluggable system for running tasks (single actions) and flows (sequences of tasks) and an OAuth-based org keychain allowing easy connection to Salesforce orgs and stored in local files using AES encryption.

.  .  .

Still want more Python? Check out all of the Salesforce Open Source projects built in Python on GitHub.


Laura Lindeman
Voracious reader & crafter of words. organizer extraordinaire. #peoplegeek at Salesforce on the Tech & Products Innovation & Learning team.