<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8520</id><updated>2023-11-18T06:07:56.331-05:00</updated><category term="pycon"/><category term="community"/><category term="community service awards"/><category term="pypi"/><category term="PSF"/><category term="award"/><category term="board"/><category term="grants"/><category term="open source"/><category term="election"/><category term="python"/><category term="conference"/><category term="education"/><category term="grant"/><category term="advocacy"/><category term="diversity"/><category term="development"/><category term="Board of Directors"/><category term="organization"/><category term="sponsorship"/><category term="democracy"/><category term="outreach"/><category term="sprints"/><category term="volunteer"/><category term="contributions"/><category term="membership"/><category term="nominations"/><category term="pip"/><category term="public relations"/><category term="service"/><category term="BBC"/><category term="deadlines"/><category term="edu-sig"/><category term="europython"/><category term="job board"/><category term="python 3.0"/><category term="summerofcode"/><category term="Caribbean"/><category term="children"/><category term="coding literacy"/><category term="donations"/><category term="events"/><category term="foundation"/><category term="meeting"/><category term="porting"/><category term="regional"/><category term="uk"/><category term="user groups"/><category term="usergroups advocacy"/><category term="volunteers"/><category term="CSA"/><category term="Cuba"/><category term="MicroPython"/><category term="PSF funding"/><category term="brochure"/><category term="call"/><category term="conferences"/><category term="ecosystem"/><category term="help"/><category term="infrastructure"/><category term="italy"/><category term="nominate"/><category term="non-profit"/><category term="opportunity"/><category term="oscon"/><category term="python3"/><category term="scipy"/><category term="support"/><category term="travel"/><category term="Asia-Pacific"/><category term="GHOP"/><category term="Google Summer of Code"/><category term="PyLadies"/><category term="Scientific Computing"/><category term="South America"/><category term="Working Group"/><category term="Young Coders"/><category term="arkansas"/><category term="documentation"/><category term="jobs"/><category term="micro:bit"/><category term="new zealand"/><category term="pycon2018"/><category term="request for proposals"/><category term="submissions"/><category term="winners"/><category term="2012"/><category term="Africa"/><category term="C"/><category term="CPython"/><category term="Call for Proposals"/><category term="Django Girls"/><category term="Dominican Republic"/><category term="Japan"/><category term="Memories of Lost Time"/><category term="NumFocus"/><category term="PyCaribbean"/><category term="PyOhio"/><category term="Santo Domingo"/><category term="Science"/><category term="ads"/><category term="aid"/><category term="assistance"/><category term="associate"/><category term="australia"/><category term="buildbot"/><category term="calendar"/><category term="canada"/><category term="codeofconduct"/><category term="conduct"/><category term="continuous integration"/><category term="director"/><category term="distinctive service award"/><category term="e-vote"/><category term="email"/><category term="employment"/><category term="france"/><category term="frank-willison. Young Coders"/><category term="fsf"/><category term="germany"/><category term="gsoc"/><category term="hardware"/><category term="hiring"/><category term="india"/><category term="kivy"/><category term="language"/><category term="linux journal"/><category term="marketing"/><category term="matplotlib"/><category term="mentoring"/><category term="microbit"/><category term="microsoft"/><category term="migration"/><category term="packaging"/><category term="poland"/><category term="print"/><category term="project"/><category term="pycon2011"/><category term="pycon2016"/><category term="pydotorg"/><category term="pypy"/><category term="quality"/><category term="readers choice"/><category term="setuptools"/><category term="sponso"/><category term="strategy"/><category term="students"/><category term="talks"/><category term="trademark"/><category term="tragedy"/><category term="tuf"/><category term="tutorials"/><category term="user experience"/><category term="videos"/><category term="voting"/><category term="women"/><category term="yearinreview"/><title type='text'>Python Software Foundation News</title><subtitle type='html'>  News from the Python Software Foundation</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://pyfound.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default?start-index=26&amp;max-results=25'/><author><name>Ee Durbin</name><uri>http://www.blogger.com/profile/13577459520968677064</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>618</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8520.post-1314232549547160450</id><published>2023-11-15T10:30:00.010-05:00</published><updated>2023-11-15T10:30:00.136-05:00</updated><title type='text'>It&#39;s time for our annual year-end PSF fundraiser and membership drive 🎉</title><content type='html'>&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;/h1&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Support Python in 2023!&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;hoverZoomLink&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz4n9OOGDNxxKBpoZ49U5yr28pNEYhm-zKvNRjs8Wo0JD6BrBKuAy5tR5Y3n-yNlSNPH3WSUbjHxYcw5mjOOm4mvjmQQfg8sOREJO9FpcdqmsUNKGQPZKclay1keOmzwgLczwGd5xtqDHUXfvECKTPEmZlX5K3lnUZGhW5-ONkZcciZb3hcw/s1200/Facebook_1200x630.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; class=&quot;hoverZoomLink&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1200&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz4n9OOGDNxxKBpoZ49U5yr28pNEYhm-zKvNRjs8Wo0JD6BrBKuAy5tR5Y3n-yNlSNPH3WSUbjHxYcw5mjOOm4mvjmQQfg8sOREJO9FpcdqmsUNKGQPZKclay1keOmzwgLczwGd5xtqDHUXfvECKTPEmZlX5K3lnUZGhW5-ONkZcciZb3hcw/w400-h210/Facebook_1200x630.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;For the fifth year in a row, the PSF is partnering with &lt;a href=&quot;https://www.jetbrains.com/&quot;&gt;JetBrains&lt;/a&gt; on our end-of-year fundraiser. Over that time, the partnership has raised a total of over $95,000. Amazing! Thank you, JetBrains, for all your support.&lt;br /&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;There are three ways to join in the drive this year:&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;https://lp.jetbrains.com/support-python/&quot;&gt;&lt;b&gt;Save on PyCharm!&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; JetBrains is once again supporting the PSF by providing a 30% discount on PyCharm and all proceeds will go to the PSF! You can take advantage of this discount by &lt;a href=&quot;https://lp.jetbrains.com/support-python/&quot;&gt;clicking the button on the page linked here&lt;/a&gt;, and the discount will be automatically applied when you check out. The promotion will only be available through November 27th, so go grab the deal today!&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;amp;id=49&quot;&gt;&lt;b&gt;Donate directly to the PSF!&lt;/b&gt;&lt;/a&gt; &lt;/span&gt;Every dollar makes a difference. (Does every dollar also make a puppy’s tail wag? We make no promises, but may you should try, just in case? 🐶)&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://psfmember.org/&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Become a member!&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; Sign up as a Supporting member of the PSF. Be a part of the PSF, and help us sustain what we do with your annual support.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Or, heck, why not do all three? 🥳&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Your Donations:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Keep Python thriving &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Invest directly in CPython and PyPI progress&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Bring the global Python community together&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Make our community more diverse and robust every year&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Let’s take a look back on 2023:&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;PyCon US&lt;/b&gt; - We held our &lt;a href=&quot;https://us.pycon.org/2023/&quot;&gt;20th PyCon US&lt;/a&gt;, in Salt Lake City and online, which was an exhilarating success! For the online component, PyCon US OX, we added two moderated online hallway tracks (in Spanish and English) and saw a 33% increase in virtual engagement. It was great to see everyone again in 2023, and we’re grateful to all the speakers, volunteers, attendees, and sponsors who made it such a special event.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Security Developer in Residence&lt;/b&gt; - Seth Larson joined the PSF earlier this year as our first ever Security Developer-in-Residence. Seth is already well-known to the Python community – he was named a PSF Fellow in 2022 and has already written a lot about Python and security on &lt;a href=&quot;https://sethmlarson.dev/blog&quot;&gt;his blog&lt;/a&gt;. This critical role would not be possible without funding from the OpenSSF &lt;a href=&quot;https://alpha-omega.dev/&quot;&gt;Alpha-Omega Project&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;PyPI Safety &amp;amp; Security Engineer &lt;/b&gt;- Mike Fiedler joined the PSF earlier this year as our first ever PyPI Safety &amp;amp; Security Engineer. Mike is already a dedicated member of the Python packaging community – he has been a Python user for some 15 years, maintains and contributes to open source, and became a PyPI Maintainer in 2022. You can see some of what he&#39;s achieved for PyPI already on the &lt;a href=&quot;https://blog.pypi.org/&quot;&gt;PyPI blog&lt;/a&gt;. This critical role would not be possible without funding from &lt;a href=&quot;https://aws.amazon.com/opensource/&quot;&gt;AWS&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Welcome, Marisa and Marie!&lt;/b&gt; - In 2023 we were able to add two new full time staff members to the PSF. Marisa Comacho joined as Community Events Manager and &lt;a href=&quot;https://pyfound.blogspot.com/2023/10/announcing-community-communications-mgr.html&quot;&gt;Marie Nordin joined&lt;/a&gt; as Community Communications Manager. We are excited to add two full time dedicated staff members to the PSF to support PyCon US, our communications, and the community as a whole. &amp;nbsp;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;CPython Developer in Residence&lt;/b&gt; - Our CPython Developer in Residence, Łukasz Langa, continued to provide trusted support and advancement of the Python language, including oversight for the releases of Python 3.8 and 3.9, adoption of Sigstore, and stewardship of PEP 703 (to name a few of many!). Łukasz also engaged with the community by orchestrating the &lt;a href=&quot;https://us.pycon.org/2023/events/language-summit/&quot;&gt;Python Language Summit&lt;/a&gt; and participating in events such as &lt;a href=&quot;https://us.pycon.org/2023/&quot;&gt;PyCon US 2023&lt;/a&gt;, &lt;a href=&quot;https://ep2023.europython.eu/&quot;&gt;EuroPython&lt;/a&gt;, and &lt;a href=&quot;https://2023.pycon.co/&quot;&gt;PyCon Colombia&lt;/a&gt;. This critical role would not be possible without funding from &lt;a href=&quot;https://about.facebook.com/meta/&quot;&gt;Meta&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Authorized as CVE Numbering Authority (CNA)&lt;/b&gt; - Being authorized as a CNA is one milestone in the Python Software Foundation&#39;s strategy to improve the vulnerability response processes of critical projects in the Python ecosystem. The &lt;a href=&quot;https://www.cve.org/PartnerInformation/ListofPartners/partner/PSF&quot;&gt;Python Software Foundation CNA scope&lt;/a&gt; covers &lt;a href=&quot;https://github.com/python/cpython&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;https://github.com/pypa/pip&quot;&gt;pip&lt;/a&gt;, two projects which are fundamental to the rest of Python ecosystem.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Five new Fiscal Sponsorees&lt;/b&gt; - Welcome to &lt;a href=&quot;https://github.com/PyCQA/bandit&quot;&gt;Bandit&lt;/a&gt;, &lt;a href=&quot;https://www.bapya.org/&quot;&gt;BaPya&lt;/a&gt;, &lt;a href=&quot;https://twisted.org/&quot;&gt;Twisted&lt;/a&gt;, &lt;a href=&quot;https://www.pyohio.org/2023/&quot;&gt;PyOhio&lt;/a&gt;, and &lt;a href=&quot;https://2023.northbaypython.org/&quot;&gt;North Bay Python&lt;/a&gt; as new Fiscal Sponsorees of the PSF! The PSF provides 501(c)(3) tax-exempt status to fiscal sponsorees and provides back office support so they can focus on their missions.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;hoverZoomLink&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EX0yXqOYNuAGcsuRsJX2wp9TzgU6azoLrCDh9utYsik4eyzjknOM_iUB32yQpkdfpIQlOs5USdc5jxI7J4t_X5Ph55VJSTlWJfqi-4U4NDIwL1lff1s-19VLv-ida4AWNw9-eMz14fdejA74vJzpbLginaeR34p7ydwgVd9LEfBcOmxOxg/s1139/fundraiser_membership_drive_small.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; class=&quot;hoverZoomLink&quot; data-original-height=&quot;576&quot; data-original-width=&quot;1139&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EX0yXqOYNuAGcsuRsJX2wp9TzgU6azoLrCDh9utYsik4eyzjknOM_iUB32yQpkdfpIQlOs5USdc5jxI7J4t_X5Ph55VJSTlWJfqi-4U4NDIwL1lff1s-19VLv-ida4AWNw9-eMz14fdejA74vJzpbLginaeR34p7ydwgVd9LEfBcOmxOxg/w400-h203/fundraiser_membership_drive_small.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Our Thanks:&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Thank you for being a part of this drive and of the Python community! Keep an eye on this space and on our social media in the coming weeks for updates on the drive and the PSF 👀&lt;br /&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;Your support means the world to us. We’re incredibly grateful to be in community with you! &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/1314232549547160450'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/1314232549547160450'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/11/support-python-q4-2023.html' title='It&#39;s time for our annual year-end PSF fundraiser and membership drive 🎉'/><author><name>Marie Nordin</name><uri>http://www.blogger.com/profile/15138793242213676112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz4n9OOGDNxxKBpoZ49U5yr28pNEYhm-zKvNRjs8Wo0JD6BrBKuAy5tR5Y3n-yNlSNPH3WSUbjHxYcw5mjOOm4mvjmQQfg8sOREJO9FpcdqmsUNKGQPZKclay1keOmzwgLczwGd5xtqDHUXfvECKTPEmZlX5K3lnUZGhW5-ONkZcciZb3hcw/s72-w400-h210-c/Facebook_1200x630.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8520.post-1930532307424447964</id><published>2023-11-09T18:00:00.022-05:00</published><updated>2023-11-09T18:00:00.135-05:00</updated><title type='text'>The Python Sofware Foundation receives the Wonderfully Welcoming Award from GitHub!</title><content type='html'>[November 9th, 2023] - The Python Software Foundation is delighted to announce that we are a recipient of a GitHub Award under the Wonderfully Welcoming category, awarded on November 9th at &lt;a href=&quot;https://githubuniverse.com/&quot;&gt;GitHub Universe 2023&lt;/a&gt; in San Francisco, CA, USA. This award exemplifies all the Python community strives to be—enthusiastic, dedicated to encouraging use of the language, and committed to building a diverse and friendly community. We are proud of the Python community for embodying our values on GitHub and this award truly belongs to every contributor. We’re incredibly grateful to be in community with you. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://github.blog/2023-11-09-celebrating-the-github-awards-2023-recipients&quot;&gt;GitHub shares&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;The GitHub Awards celebrates the outstanding contributions and achievements in the developer community by honoring individuals, projects, and organizations for creating an outsized positive impact on the community.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.python.org/psf-landing/&quot;&gt;Python Software Foundation &lt;/a&gt;(&lt;a href=&quot;https://github.com/psf&quot;&gt;@psf&lt;/a&gt;) is not just a hub for Python development; it&#39;s a community that embraces diversity and inclusion at its core. Through initiatives like PyCon Charlas, PSF breaks language barriers, providing a platform for Spanish-speaking contributors. It also champions gender diversity by backing the pioneering PyLadiesCon. &lt;br /&gt;&lt;br /&gt;Above all, the PSF is committed to a respectful and safe community experience, fortified by a strong &lt;a href=&quot;https://www.python.org/psf/conduct/&quot;&gt;Code of Conduct&lt;/a&gt;. It also extends accessibility through captioning and is vigilant about health and safety measures. At PSF, it&#39;s not just about code; it&#39;s about the people behind it.&lt;br /&gt;&lt;br /&gt;The Wonderfully Welcoming Award recognizes people or projects that have been the most welcoming and seen an increasing amount of contributors.&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;The PSF Executive Director, Deb Nicholson, states: &lt;i&gt;“We believe that empowering new participants is key to the growth and success of the open source movement. We want to thank GitHub for shining a spotlight on the human side of open source community work.” &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Python Software Foundation is a non-profit membership organization devoted to advancing open source technology related to the Python programming language. Our mission 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.&lt;br /&gt;&lt;br /&gt;If you would like to help advance our mission, please consider supporting us &lt;a href=&quot;https://www.python.org/psf/donations/&quot;&gt;with a donation&lt;/a&gt;!&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/1930532307424447964'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/1930532307424447964'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/11/psf-wonderfully-welcoming-award-github.html' title='The Python Sofware Foundation receives the Wonderfully Welcoming Award from GitHub!'/><author><name>Marie Nordin</name><uri>http://www.blogger.com/profile/15138793242213676112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-7442574315738088516</id><published>2023-11-08T14:51:00.002-05:00</published><updated>2023-11-08T14:51:54.859-05:00</updated><title type='text'>Join the Python Developers Survey 2023: Share and learn about the community!</title><content type='html'>&lt;p&gt;&lt;style type=&quot;text/css&quot;&gt;td {border: 1px solid #cccccc;}br {mso-data-placement:same-cell;}&lt;/style&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&amp;nbsp;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. &lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;We encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;hoverZoomLink&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOuNIzVTdqffnS_Gwvcw0H5kLspjnCUjSwVY2RXMBnTvWVdRpBWqzDBgaN9nU3lmoEyxk8J8GCnlrw-tGNeO5hI88lSm3Kq8EJaSZhXiC4X8zlWkDXjEWshbq6Ft47YSwOot0huASY4HttDdo2V72CauCJa5iG3wsU-ZfYMsWKmSJKUhK2mg/s1200/Facebook_1200x630.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; class=&quot;hoverZoomLink&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1200&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOuNIzVTdqffnS_Gwvcw0H5kLspjnCUjSwVY2RXMBnTvWVdRpBWqzDBgaN9nU3lmoEyxk8J8GCnlrw-tGNeO5hI88lSm3Kq8EJaSZhXiC4X8zlWkDXjEWshbq6Ft47YSwOot0huASY4HttDdo2V72CauCJa5iG3wsU-ZfYMsWKmSJKUhK2mg/w384-h201/Facebook_1200x630.png&quot; width=&quot;384&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans, Arial; font-style: normal;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Open Sans, Arial; font-style: normal; text-decoration-skip-ink: none; text-decoration: underline;&quot;&gt;&lt;a class=&quot;in-cell-link&quot; href=&quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Contribute to the Python Developers Survey 2023!&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-sheets-hyperlinkruns=&quot;{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:&amp;quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&amp;quot;}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:&amp;quot;https://www.python.org/psf-landing/&amp;quot;}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:&amp;quot;https://www.jetbrains.com/&amp;quot;}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:536,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:586}{&amp;quot;1&amp;quot;:637,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:663}{&amp;quot;1&amp;quot;:668,&amp;quot;2&amp;quot;:{&amp;quot;2&amp;quot;:{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:1136076},&amp;quot;9&amp;quot;:1}}{&amp;quot;1&amp;quot;:677}&quot; data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:1053441,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;11&amp;quot;:4,&amp;quot;12&amp;quot;:0,&amp;quot;15&amp;quot;:&amp;quot;Open Sans&amp;quot;,&amp;quot;23&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;This year we are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year’s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. \n\nWe encourage you to contribute to our community’s knowledge by sharing your experience and perspective. Your participation is valued! The survey should only take you about 10-15 minutes to complete.\n\nContribute to the Python Developers Survey 2023!\n\nThe survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&amp;quot;}&quot; style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; color: #1155cc; font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal; text-decoration-skip-ink: none; text-decoration: underline;&quot;&gt;&lt;a class=&quot;in-cell-link&quot; href=&quot;https://survey.alchemer.com/s3/7554174/python-developers-survey-2023&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;The survey is organized in partnership between the &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; color: #1155cc; font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal; text-decoration-skip-ink: none; text-decoration: underline;&quot;&gt;&lt;a class=&quot;in-cell-link&quot; href=&quot;https://www.python.org/psf-landing/&quot; target=&quot;_blank&quot;&gt;Python Software Foundation&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; color: #1155cc; font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal; text-decoration-skip-ink: none; text-decoration: underline;&quot;&gt;&lt;a class=&quot;in-cell-link&quot; href=&quot;https://www.jetbrains.com/&quot; target=&quot;_blank&quot;&gt;JetBrains&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Open Sans,Arial; font-size: 10pt; font-style: normal; font-weight: normal;&quot;&gt;. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;hzImg&quot; style=&quot;background-color: white; border-radius: 4px; border: 4px solid rgb(255, 255, 255); box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 3px; cursor: pointer; display: none; height: auto; left: 5px; line-height: 0px; margin: 4px; opacity: 1; overflow: hidden; padding: 0px; pointer-events: none; position: absolute; top: 259px; visibility: visible; width: auto; z-index: 2147483647;&quot;&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7442574315738088516'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7442574315738088516'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/11/join-python-developers-survey-2023.html' title='Join the Python Developers Survey 2023: Share and learn about the community!'/><author><name>Marie Nordin</name><uri>http://www.blogger.com/profile/15138793242213676112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOuNIzVTdqffnS_Gwvcw0H5kLspjnCUjSwVY2RXMBnTvWVdRpBWqzDBgaN9nU3lmoEyxk8J8GCnlrw-tGNeO5hI88lSm3Kq8EJaSZhXiC4X8zlWkDXjEWshbq6Ft47YSwOot0huASY4HttDdo2V72CauCJa5iG3wsU-ZfYMsWKmSJKUhK2mg/s72-w384-h201-c/Facebook_1200x630.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4259208832320802935</id><published>2023-10-27T12:13:00.000-04:00</published><updated>2023-10-27T12:13:42.481-04:00</updated><title type='text'>Announcing our new Community Communications Manager!</title><content type='html'>&lt;p&gt;We &lt;a href=&quot;https://fosstodon.org/@ThePSF/110498521981281969&quot;&gt;announced our search&lt;/a&gt; for our first Community Communications Manager back in June, and after a thorough search, we are beyond excited to announce that &lt;a href=&quot;https://www.linkedin.com/in/mariecnordin&quot;&gt;Marie Nordin&lt;/a&gt; is the newest addition to our team! Reporting to Loren Crary, Director of Resource Development, Marie joins the PSF as a longtime contributor in Open Source, an experienced community organizer, and an enthusiastic communicator. &lt;br /&gt;&lt;br /&gt;Marie will be responsible for establishing a PSF communications calendar, including annual messaging, newsletters, and blog posts. She will also partner with our Executive Director, Deb Nicholson, and other staffers to enhance our support for the Python community with a variety of initiatives. As the first Community Communications Manager at the PSF, Marie’s work will be made up of both routine and experimental projects, as well as helping to fill some of the gaps in our tiny but mighty team.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXW-159xbJPSdd842X_pzFSPAgB9gm1vhPipNJAnq4vCdc4LaE2WeoUM2j-Dmf9GAj47QwDwN52UqXXyASgPSWj9Itti5RdBmW2OhENCw-I4iInbl4uq903FluqlVBgmRPHVH7syI39rZtkFdBWH3FmpaXuDqVl3RzeJZDqA7aY0ZqZ-nWI9g&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;A very nice photo of Marie Nordin&quot; data-original-height=&quot;2789&quot; data-original-width=&quot;2193&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXW-159xbJPSdd842X_pzFSPAgB9gm1vhPipNJAnq4vCdc4LaE2WeoUM2j-Dmf9GAj47QwDwN52UqXXyASgPSWj9Itti5RdBmW2OhENCw-I4iInbl4uq903FluqlVBgmRPHVH7syI39rZtkFdBWH3FmpaXuDqVl3RzeJZDqA7aY0ZqZ-nWI9g=w252-h320&quot; width=&quot;252&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Marie shares, “&lt;i&gt;I’m thrilled to join the PSF team to help amplify the stories and voices of the Python community. I look forward to learning, supporting, and connecting with you all!&lt;/i&gt;” &lt;br /&gt;&lt;br /&gt;Marie has a background in community architecture, project/program management, Code of Conduct, and graphic design. A Visual Media graduate from the &lt;a href=&quot;https://www.rit.edu/&quot;&gt;Rochester Institute of Technology&lt;/a&gt;, she first learned of Free and Open Source Software and culture at &lt;a href=&quot;https://www.rit.edu/research/open&quot;&gt;Open@RIT&lt;/a&gt;. Marie went on to become an &lt;a href=&quot;https://www.outreachy.org/&quot;&gt;Outreachy&lt;/a&gt; intern in 2013 for the &lt;a href=&quot;https://fedoraproject.org/&quot;&gt;Fedora Project&lt;/a&gt; working on &lt;a href=&quot;https://badges.fedoraproject.org/&quot;&gt;Fedora Badges&lt;/a&gt; design. After six years of contributing to Fedora in various parts of the project, Marie joined &lt;a href=&quot;https://www.redhat.com/en/blog/channel/red-hat-open-source-program-office&quot;&gt;Red Hat’s Open Source Program Office&lt;/a&gt; as the &lt;a href=&quot;https://docs.fedoraproject.org/en-US/council/fca/#previous&quot;&gt;Fedora Community Action and Impact Coordinator&lt;/a&gt; and later on as a Code of Conduct Specialist. &lt;br /&gt;&lt;br /&gt;We hope everyone in the Python community will join us in welcoming Marie with ideas and collaboration as she settles in. We are very happy to be able to add a staff member dedicated full-time to such important aspects of our work, and we feel very fortunate to have found someone with Marie&#39;s wealth of experience and skills to take on this new role. We&#39;re excited to see what Marie can achieve together with the PSF and the Python community! &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4259208832320802935'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4259208832320802935'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/10/announcing-community-communications-mgr.html' title='Announcing our new Community Communications Manager!'/><author><name>Loren Crary</name><uri>http://www.blogger.com/profile/06125752284896762014</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2AcMmDLDWxEuhuvXW351Zu80hAxm9SbDI2ANl_Tfx4dG8r--fPmO_0x5lPGrRijT-c2EDChrojKOellhEw5P7WJnQRQDXTOh-IAj55Z8xZfwtvf4LnGS0RR64H57ltY/s220/Loren+candid+.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhXW-159xbJPSdd842X_pzFSPAgB9gm1vhPipNJAnq4vCdc4LaE2WeoUM2j-Dmf9GAj47QwDwN52UqXXyASgPSWj9Itti5RdBmW2OhENCw-I4iInbl4uq903FluqlVBgmRPHVH7syI39rZtkFdBWH3FmpaXuDqVl3RzeJZDqA7aY0ZqZ-nWI9g=s72-w252-h320-c" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4899514588353763958</id><published>2023-10-20T11:16:00.000-04:00</published><updated>2023-10-20T11:16:42.322-04:00</updated><title type='text'>September &amp; October Board Votes</title><content type='html'>&lt;p&gt;We’re writing today because we know the process of the PSF Board’s review of DjangoCon Africa’s recent grant application caused concern, disappointment, and confusion for some of our community. We want to take time to explain that process clearly, and how we plan to improve moving forward. &lt;br /&gt;&lt;/p&gt;First of all, we’re pleased to say that on October 11th the PSF Board voted to approve DjangoCon Africa’s $9,000 grant request. We’re wishing lots of luck to the organizers and everyone involved–&lt;a href=&quot;https://2023.djangocon.africa/&quot;&gt;check it out here&lt;/a&gt;! DjangoCon Africa is a community-run event that will take place for the first time this year November 6-11 in Zanzibar, Tanzania. &lt;br /&gt;&lt;br /&gt;If you are reading this, you probably already know that the PSF runs a grants program that disperses funds to Python events and groups, (&lt;a href=&quot;https://www.python.org/psf/grants/&quot;&gt;info on how to apply for your own event here&lt;/a&gt;). Last year we gave out $215,000 to 138 groups in 42 countries. For the majority of grants, the decision of whether or not to fund a grant request is made by consensus by the Grants Working Group, which is made up of volunteers from the community (huge thanks always due to them for what they do.) Some grants require the Board to review and vote on them instead: grant requests over $10,000; grants with a per person per day cost greater than $15; and grants that the Grants Working Group can’t reach a consensus decision on. &lt;br /&gt;&lt;br /&gt;Because after discussion the working group couldn’t reach a consensus on the DjangoCon Africa request, it came to the Board for a vote instead. The Board first discussed the request in our September meeting, however the resolution to grant the request didn’t pass because the majority of directors abstained (6 abstentions, 4 yes votes, 0 no votes). The board members who abstained had a variety of reasons, including our Board Chair who was required to abstain because she is an organizer of DjangoCon Africa; others had open questions about the details of the grant request (e.g. related to budget) that we didn’t have time to resolve or had concerns about how to best support our community members with respect to safety, security and equity in the context of international events taking place in jurisdictions with laws that are harmful to certain community members (in this case, the criminalization of homosexuality in Tanzania) but not wanting to apply a new rule unfairly to this event. The reason for each board member&#39;s vote is always as nuanced as the board member casting it each time a vote comes to decision. In this case, it was agreed that there was not sufficient time in the board meeting to review the merits of the application, which bears no fault of the DjangoCon Africa organizing team. &lt;br /&gt;&lt;br /&gt;The request came back in front of the Board for our October meeting, at which point we’d been able to get more information, time to review, and read letters on the event&#39;s impact. This vote passed (1 abstention, 10 yes votes, 0 no votes), which we believe reflects the values of an informed Board working together. We’re thrilled to be able to support the Django and Python communities in Africa in general and in Tanzania in particular, and especially for what is shaping up to be a great new annual event. Every decision made, with or without feedback from the community, affects dozens to hundreds to thousands of Pythonistas and the Board is always cognizant that our desire to provide timely, enthusiastic support must be balanced with the responsibility to steward funds carefully and fairly.  &lt;br /&gt;&lt;br /&gt;Because of the harm expressed in the community due to the Board’s process, we will be conducting a retrospective on this process specifically and the Board&#39;s approach to grants in general. To be completely clear, the points that will be discussed in our retrospective have everything to do with process improvements and event inclusivity and nothing to do with the merits of the event in question. We’re likely to address process issues in the short term and strategy over a longer period of time. The discussed topics are likely to include, but are not limited to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The PSF&#39;s approach to grant making in general&lt;/li&gt;&lt;li&gt;How to best serve the global community, especially marginalized members for whom safety can be a concern when traveling &lt;/li&gt;&lt;li&gt;Parliamentary procedures&lt;/li&gt;&lt;/ul&gt;We value community perspective. If you would like to share any thoughts or feelings on this topic, please feel free to share your thoughts – anonymously if you prefer – &lt;a href=&quot;https://forms.gle/v7rJYsnQJAY5ewvt5&quot;&gt;via this form&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Once complete, our retrospective can be found in our &lt;a href=&quot;https://www.python.org/psf/records/board/minutes/&quot;&gt;meeting minutes archive&lt;/a&gt; along with the minutes for all of the board&#39;s previous meetings. &lt;br /&gt;&lt;br /&gt;Thank you for helping us make the Python community the best it can be, &lt;br /&gt;The PSF Board of Directors</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4899514588353763958'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4899514588353763958'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/10/september-october-board-votes.html' title='September &amp; October Board Votes'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-8152679974540990831</id><published>2023-10-17T14:00:00.005-04:00</published><updated>2023-10-17T15:06:56.084-04:00</updated><title type='text'>Security Developer-in-Residence 2023 Q3 Report</title><content type='html'>&lt;p&gt;It’s been three months since I was first hired as the inaugural Security Developer-in-Residence. I’m quite proud of what I’ve accomplished so far and think it shows the value of investing into the security of Open Source through hiring folks to work full-time in roles like “Developer-in-Residence” programs. I’m thankful to the &lt;a href=&quot;https://alpha-omega.dev/&quot;&gt;Alpha-Omega project at OpenSSF&lt;/a&gt; for funding this work. Let’s review all of the accomplishments in the first quarter of this role and what to look forward to in the next quarter.&lt;br /&gt;&lt;br /&gt;If you’d like to follow along with my work more closely you can subscribe to my &lt;a href=&quot;https://sethmlarson.dev/blog#archive&quot;&gt;personal blog&lt;/a&gt; where I publish &lt;a href=&quot;https://sethmlarson.dev/security-developer-in-residence-weekly-report-13&quot;&gt;weekly updates&lt;/a&gt; about the work I’m doing. If you have questions or thoughts about what I’m working on you can contact me via email: &lt;a href=&quot;mailto:seth@python.org&quot;&gt;seth@python.org&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;The Python Software Foundation authorized as a CVE Numbering Authority (CNA)&lt;/h2&gt;&lt;p&gt;Back in late August the Python Software Foundation received notice that we’d successfully completed onboarding and had been &lt;a href=&quot;https://pyfound.blogspot.com/2023/08/psf-authorized-as-cna.html&quot;&gt;authorized by CVE as a CVE Numbering Authority&lt;/a&gt; or “CNA”. The &lt;a href=&quot;https://www.cve.org/PartnerInformation/ListofPartners/partner/PSF&quot;&gt;Python Software Foundation CNA scope&lt;/a&gt; covers Python and pip, two projects which are fundamental to the rest of the Python ecosystem.&lt;br /&gt;&lt;br /&gt;Being a CNA means that the PSF can offer staffing to improve the sustainability and responsiveness of coordination and vulnerability disclosure work for covered projects. The PSF CNA also provides &lt;a href=&quot;https://osv.dev/vulnerability/PSF-2023-8&quot;&gt;rich metadata for CVE records and advisories&lt;/a&gt;, including remediation information, so upgrading or patching for vulnerabilities is as straightforward as possible for downstream users of Python.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;CPython vulnerability advisories available in Open Source Vulnerability database&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The Python Software Foundation now hosts a &lt;a href=&quot;https://github.com/psf/advisory-database&quot;&gt;vulnerability database on GitHub&lt;/a&gt; using the &lt;a href=&quot;https://ossf.github.io/osv-schema/&quot;&gt;Open Source Vulnerability format&lt;/a&gt; (OSV). This database contains vulnerability information for CPython in addition to vulnerabilities getting published to the security-announce@python.org mailing list. The historical vulnerability information was sourced from Victor Stinner’s “&lt;a href=&quot;https://python-security.readthedocs.io/&quot;&gt;python-security&lt;/a&gt;” project in order to provide a complete history of vulnerabilities in CPython.&lt;br /&gt;&lt;br /&gt;By using the OSV format the vulnerabilities can be ingested and processed by the Open Source Vulnerability database which can be searched or &lt;a href=&quot;https://google.github.io/osv.dev/api/&quot;&gt;queried using an API&lt;/a&gt; for machine-consumable vulnerability information. &lt;br /&gt;&lt;br /&gt;Having vulnerability information in a machine-consumable format enables tools that scan software deployments for vulnerabilities to easily provide accurate and automatically updated reports for CPython. The Open Source Vulnerability database also is more discoverable compared to the CVE database, having a readily available public API to query for vulnerabilities, products, and versions.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Python Security Response Team&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;I have been helping coordinate reports to the &lt;a href=&quot;https://www.python.org/dev/security/&quot;&gt;Python Security Response Team&lt;/a&gt; (PSRT) since joining the role. This work includes reviewing all reports, gathering information from reporters, discussing timelines, and working with core developers to create and release fixes and advisories in a coordinated manner. I also worked with CVE to get CVE IDs assigned on behalf of reports before the PSF was designated as a CNA.&lt;br /&gt;&lt;br /&gt;I revitalized the &lt;a href=&quot;https://mail.python.org/mailman3/lists/security-announce.python.org/&quot;&gt;security-announce@python.org mailing list&lt;/a&gt; to use for future advisory announcements so interested parties can be notified as soon as new vulnerabilities are published (subscribe to the linked list if you’d like to receive these). I coordinated the two recent vulnerabilities affecting CPython (&lt;a href=&quot;https://osv.dev/vulnerability/PSF-2023-8&quot;&gt;CVE-2023-40217&lt;/a&gt; and &lt;a href=&quot;https://osv.dev/vulnerability/PSF-2023-9&quot;&gt;CVE-2023-41105&lt;/a&gt;) end-to-end from report to published advisory.&lt;br /&gt;&lt;br /&gt;Doing this coordination work frees up volunteers on the PSRT to focus on determining whether a report is a vulnerability and working on fixes. I’m also working to further reduce the manual coordination work required by PSRT by moving the reporting and triage process to GitHub using GitHub Security Advisories.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;OpenSSF Day Europe 2023&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;I co-presented a talk titled “&lt;a href=&quot;https://sched.co/1P6TW&quot;&gt;We Make Python Safer than Ever&lt;/a&gt;” at OpenSSF Day Europe 2023 with PSF Board Member and OpenSSF Community Manager Cheuk Ting-Ho. The &lt;a href=&quot;https://static.sched.com/hosted_files/openssfdayeu2023/a3/Final%20-%20OpenSSF%20Day%20Europe%202023.pdf&quot;&gt;slides are available for download&lt;/a&gt; and the &lt;a href=&quot;https://www.youtube.com/watch?v=jhzv5RU56V4&quot;&gt;talk recording is available to watch on YouTube&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The talk introduced the Security Developer-in-Residence role, went over the challenges that are unique to securing Open Source and Python ecosystems, described completed and future projects to make the Python ecosystem more secure, and gave a list of items that viewers themselves could do right away to make their own usage of Python more secure.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Sigstore signatures for Python release artifacts&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Python releases include signatures from the Release Managers using the signing tool “&lt;a href=&quot;https://www.sigstore.dev/&quot;&gt;Sigstore&lt;/a&gt;”. These signatures mean you can be sure that a given release artifact wasn’t tampered with and was created and vetted by the Release Manager for a given Python release.&lt;br /&gt;&lt;br /&gt;I did an audit of existing signatures and &lt;a href=&quot;https://github.com/sigstore/sigstore-python/issues/600#issuecomment-1634961707&quot;&gt;found some discrepancies&lt;/a&gt; between the documented identities and providers and what was published for each release. I worked with Release Managers to fix the discrepancies and &lt;a href=&quot;https://github.com/python/release-tools/pull/51&quot;&gt;added extra safeguards&lt;/a&gt; to release tooling to ensure signatures are verifiable as documented. I also was able to back-fill the &lt;a href=&quot;https://github.com/python/pythondotorg/issues/2300&quot;&gt;new Sigstore signature format&lt;/a&gt; from existing verification materials to make verifying signatures even easier!&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ python -m sigstore verify identity \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --bundle Python-3.12.0.tgz.sigstore \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --cert-identity thomas@python.org \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --cert-oidc-issuer https://accounts.google.com \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Python-3.12.0.tgz&lt;/span&gt;&lt;/blockquote&gt;Having consistent artifact signatures is important because any discrepancies while consuming these signatures should raise red flags for downstream users and redistributors. This also helps build confidence in the new signing method over existing methods like GPG.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Adoption of system trust stores via Truststore&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;There are three packaging tools (pip, PDM, and Conda) that are important to the Python ecosystem that are at various stages of adopting “Truststore”, a library that I authored prior to joining the PSF to enable Python projects to use system trust stores for verifying HTTPS certificates instead of relying on certifi for certificates.&lt;br /&gt;&lt;br /&gt;PDM has started using Truststore by default starting in &lt;a href=&quot;https://github.com/pdm-project/pdm/releases/tag/2.9.0&quot;&gt;v2.9.0&lt;/a&gt;, Conda plans to release &lt;a href=&quot;https://github.com/conda/conda/milestone/63&quot;&gt;optional support for Truststore in v23.9.0&lt;/a&gt;, and pip already has &lt;a href=&quot;https://pip.pypa.io/en/stable/topics/https-certificates/#using-system-certificate-stores&quot;&gt;optional support for Truststore&lt;/a&gt; since v22.2 but has recently bundled Truststore into pip to remove the need to “bootstrap” into Truststore by pre-installing the library.&lt;br /&gt;&lt;br /&gt;Using the system trust store is important because any removals to a trust store (&lt;a href=&quot;https://osv.dev/vulnerability/PYSEC-2023-135&quot;&gt;like for e-Tugra root certificates&lt;/a&gt;) must be propagated to all end systems in order to avoid “monster-in-the-middle” attacks. Further challenging this propagation is that some tools like pip bundle certifi as a means of bootstrapping, which means that you need to upgrade both certifi and pip in order to completely propagate updates to certifi’s certificate bundle.&lt;br /&gt;&lt;br /&gt;This propagation is better suited to a centralized system like an OS package manager or an automatic centralized authority or IT department keeping the trust bundles up-to-date, which can only happen through using system trust stores.&lt;br /&gt;&lt;br /&gt;Recently the Python implementation PyPy added support for Python 3.10, thus enabling PyPy to also use Truststore. I &lt;a href=&quot;https://github.com/sethmlarson/truststore/pull/113&quot;&gt;subsequently added support and backwards compatibility tests for PyPy to Truststore&lt;/a&gt; to ensure all compliant implementations of Python can take advantage of the benefits.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Future Projects and Challenges&lt;br /&gt; &lt;br /&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Software Bills-of-Materials for CPython&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Software Bill-of-Materials (SBOMs) are a hot topic in the world of software security due to new government requirements and improved software and vulnerability management tooling. Many tools generate or consume SBOMs as a universal format for describing software and its components and then matching those components to known vulnerabilities.&lt;br /&gt;&lt;br /&gt;I&#39;ve started working on an authoritative SBOM for the CPython project, you can follow along in &lt;a href=&quot;https://github.com/sethmlarson/cpython-sbom&quot;&gt;this GitHub repository&lt;/a&gt; if you are interested. This project is early and this will not be the final product or place where this information is published, this is only a place to experiment and get feedback on the approach and outputs before putting the final infrastructure in place.&lt;br /&gt;&lt;br /&gt;I started with the most straightforward release artifact, the source tarball, and I am planning to tackle the binary installers later since they&#39;ll require more research into the release processes. There is a work-in-progress SBOM file for Python-3.12.0.tgz available in the &lt;a href=&quot;https://github.com/sethmlarson/cpython-sbom/blob/main/sboms&quot;&gt;sboms/ directory on the repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Using vulnerability scanning tools I was able to see not only vulnerabilities in CPython, but &lt;b&gt;crucially in the bundled subcomponents like expat and pip&lt;/b&gt;. Without an SBOM the subcomponents to a project like CPython likely wouldn’t get detected properly and thus would be not covered by vulnerability management tooling.&lt;br /&gt;&lt;br /&gt;The challenges here will be integrating the creation and maintenance of the SBOMs into the CPython development and release processes while minimally disrupting other core developers workflows and avoiding the need to develop and maintain custom tooling for CPython’s specific use-case.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Tracking bundled dependencies in Python packages&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Python is the premier “glue” language, meaning that Python is often used alongside many other programming languages like C, C++, Rust, Go, and more thanks to Python C API. This benefit also means that Python packages can include projects and source code from sources both within and external to the Python ecosystem.&lt;br /&gt;&lt;br /&gt;Those projects and source code from outside the Python ecosystem present a problem for vulnerability scanners &lt;b&gt;which typically rely on explicit metadata about projects and dependencies in order to find vulnerabilities in software manifests&lt;/b&gt;. Without a clear way to encode this information into packaging metadata it’s impossible to signal these dependencies even if a maintainer of a project wants to do so.&lt;br /&gt;&lt;br /&gt;C and C++ projects in particular pose additional issues due to their existence outside of a programming language packaging ecosystem like Python with PyPI or JavaScript and NPM. This makes tracking usage and vulnerabilities in these projects difficult and relies on other identification schemes like CPEs or redistributions in other packaging ecosystems like RPM/DEB. Without this information scanners today miss vulnerable components bundled in Python packages, meaning developers won’t know how or when their Python deployments are vulnerable.&lt;br /&gt;&lt;br /&gt;Solving this issue completely will be a multi-step process, starting with being able to encode information about bundled projects into Python distributions which will require a new packaging PEP. After the standard has been decided, next is getting bundled project metadata automatically captured to avoid needing an entire ecosystem to manually annotate every project. Concurrently to this I’ll collaborate with SBOM generation tooling to add support for consuming the new standard and adding that information to SBOMs generated from Python environments.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;CPython and pip release process improvements&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;CPython and pip are two of the most important projects in the Python ecosystem and each have non-trivial release processes. In an effort to increase the integrity of these projects’ releases I’ve &lt;a href=&quot;https://sethmlarson.dev/security-developer-in-residence-weekly-report-9&quot;&gt;researched and documented their release process&lt;/a&gt; and with &lt;a href=&quot;https://slsa.dev/spec/v1.0/threats-overview&quot;&gt;SLSA’s list of historical supply chain attacks against software projects&lt;/a&gt; have been making suggestions and implementing improvements.&lt;br /&gt;&lt;br /&gt;These improvements include reproducibility of built artifacts, extra guarantees on the integrity of inputs, automating the build processes to reduce attack surface area to only services like GitHub Actions and Azure Pipelines instead of individuals’ computers, and making it so that in the event of an attack that it would need to be publicly detectable and traceable.&lt;br /&gt;&lt;br /&gt;By improving the integrity of these processes I am hoping to prevent disaster scenarios such as malware being injected into Python or pip at the “last mile” before being published to python.org. &lt;b&gt;Injection of malware during build time has happened to multiple other Open Source projects with disastrous results for users&lt;/b&gt;. This work means users can be even more confident in their usage of Python and upgrade early and often to take advantage of Python’s latest features.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8152679974540990831'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8152679974540990831'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/10/security-developer-in-residence-2023-q3-report.html' title='Security Developer-in-Residence 2023 Q3 Report'/><author><name>Seth Michael Larson</name><uri>http://www.blogger.com/profile/16555309043643874359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-8195689563451734803</id><published>2023-09-27T11:44:00.000-04:00</published><updated>2023-09-27T11:44:10.863-04:00</updated><title type='text'>Python Developers Survey Numbers for 2022!</title><content type='html'>&lt;p&gt;We are excited to announce the results of the sixth official annual Python Developers Survey. This work is done each year as a collaborative effort between the Python Software Foundation and JetBrains. Late last year, more than 23,000 Python developers and enthusiasts from almost 200 countries/regions participated in the survey to reveal the current state of the language and the ecosystem around it. (Spoiler alert: Many people are using Python, and 51% are using it for both work AND personal projects.)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://lp.jetbrains.com/python-developers-survey-2022/&quot;&gt;https://lp.jetbrains.com/python-developers-survey-2022/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We know the whole Python community finds this work useful. From Luciana Abud, product manager for Visual Studio Code, “Our teams at Microsoft are truly grateful to the Python Software Foundation and JetBrains for orchestrating the Python Developers Survey! The insights we gain allows us to take a data-driven approach to help with prioritizing feature development, addressing pain points, enhancing usability and anticipating future needs. This survey is invaluable in shaping our approach and continuously improving the Python development experience within the VS Code ecosystem!”&amp;nbsp;&lt;/p&gt;&lt;p&gt;We’d love to hear how you use these numbers, so please share your thoughts on social media, mentioning&lt;a href=&quot;https://twitter.com/jetbrains&quot;&gt; @jetbrains&lt;/a&gt; and &lt;a href=&quot;https://fosstodon.org/@ThePSF&quot;&gt;@ThePSF&lt;/a&gt; with the #pythondevsurvey hashtag. We are also open to any suggestions and feedback related to this survey which could help us run an even better one next time.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8195689563451734803'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8195689563451734803'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/09/python-developers-survey-numbers-for.html' title='Python Developers Survey Numbers for 2022!'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-2962495443605827522</id><published>2023-09-14T14:52:00.000-04:00</published><updated>2023-09-14T14:52:45.358-04:00</updated><title type='text'>Announcing Python Software Foundation Fellow Members for Q2 2023! 🎉</title><content type='html'>&lt;p&gt;&lt;span style=&quot;caret-color: rgb(0, 0, 0); color: #666666; font-family: inherit; font-size: 13.2px;&quot;&gt;The PSF is pleased to announce its second batch of PSF Fellows for 2023! Let us welcome the new PSF Fellows for Q2! The following people continue to do amazing things for the Python community:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Esteban Maya Cadavid&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://twitter.com/esteban_x64&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/esteban-x64&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;LinkedIn&lt;/a&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/estebanx64&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://instagram.com/estebanx64?igshid=OGQ5ZDc2ODk2ZA==&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Instagram&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Martijn Pieters&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px;&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/users/100297/martijn-pieters&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Stack Overflow&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/mjpieters&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.zopatista.com/&quot; style=&quot;color: #2b5b84; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Philip Jones&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://fosstodon.org/@pgjones&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://github.com/pgjones&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://pgjones.dev&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Yifei Wang&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://github.com/Sarah-Yifei-Wang&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;font-size: 13.2px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Thank you for your continued contributions. We have added you to our Fellow roster&lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.python.org/psf/fellows-roster/&quot; style=&quot;-webkit-print-color-adjust: exact; color: #4183c4; font-family: inherit; text-align: left; text-decoration-line: none;&quot;&gt;online&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;The above members help support the Python ecosystem by being phenomenal leaders, sustaining the growth of the Python scientific community, maintaining virtual Python communities, maintaining Python libraries, creating educational material, 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.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Let&#39;s continue recognizing Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online:&amp;nbsp;&lt;a href=&quot;https://www.python.org/psf/fellows/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot;&gt;https://www.python.org/psf/fellows/&lt;/a&gt;. 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 python.org. Quarter 3 nominations are currently in review. We are accepting nominations for Quarter 4 through November 20, 2023.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Are you a PSF Fellow and want to help the Work Group review nominations? Contact us at&amp;nbsp;psf-fellow at python.org.&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2962495443605827522'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2962495443605827522'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/09/announcing-python-software-foundation.html' title='Announcing Python Software Foundation Fellow Members for Q2 2023! 🎉'/><author><name>Olivia Sauls</name><uri>http://www.blogger.com/profile/02332425566237042576</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-478485117586567957</id><published>2023-08-29T15:26:00.000-04:00</published><updated>2023-08-29T15:26:14.697-04:00</updated><title type='text'>The Python Software Foundation has been authorized by the CVE Program as a CVE Numbering Authority (CNA)</title><content type='html'>&lt;p style=&quot;text-align: left;&quot;&gt;When a vulnerability is disclosed in software you&#39;re depending on, the last thing you want is for the remediation process to be confusing or ad-hoc. Towards the goal of a more secure and safe Python ecosystem, the Python Software Foundation has been &lt;a href=&quot;https://www.cve.org/Media/News/item/news/2023/08/29/Python-Software-Foundation-Added-as-CNA&quot;&gt;authorized by the CVE Program&lt;/a&gt; as a CVE Numbering Authority (CNA).&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Being authorized as a CNA is one milestone in the Python Software Foundation&#39;s strategy to improve the vulnerability response processes of critical projects in the Python ecosystem. The &lt;a href=&quot;https://www.cve.org/PartnerInformation/ListofPartners/partner/PSF&quot;&gt;Python Software Foundation CNA scope&lt;/a&gt; covers &lt;a href=&quot;https://github.com/python/cpython&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;https://github.com/pypa/pip&quot;&gt;pip&lt;/a&gt;, two 
projects which are fundamental to the rest of Python ecosystem.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;By becoming a CNA, the PSF will be providing the following benefits to in-scope projects:&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Paid staffing for CNA operations rather than requiring volunteer time. &lt;br /&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Quicker allocations of CVE IDs after a vulnerability is reported.&lt;br /&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Involvement of each projects&#39; security response teams during the reporting of vulnerabilities.&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Richer published advisories and CVE Records including descriptions, metadata, and remediation information.&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Consistent disclosures and publishing locations. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: left;&quot;&gt;CNA operations will be staffed primarily by the &lt;a href=&quot;https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html&quot;&gt;recently hired Security Developer-in-Residence&lt;/a&gt; Seth Michael Larson, Ee Durbin, and Chloe Gerhardson.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The PSF wants to help other Open Source organizations and will be sharing lessons learned and developing guidance on becoming a CNA and day-to-day operations.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;To be alerted of newly published vulnerabilities in Python or pip, subscribe to the &lt;a href=&quot;https://mail.python.org/mailman3/lists/security-announce.python.org/&quot; target=&quot;_blank&quot;&gt;security-announce@python.org mailing list&lt;/a&gt; for security advisories. There is also a &lt;a href=&quot;https://github.com/psf/advisory-database&quot;&gt;new advisory database&lt;/a&gt; published to GitHub using the machine-readable &lt;a href=&quot;https://ossf.github.io/osv-schema/&quot;&gt;Open Source Vulnerability&lt;/a&gt; (OSV) format.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;If you&#39;d like to report a security vulnerability to Python or pip, the vulnerability disclosure policy is &lt;a href=&quot;https://www.python.org/dev/security&quot;&gt;available on python.org&lt;/a&gt;.&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The mission of the Common Vulnerabilities and Exposures (CVE®) Program is to&lt;br /&gt;identify, define, and catalog publicly disclosed cybersecurity vulnerabilities. There&lt;br /&gt;is one CVE Record for each vulnerability in the catalog. The vulnerabilities are&lt;br /&gt;discovered then assigned and published by organizations from around the world&lt;br /&gt;that have partnered with the CVE Program. Partners publish CVE Records to&lt;br /&gt;communicate consistent descriptions of vulnerabilities. Information technology&lt;br /&gt;and cybersecurity professionals use CVE Records to ensure they are discussing&lt;br /&gt;the same issue, and to coordinate their efforts to prioritize and address the&lt;br /&gt;vulnerabilities.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The Python Software Foundation (PSF) is the non-profit organization 
behind Python and PyPI. Our mission 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. 
The PSF supports the Python community using corporate sponsorships, 
grants, and donations. Are you interested in sponsoring or donating to 
the PSF so it can continue supporting Python and its community? Check 
out our &lt;a href=&quot;https://www.python.org/psf/sponsorship/&quot;&gt;sponsorship program&lt;/a&gt;, &lt;a href=&quot;https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;amp;id=2&quot;&gt;donate directly here&lt;/a&gt;, or contact our team!&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/478485117586567957'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/478485117586567957'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/08/psf-authorized-as-cna.html' title='The Python Software Foundation has been authorized by the CVE Program as a CVE Numbering Authority (CNA)'/><author><name>Seth Michael Larson</name><uri>http://www.blogger.com/profile/16555309043643874359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-6974714988759780968</id><published>2023-08-04T12:32:00.000-04:00</published><updated>2023-08-04T12:32:28.554-04:00</updated><title type='text'>Announcing Our New PyPI Safety &amp; Security Engineer!</title><content type='html'>&lt;p&gt;We &lt;a href=&quot;https://blog.pypi.org/posts/2023-05-09-announcing-pypi-safety-and-security-engr-role/&quot;&gt;announced our intention&lt;/a&gt; back in May to fill this role with &lt;a href=&quot;https://aws.amazon.com/blogs/opensource/securing-pypi-for-the-future/&quot;&gt;generous funding by Amazon Web Services (AWS)&lt;/a&gt;, and after a thorough search, we are delighted to announce &lt;a href=&quot;https://mike.fiedler.me/&quot;&gt;Mike Fiedler&lt;/a&gt; is joining the team! He joins the PSF for the next year as our first ever PyPI Safety &amp;amp; Security Engineer. Mike is already a dedicated member of the Python packaging community – he has been a Python user for some 15 years, maintains and contributes to open source, and became a PyPI Maintainer in 2022.&lt;/p&gt;&lt;p&gt;This critical role would not be possible without funding from &lt;a href=&quot;https://aws.amazon.com/opensource/&quot;&gt;AWS&lt;/a&gt;: &quot;&lt;i&gt;We are happy to be able to invest in the sustainable and secure development of Python and PyPI, and we look forward to Mike&#39;s contributions&lt;/i&gt;.&quot; - Tom Callaway, AWS. &lt;br /&gt;&lt;br /&gt;Mike begins his work with the &lt;a href=&quot;http://pypi.org&quot;&gt;Python Packaging Index&lt;/a&gt; (PyPI) this week. He says, “&lt;i&gt;Very excited to join the team in improving the safety and security of PyPI for end users, package publishers, maintainers, and PyPI moderators and administrators - that’s a huge audience!&lt;/i&gt;” We hope that everyone in the community will join us in welcoming Mike and supporting his critical work for Python packaging!&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtH2F2N_fn2rburkNWVpr26ctTVpSbwdIo0c6gfgVpmoWa6E3sxBa9p8Jcnx1_9r4LsOT2hJkJrdN0ttP-EmMAA6o1AHptBHlcWnytl8fAvjBlIltUslJDHKE1lAKrUqX8aT1aE4CndI4Hp5-nMOvQyLXl6T80Boj30yN7wy1VeZmVsuxL3Q/s3289/49506768212_ac4f703527_o.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img alt=&quot;A photo of Mike Fiedler smiling to the camera.&quot; border=&quot;0&quot; data-original-height=&quot;3289&quot; data-original-width=&quot;2500&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtH2F2N_fn2rburkNWVpr26ctTVpSbwdIo0c6gfgVpmoWa6E3sxBa9p8Jcnx1_9r4LsOT2hJkJrdN0ttP-EmMAA6o1AHptBHlcWnytl8fAvjBlIltUslJDHKE1lAKrUqX8aT1aE4CndI4Hp5-nMOvQyLXl6T80Boj30yN7wy1VeZmVsuxL3Q/w243-h320/49506768212_ac4f703527_o.jpg&quot; width=&quot;243&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;We are thrilled that for the first time we are able to bring on an engineer who will be dedicated full-time  to PyPI. PyPI is a massive project that has become key digital infrastructure serving millions of users. Up until now, PyPI has been almost entirely volunteer-run, depending on a tiny team with only one fraction of one person’s paid time. We’re expecting all PyPI users to have a tangibly improved experience from Mike’s work over the next year. Some of the outcomes we are targeting include increased support for package maintainers including multi-maintainer projects, improvements to reporting infrastructure for malicious projects, as well as a reduced response time for malware reports and account recovery requests. Mike will work closely with our also-recently-announced &lt;a href=&quot;https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html&quot;&gt;Security Developer in Residence, Seth Larson&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;This role is funded by a substantial investment from AWS, inaugural Security Sponsor for PyPI. AWS has been one of the top sponsors of the Python Software Foundation for the last five years, and our long-term partnership with AWS has also included important in-kind donations of cloud computing infrastructure and services to support PyPI.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The Python Software Foundation (PSF) is the non-profit organization behind Python and PyPI. Our mission 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. The PSF supports the Python community using corporate sponsorships, grants, and donations. Are you interested in sponsoring or donating to the PSF so it can continue supporting Python and its community? Check out our &lt;a href=&quot;https://www.python.org/psf/sponsorship/&quot;&gt;sponsorship program&lt;/a&gt;, &lt;a href=&quot;https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;amp;id=2&quot;&gt;donate directly here&lt;/a&gt;, or contact our team!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/6974714988759780968'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/6974714988759780968'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/08/announcing-our-new-pypi-safety-security.html' title='Announcing Our New PyPI Safety &amp; Security Engineer!'/><author><name>Loren Crary</name><uri>http://www.blogger.com/profile/06125752284896762014</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2AcMmDLDWxEuhuvXW351Zu80hAxm9SbDI2ANl_Tfx4dG8r--fPmO_0x5lPGrRijT-c2EDChrojKOellhEw5P7WJnQRQDXTOh-IAj55Z8xZfwtvf4LnGS0RR64H57ltY/s220/Loren+candid+.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtH2F2N_fn2rburkNWVpr26ctTVpSbwdIo0c6gfgVpmoWa6E3sxBa9p8Jcnx1_9r4LsOT2hJkJrdN0ttP-EmMAA6o1AHptBHlcWnytl8fAvjBlIltUslJDHKE1lAKrUqX8aT1aE4CndI4Hp5-nMOvQyLXl6T80Boj30yN7wy1VeZmVsuxL3Q/s72-w243-h320-c/49506768212_ac4f703527_o.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8520.post-2872726580734550057</id><published>2023-08-02T10:51:00.000-04:00</published><updated>2023-08-02T10:51:09.365-04:00</updated><title type='text'>Announcing Python Software Foundation Fellow Members for Q1 2023! 🎉</title><content type='html'>&lt;p&gt;&lt;span style=&quot;caret-color: rgb(0, 0, 0); color: #666666; font-family: inherit; font-size: 13.2px;&quot;&gt;The PSF is pleased to announce its first batch of PSF Fellows for 2023! Let us welcome the new PSF Fellows for Q1! The following people continue to do amazing things for the Python community:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px;&quot;&gt;&lt;span style=&quot;caret-color: rgb(0, 0, 0); font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Abhishek Mishra&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://twitter.com/stalwartcoder&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/stalwartcoder/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;LinkedIn&lt;/a&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://abhishekmishra.dev&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Barney Gale&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;span face=&quot;&amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif&quot; style=&quot;color: #666666; font-size: 13.2px;&quot;&gt;&lt;a href=&quot;https://github.com/barneygale/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.linkedin.com/in/bgale1/&quot; style=&quot;color: #2b5b84; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;LinkedIn&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Eric Traut&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/erictraut&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.linkedin.com/in/eric-traut-79a815137/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;LinkedIn&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Gina Häußge&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://chaos.social/@foosel&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;&lt;span style=&quot;color: #0b5394; font-size: 13.2px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/foosel&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;span style=&quot;font-size: 13.2px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: black; font-size: 13.2px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://foosel.net&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&lt;span style=&quot;font-size: 13.2px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Grishma Jena&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://twitter.com/DebateLover &quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;span style=&quot;color: #0b5394; font-size: 13.2px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 13.2px;&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/grishmajena/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;LinkedIn&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://gjena.github.io/&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&lt;span style=&quot;font-size: 13.2px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: black; font-size: 13.2px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://instagram.com/data_designtist&quot; style=&quot;color: #2b5b84; font-size: 13.2px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Instagram&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;font-size: 13.2px;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Samuel Colvin&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://twitter.com/samuel_colvin &quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/samuelcolvin&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Saptak Sengupta&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;a href=&quot;https://toots.dgplug.org/@saptaks&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/saptaks&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;,&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://saptaks.website&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Website&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;&quot;&gt;&lt;div style=&quot;font-size: medium; margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;b style=&quot;font-size: 13.2px; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Soon Seng Goh&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Thank you for your continued contributions. We have added you to our Fellow roster&lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.python.org/psf/fellows-roster/&quot; style=&quot;-webkit-print-color-adjust: exact; color: #4183c4; font-family: inherit; text-align: left; text-decoration-line: none;&quot;&gt;online&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;The above members help support the Python ecosystem by being phenomenal leaders, sustaining the growth of the Python scientific community, maintaining virtual Python communities, maintaining Python libraries, creating educational material, 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.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Let&#39;s continue recognizing Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online:&amp;nbsp;&lt;a href=&quot;https://www.python.org/psf/fellows/&quot; style=&quot;color: #2b5b84; text-decoration-line: none;&quot;&gt;https://www.python.org/psf/fellows/&lt;/a&gt;. 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 python.org. Quarter 2 nominations are currently in review. We are accepting nominations for quarter 3 through August 20, 2023.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); color: #666666; font-family: &amp;quot;Trebuchet MS&amp;quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Are you a PSF Fellow and want to help the Work Group review nominations? Contact us at&amp;nbsp;psf-fellow at python.org.&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2872726580734550057'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2872726580734550057'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/08/announcing-python-software-foundation.html' title='Announcing Python Software Foundation Fellow Members for Q1 2023! 🎉'/><author><name>Olivia Sauls</name><uri>http://www.blogger.com/profile/02332425566237042576</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-8271427983184870250</id><published>2023-06-30T20:13:00.000-04:00</published><updated>2023-06-30T20:13:47.548-04:00</updated><title type='text'>Announcing the 2023 PSF Board Election Results!</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It was a really lively and engaged election process for the PSF Board
 this year! First of all, we want to thank everyone who ran and was 
willing to serve on the PSF Board. Even if you were not elected, we 
appreciate all the time and effort you put into thinking about how to 
make the PSF better and how to represent the parts of the community that
 you participate in. We hope that you will continue to think about these
 issues and share your ideas. &lt;br /&gt;&lt;br /&gt;Congratulations to our five new Board members-elect!&amp;nbsp;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Cheuk Ting Ho&lt;/li&gt;&lt;li&gt;Denny Perez&lt;/li&gt;&lt;li&gt;Georgi Ker&lt;/li&gt;&lt;li&gt;Christopher Neugebauer&lt;/li&gt;&lt;li&gt;KwonHan Bae * &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We’ll
 be in touch with all the elected candidates next week to schedule 
onboarding. * The fifth person is being invited to serve for a year to 
fill the off-cycle vacancy left by Joannah Nanjekye, who stepped down 
from the Board. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;I’d like to take this opportunity to thank 
our outgoing board members for their outstanding service; Dustin Ingram,
 Joannah Nanjekye, Jeff Triplett, Thomas Wouters and Nina Zakharenko. 
They served on the PSF Board through a particularly eventful time; 
helping us to navigate the global pandemic, rework PyCon US into a 
virtual event and hire a new Executive Director. Thank you for 
supporting the PSF and the Python community through so much change! &lt;br /&gt;&lt;br /&gt;Our
 heartfelt thanks go out to each of you who took the time to review the 
candidates and submit your votes. Your participation helps the PSF 
represent our community. We received 621 total votes, which easily 
reached quorum–1/3 of affirmed voting members (877). We’re especially 
grateful for your patience with navigating the changes to the voting 
process, which ultimately allowed for a valid election and a more 
sustainable elections system. &lt;br /&gt;&lt;br /&gt;I also want to thank everyone who helped promote this year’s board election, especially&lt;a href=&quot;https://pythoncommunitynews.com/&quot;&gt; Python Community News&lt;/a&gt;
 who took the initiative to cover this year’s election and produced 
informational videos from each candidate. I also want to highlight the 
PSF staff members who made some changes to our membership management on 
the back-end this year, enabling us to affirm voting intention for the 
first time ever and setting up OpaVote. Thanks to Ee Durbin and Joe 
Carey!&lt;br /&gt;&lt;br /&gt;Finally, it might feel a little early to mention this, but
 we will have four seats open again next year. If you&#39;re interested in 
running or learning more, we encourage you to reach out to a current 
board member or two this year and ask them about serving. &lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8271427983184870250'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/8271427983184870250'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/06/announcing-2023-psf-board-election.html' title='Announcing the 2023 PSF Board Election Results!'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-5325337645245150961</id><published>2023-06-22T09:50:00.000-04:00</published><updated>2023-06-22T09:50:11.087-04:00</updated><title type='text'>Announcing Our New Security Developer in Residence!</title><content type='html'>&lt;p&gt;We &lt;a href=&quot;https://pyfound.blogspot.com/2023/01/the-psf-is-hiring-security-developer-in.html&quot;&gt;announced our intention&lt;/a&gt; to fill this role back in January, and after a thorough search, we have chosen &lt;a href=&quot;https://github.com/sethmlarson&quot;&gt;Seth Michael Larson&lt;/a&gt;! He joins the PSF for the next year as our first ever Security Developer-in-Residence. Seth is already well-known to the Python community – he was named a PSF Fellow last year and has already written a lot about Python and security on &lt;a href=&quot;https://sethmlarson.dev/blog&quot;&gt;his blog&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;This critical role would not be possible without funding from the OpenSSF &lt;a href=&quot;https://alpha-omega.dev/&quot;&gt;Alpha-Omega Project&lt;/a&gt;.  “At Alpha-Omega, we are excited to support the Python Software Foundation as they improve the security of PyPI, and more generally the Python ecosystem as a whole.” Alpha Omega Representative - Bob Callaway, Google&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMjW7t6SUT_JHOfnctOA2PQf9X7rZqTSaPr298fwf-XynMa2DWodyEPPO85ECX87IhXt5B_vdtBJIjxJepuCxNhCRZ-PztzjN-GHU7ZnuaWxp1tTzYwY9x2kKe8TfK_U5YB0tgJtm6mxZwRXKO15-hfHJ8bzAJLQgAd9A2mhLgOUsGKEFlT8/s460/SML.jpeg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;460&quot; data-original-width=&quot;460&quot; height=&quot;258&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMjW7t6SUT_JHOfnctOA2PQf9X7rZqTSaPr298fwf-XynMa2DWodyEPPO85ECX87IhXt5B_vdtBJIjxJepuCxNhCRZ-PztzjN-GHU7ZnuaWxp1tTzYwY9x2kKe8TfK_U5YB0tgJtm6mxZwRXKO15-hfHJ8bzAJLQgAd9A2mhLgOUsGKEFlT8/w258-h258/SML.jpeg&quot; width=&quot;258&quot; /&gt;&lt;/a&gt;Seth begins his work with Python and the&lt;a href=&quot;https://pypi.org/&quot;&gt; Python Package Index&lt;/a&gt; (PyPI) this week. He says, “The Python community is such a positive part of my life so I&#39;m grateful for this incredible opportunity to contribute back. I&#39;m looking forward to partnering with all of you to build a more secure Python ecosystem for everyone!” We hope that everyone in the community will welcome Seth and help him succeed in his audit and subsequent plans for key security improvements.&lt;/p&gt;&lt;p&gt;This role is funded by a substantial investment from the&lt;a href=&quot;https://openssf.org/&quot;&gt; Open Software Security Foundation&lt;/a&gt; (OpenSSF)&lt;a href=&quot;https://openssf.org/community/alpha-omega/&quot;&gt; Alpha-Omega Project&lt;/a&gt;. The OpenSSF is a non-profit cross-industry collaboration that brings together leaders to improve the security of open source software by building a broader community, targeted initiatives, and best practices. The OpenSSF unifies many open source security initiatives under one foundation to accelerate work through cross-industry support.&lt;/p&gt;&lt;p&gt;The Python Software Foundation (PSF) is a non-profit whose mission 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. The PSF supports the Python community using corporate sponsorships, grants, and donations. Are you interested in sponsoring or donating to the PSF so it can continue supporting Python and its community? Check out our&lt;a href=&quot;https://www.python.org/sponsors/application/&quot;&gt; sponsorship program&lt;/a&gt;,&lt;a href=&quot;https://psfmember.org/civicrm/contribute/transact?reset=1&amp;amp;id=2&quot;&gt; donate directly here&lt;/a&gt;, or contact our team! &lt;br /&gt;&lt;br /&gt; &lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/5325337645245150961'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/5325337645245150961'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html' title='Announcing Our New Security Developer in Residence!'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMMjW7t6SUT_JHOfnctOA2PQf9X7rZqTSaPr298fwf-XynMa2DWodyEPPO85ECX87IhXt5B_vdtBJIjxJepuCxNhCRZ-PztzjN-GHU7ZnuaWxp1tTzYwY9x2kKe8TfK_U5YB0tgJtm6mxZwRXKO15-hfHJ8bzAJLQgAd9A2mhLgOUsGKEFlT8/s72-w258-h258-c/SML.jpeg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8520.post-7439097174267703391</id><published>2023-06-20T13:47:00.003-04:00</published><updated>2023-06-21T11:39:15.341-04:00</updated><title type='text'>The 2023 PSF Board Election is Open!</title><content type='html'>&lt;p&gt;It’s time to cast your vote! Voting takes place from today Tuesday, June 20, through Friday, June 30, 2023 11:59pm UTC. If you are a voting member of the PSF, you should have gotten an email from “OpaVote Voting Link &amp;lt;noreply@opavote.com&amp;gt;” with your ballot, the subject line will read “Python Software Foundation Board of Directors Election 2023”. If you haven’t seen your ballot by Wednesday, please 1) check your spam folder for a message from “noreply@opavote.com” and if you don’t see anything 2) get in touch by emailing psf-elections@python.org so we can make sure we have the most up to date email for you.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Four seats are open, but you can approve as many candidates as you like. BUT! Choose carefully before you press the &lt;b&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;big green vote button&lt;/span&gt;&lt;/b&gt;. Once your vote is cast, it cannot be changed. &lt;br /&gt;&lt;br /&gt;We’re overwhelmed by how many of you are willing to contribute to the Python community by serving on the PSF board! Make sure you schedule some time to &lt;a href=&quot;https://www.python.org/nominations/elections/2023-python-software-foundation-board/nominees/&quot;&gt;look at all their statements&lt;/a&gt; and choose your candidates carefully. OpaVote doesn’t let you go back and change your vote once you’ve made your choices. &lt;br /&gt;&lt;br /&gt;Who can vote? You need to be a Contributing, Managing, Supporting, or Fellow member as of June 15, 2023 and have &lt;a href=&quot;https://pyfound.blogspot.com/2023/06/affirming-your-psf-membership-voting.html&quot;&gt;affirmed your voting&lt;/a&gt; intention by June 19, 2023 to vote in this election. Read more about our membership types&lt;a href=&quot;https://www.python.org/psf/membership/&quot;&gt; here&lt;/a&gt; or if you have questions about your membership status please email psf-elections@python.org&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7439097174267703391'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7439097174267703391'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/06/the-2023-psf-board-election-is-open.html' title='The 2023 PSF Board Election is Open!'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-5494829174430708233</id><published>2023-06-16T13:19:00.002-04:00</published><updated>2023-06-16T13:19:33.919-04:00</updated><title type='text'>Board Candidates for 2023 are Announced!</title><content type='html'>&lt;p&gt;What an exciting list! Please take a look at who is running for the PSF Board this year &lt;a href=&quot;https://www.python.org/nominations/elections/2023-python-software-foundation-board/nominees/&quot;&gt;here&lt;/a&gt;. This year there are 4 seats open on the PSF board. You can see who is on the board currently &lt;a href=&quot;https://www.python.org/psf/records/board/history/&quot;&gt;here&lt;/a&gt;. (Dustin Ingram, Jeff Triplett, Nina Zakharenko and Thomas Wouters are at the end of their current terms.) &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Board Election Timeline:&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Nominations are open, Thursday, June 1st, 2:00 pm UTC&lt;/li&gt;&lt;li&gt;Board Director Nomination cut-off: Thursday, June 15, 11:59 pm UTC&lt;/li&gt;&lt;li&gt;Voter application cut-off date: Thursday, June 15, 11:59 pm UTC&lt;/li&gt;&lt;li&gt;Announce candidates: Friday, June 16th&lt;/li&gt;&lt;li&gt;Voting start date: Tuesday, June 20, 12:01 am UTC&lt;/li&gt;&lt;li&gt;Voting end date: Friday, June 30, 11:59 pm UTC&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Not sure what UTC is for you locally? Check &lt;a href=&quot;https://savvytime.com/converter/utc&quot;&gt;here&lt;/a&gt;!&amp;nbsp;&lt;/p&gt;&lt;p&gt;Voting takes place from today Tuesday, June 20, through Friday, June 30, 2023 11:59pm UTC. Check &lt;a href=&quot;https://www.python.org/nominations/elections/&quot;&gt;here&lt;/a&gt; to see how much time you have left to vote. If you are a voting member of the PSF, you will get an email from “OpaVote Voting Link &amp;lt;noreply@opavote.com&amp;gt;” with your ballot, the subject line will read “Python Software Foundation Board of Directors Election 2023”. If you haven’t seen your ballot by Wednesday, please 1) check your spam folder for a message from “noreply@opavote.com” and if you don’t see anything 2) get in touch by emailing psf-elections@python.org so we can make sure we have the most up to date email for you. &lt;/p&gt;&lt;p&gt;If you have questions about your membership status or the election, please email &lt;a href=&quot;mailto:psf-elections@python.org&quot;&gt;psf-elections@python.org&lt;/a&gt; You are welcome to join the discussion about the PSF Board election on &lt;a href=&quot;http://psf-board.slack.com&quot;&gt;Slack&lt;/a&gt; or on &lt;a href=&quot;https://discuss.python.org/c/python-software-foundation/9&quot;&gt;our forum&lt;/a&gt;. &lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/5494829174430708233'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/5494829174430708233'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/06/board-candidates-for-2023-are-announced.html' title='Board Candidates for 2023 are Announced!'/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-3334800395300896983</id><published>2023-06-07T13:57:00.000-04:00</published><updated>2023-06-07T13:57:53.023-04:00</updated><title type='text'>Affirming your PSF Membership voting status </title><content type='html'>Every PSF Voting Member (Supporting, Managing, Contributing, and Fellow) needs to affirm their membership in order to vote in this year’s election.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This year’s Board Election begins June 20th, and voter eligibility cut-off is June 15th. You should have received an email with instructions and you need to affirm your voting rights before June 15th in order to participate in this year&#39;s Board Election. Email will be from&amp;nbsp;&quot;psf@psfmember.org &amp;lt;Python Software Foundation&amp;gt;&quot; with subject &quot;[Action Required] Affirm your PSF Membership voting status&quot;&lt;br /&gt;&lt;br /&gt;Why you are being asked to do this: &lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;Section 4.2 of the PSF Bylaws requires that “Members of any membership class with voting rights must affirm each year to the corporation in writing that such member intends to be a voting member for such year.”&lt;br /&gt;&lt;br /&gt;The PSF has not enforced this in the past, because it was technically challenging to do so. Now that our voting membership has been completely consolidated into psfmember.org, we are able to do so.&lt;br /&gt;&lt;br /&gt;Our motivation is to ensure that our elections can meet quorum as required by Section 3.9 of our bylaws. As our membership has grown we have seen that and increasing number of Contributing, Managing, and Fellow members with indefinite membership do not engage with our annual election, making quorum difficult to reach.&lt;/div&gt;&lt;p&gt;You can see your membership record and status on&amp;nbsp;&lt;a href=&quot;https://psfmember.org/user-information&quot;&gt;psfmember.org&lt;/a&gt;&amp;nbsp;(note you must be logged in to view that page). If you are a voting-eligible member and do not already have a login there, please&amp;nbsp;&lt;a href=&quot;https://psfmember.org/wp-login.php?action=register&quot;&gt;sign up&lt;/a&gt; and then email&amp;nbsp;psf-donations@python.org so we can link your membership to your account. You can click the emailed link to re-certify without signing in. But please create your account and ensure it is linked to your membership so that we can ensure we have the most up-to-date contact information for you in the future.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What happens next?&lt;/b&gt; You’ll get an email from OpaVote with a ballot on or before June 20th and then you can vote!&lt;/p&gt;&lt;p&gt;Learn more about membership&amp;nbsp;&lt;a href=&quot;https://www.python.org/psf/membership/&quot;&gt;here&lt;/a&gt; or if you have questions about membership or nominations please email&amp;nbsp;psf-elections@python.org In addition to&amp;nbsp;&lt;a href=&quot;http://psf-board.slack.com/&quot;&gt;Slack&lt;/a&gt; you are welcome to join the discussion about the PSF Board election on&amp;nbsp;&lt;a href=&quot;https://discuss.python.org/c/python-software-foundation/9&quot;&gt;our forum&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/3334800395300896983'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/3334800395300896983'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/06/affirming-your-psf-membership-voting.html' title='Affirming your PSF Membership voting status '/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4878121842838063233</id><published>2023-05-31T15:22:00.001-04:00</published><updated>2023-05-31T15:22:18.236-04:00</updated><title type='text'>Thinking about running for the Python Software Foundation Board of Directors? Let’s talk! </title><content type='html'>&lt;p dir=&quot;ltr&quot; id=&quot;docs-internal-guid-3aa0cbd5-7fff-fec0-3d7a-1819f76c6347&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;This year’s Board Election Nomination period is &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/psf-board-election-dates-for-2023.html&quot;&gt;opening tomorrow&lt;/a&gt;. Current board members want to share what being on the board is like and are making themselves available to answer all your questions about responsibilities, activities and time commitments via online chat. Please come join us &lt;a href=&quot;https://www.python.org/join-psf-board-slack&quot;&gt;on Slack&lt;/a&gt; anytime in June to talk with us about being on the PSF board. &lt;br /&gt;&lt;br /&gt;Board Election Timeline:&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Nominations are open, Thursday, June 1st, 2:00 pm UTC&lt;/li&gt;&lt;li&gt;Board Director Nomination cut-off: Thursday, June 15, 11:59 pm UTC&lt;/li&gt;&lt;li&gt;Voter application cut-off date: Thursday, June 15, 11:59 pm UTC&lt;/li&gt;&lt;li&gt;Announce candidates: Friday, June 16th&lt;/li&gt;&lt;li&gt;Voting start date: Tuesday, June 20, 12:01 am UTC&lt;/li&gt;&lt;li&gt;Voting end date: Friday, June 30, 11:59 pm UTC&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; id=&quot;docs-internal-guid-3aa0cbd5-7fff-fec0-3d7a-1819f76c6347&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;Not sure what UTC is for you locally? Check &lt;a href=&quot;https://savvytime.com/converter/utc&quot;&gt;here&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Nominations will be accepted &lt;a href=&quot;https://www.python.org/nominations/elections/&quot;&gt;here&lt;/a&gt;. (Note: you will need to sign into or create your python.org user account first). Learn more about membership &lt;a href=&quot;https://www.python.org/psf/membership/&quot;&gt;here&lt;/a&gt; or if you have questions about membership or nominations please email &lt;a href=&quot;mailto:psf-elections@python.org&quot;&gt;psf-elections@python.org&lt;/a&gt;In addition to &lt;a href=&quot;http://psf-board.slack.com&quot;&gt;Slack&lt;/a&gt; you are welcome to join the discussion about the PSF Board election on &lt;a href=&quot;https://discuss.python.org/c/python-software-foundation/9&quot;&gt;our forum&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;Also, you can see your membership record and status on &lt;a href=&quot;https://psfmember.org/user-information&quot;&gt;psfmember.org&lt;/a&gt;. If you are a voting-eligible member and do not already have a login there, please &lt;a href=&quot;https://psfmember.org/wp-login.php?action=register&quot;&gt;sign up&lt;/a&gt; and then email &lt;a href=&quot;mailto:psf-donations@python.org&quot;&gt;psf-donations@python.org&lt;/a&gt; so we can link your membership to your account. </content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4878121842838063233'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4878121842838063233'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/thinking-about-running-for-python.html' title='Thinking about running for the Python Software Foundation Board of Directors? Let’s talk! '/><author><name>Deb Nicholson</name><uri>http://www.blogger.com/profile/06173618710147431813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8520.post-7340321252014847424</id><published>2023-05-29T12:34:00.003-04:00</published><updated>2023-05-29T17:20:02.144-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Towards Native Profiling for Python</title><content type='html'>
&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;Joannah Nanjekye came to the &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit 2023&lt;/a&gt; to discuss innovations by &lt;a href=&quot;https://github.com/plasma-umass/scalene&quot;&gt;Scalene&lt;/a&gt;, a sampling-based Python profiler that can distinguish between native code and Python code in its reports. After its initial release in late 2019, Scalene has become one of the most popular Python profiling tools. It has now been downloaded 500,000 times from PyPI.&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ACb3kr0fWAbdjl0tzHpGzioUYGYX9wrXnK915nFqYIKZPU_-DRDuiT1RVqY9FUs4-C4mwMeEnoKWP284KUtqm2Y7O4MJTSrUIHEeptUZl4U_dB4Q6Q3j_7mWveS-ksCQTD662HbZW3tInYRVrKia0qFxl6VC-TDg3pIrv3qcv6totiI/s1180/image_2023-05-27_222414441.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;480&quot; data-original-width=&quot;1180&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ACb3kr0fWAbdjl0tzHpGzioUYGYX9wrXnK915nFqYIKZPU_-DRDuiT1RVqY9FUs4-C4mwMeEnoKWP284KUtqm2Y7O4MJTSrUIHEeptUZl4U_dB4Q6Q3j_7mWveS-ksCQTD662HbZW3tInYRVrKia0qFxl6VC-TDg3pIrv3qcv6totiI/s320/image_2023-05-27_222414441.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The Scalene project logo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;A profiler is a tool that can monitor a program as it is running. Once the program has run, the profiler can provide a report analysing which lines of code were visited most often, which were the most expensive in terms of time spent, and which were the most expensive in terms of memory usage. Profilers can therefore be hugely useful tools for addressing performance issues in code. If you’re unsure where your program is spending most of its time, it can be hard to optimise it.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Profilers can be split into two broad categories: trace-based profilers and sampling-based profilers. Trace-based profilers work by intercepting each function call as your program is running and logging information about the time spent, memory usage, etc. Sampling-based profilers, meanwhile, take snapshots of your program at periodic intervals to monitor these things. A trace-based profiler has the advantage that it can provide a granular and precise level of detail about which lines of code were executed and when each function call finishes; this makes it ideal for use as a tool to monitor test coverage, for example. However, injecting tracing hooks into each function call can sometimes slow down a program and distort the analysis of where most time was spent. As a result, sampling-based profilers are sometimes preferred for profiling performance.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Scalene is a sampling-based profiler, and aims to address the shortcomings of previous sampling-based profilers for Python. One of the key challenges sampling-based profilers have faced in the past has been accurately measuring the time Python programs spend in “native code”.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghK9GiEpyTkxBrAoaC_bG_5ophtqVcxtc-70dyCa5Y2g35CoVdQiPjiTc2lr4x4UeRq6bJW-TwhfT0kDykcpTS3GZubW9BwrnqoWxnTHe5L5Vih6H-NsAkq_OrmCiWQyWTwG7u_2rQIH6mIsIHcRAtS2KHIyIrvofK1TIpIrSR-iJrOCw/s1192/Nanjekye%20slide%20screenshot.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;791&quot; data-original-width=&quot;1192&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghK9GiEpyTkxBrAoaC_bG_5ophtqVcxtc-70dyCa5Y2g35CoVdQiPjiTc2lr4x4UeRq6bJW-TwhfT0kDykcpTS3GZubW9BwrnqoWxnTHe5L5Vih6H-NsAkq_OrmCiWQyWTwG7u_2rQIH6mIsIHcRAtS2KHIyIrvofK1TIpIrSR-iJrOCw/s320/Nanjekye%20slide%20screenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Slide from Nanjekye’s talk, illustrating sampling-based profiling&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;Handling the problem of native code&lt;/h2&gt;&lt;p&gt;&lt;span&gt;“Native code”, also sometimes referred to as “machine code”, refers to code consisting of low-level instructions that can be interpreted directly by the hardware processor. Using extensions to Python written in &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/C_(programming_language)&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;C&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/C%2B%2B&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;C++&lt;/span&gt;&lt;/a&gt;&lt;span&gt; or &lt;/span&gt;&lt;a href=&quot;https://www.rust-lang.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Rust&lt;/span&gt;&lt;/a&gt;&lt;span&gt; that will compile to native code – such as &lt;/span&gt;&lt;a href=&quot;https://numpy.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;NumPy&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, &lt;/span&gt;&lt;a href=&quot;https://scikit-learn.org/stable/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;scikit-learn&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, and &lt;/span&gt;&lt;a href=&quot;https://www.tensorflow.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;TensorFlow&lt;/span&gt;&lt;/a&gt;&lt;span&gt; – can lead to dramatic speedups for a program written in Python.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;It also, however, makes life difficult for sampling-based profilers. Samplers often use Python’s &lt;/span&gt;&lt;a href=&quot;https://docs.python.org/3/library/signal.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;signal&lt;/code&gt;&lt;/a&gt;&lt;span&gt; module as a way of knowing when to take a periodic snapshot of a program as it is running. However, due to the way the &lt;/span&gt;&lt;code&gt;signal&lt;/code&gt;&lt;span&gt; module works, no signalling events will be delivered while a Python program is spending time in a function that has been compiled to native code via an extension module. The upshot of this is that sample-based profilers are often “flying blind” for Python code that makes extensive use of C extensions, and will sometimes erroneously report that no time at all was spent executing native code, even if the program in fact spent the majority of its time there.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Scalene’s solution to this problem is to monitor delays in signal delivery. It uses this information to deduce the amount of time that the program spent outside CPython’s main interpreter loop (due to the use of native, compiled code from an extension module). Further details on Scalene’s methods, and comparisons with other leading Python profilers, can be found in a recent paper by Emery D. Berger, Sam Stern and Juan Altmayer Pizzorno, &lt;/span&gt;&lt;a href=&quot;https://arxiv.org/pdf/2212.07597.pdf&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;“Triangulating Python Performance Issues with Scalene”&lt;/span&gt;&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Nanjekye also detailed Scalene’s sophisticated approach to measuring performance in child threads. Signal-based profilers often struggle with multi-threaded code, as signals can only be delivered and received from the main thread in Python. Scalene’s solution is to monkey-patch functions that might block the main thread, and add timeouts to these functions. This allows signals to be delivered even in multithreaded code.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Discussion&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Nanjekye asked attendees at the Language Summit if they would be interested in integrating Scalene&#39;s ideas into the standard library&#39;s &lt;code&gt;&lt;a href=&quot;https://docs.python.org/3/library/profile.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;cProfile&lt;/a&gt;&lt;/code&gt; module, which was met with a somewhat muted response.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Pablo Galindo Salgado, a leading contributor to the &lt;/span&gt;&lt;a href=&quot;https://github.com/bloomberg/memray&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Memray&lt;/span&gt;&lt;/a&gt;&lt;span&gt; profiler, criticised Scalene’s signal-based appr&lt;/span&gt;oach, arguing it relied on inherently brittle monkey-patching of the standard library. It also reported unreliable timings, Salgado said: for example, if code in a C extension checks for signals to support CTRL-C, the resulting delays measured by Scalene will be distorted.&lt;/p&gt;&lt;p&gt;&lt;span&gt;Salgado argued that integration with&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.python.org/3.12/howto/perf_profiling.html#perf-profiling&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the &lt;/span&gt;&lt;code&gt;perf&lt;/code&gt;&lt;span&gt; profiler&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, which Python is introducing support for in Python 3.12, would be a better option for users. Mark Shannon, however, argued that &lt;/span&gt;&lt;code&gt;perf&lt;/code&gt;&lt;span&gt; distorted the execution time of Python programs; Salgado responded that Scalene did as well, as the use of signals came with its own overhead.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Nanjekye argued that the huge popularity of Scalene in the Python ecosystem was evidence that it had proved its worth. Carol Willing concurred, noting that Scalene was an especially useful tool with code that made heavy use of libraries such as NumPy, Scikit-Learn and PyTorch.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7340321252014847424'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7340321252014847424'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-towards.html' title='The Python Language Summit 2023: Towards Native Profiling for Python'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ACb3kr0fWAbdjl0tzHpGzioUYGYX9wrXnK915nFqYIKZPU_-DRDuiT1RVqY9FUs4-C4mwMeEnoKWP284KUtqm2Y7O4MJTSrUIHEeptUZl4U_dB4Q6Q3j_7mWveS-ksCQTD662HbZW3tInYRVrKia0qFxl6VC-TDg3pIrv3qcv6totiI/s72-c/image_2023-05-27_222414441.png" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>-13.137128671079765 177.7964526 90 -41.578547400000005</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4786056040780016467</id><published>2023-05-29T12:21:00.002-04:00</published><updated>2023-05-29T18:40:45.905-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Burnout is Real</title><content type='html'>
&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;Guido van Rossum, creator of the Python programming language, spoke at the &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;2023&amp;nbsp;Python Language Summit&lt;/a&gt; on the subject of open-source burnout, strategies for tackling it, and how to avoid it.&lt;p&gt;&lt;span&gt;The first known case of burnout in the field of open-source software, van Rossum speculated, may have been Charles Babbage, who gave up the post of Lucasian Professor of Mathematics (the “Chair of Newton”) at Cambridge University in 1839.&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;“In 1839 the demands of the Analytical Engine upon my attention had become so incessant and so exhausting, that even the few duties of the Lucasian Chair had a sensible effect in impairing my bodily strength. I therefore sent in my resignation.”&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Charles Babbage, “Passages from the Life of a Philosopher” (Chapter 4)&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;Van Rossum described how the Python community had been hit multiple times by core developers, suffering from burnout, suddenly disappearing for extended periods of time. Van Rossum told the story of one core developer, previously one of the most prolific contributors to CPython, who had abruptly ceased contributing around a decade ago. He had hardly been heard from since.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Van Rossum himself, he recounted, had felt so burned out by the acrimonious debate around &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0572/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 572&lt;/span&gt;&lt;/a&gt;&lt;span&gt; (proposing the “walrus operator”, &lt;/span&gt;&lt;code style=&quot;background-color: #cccccc;&quot;&gt;:=&lt;/code&gt;&lt;span&gt;), that it &lt;/span&gt;&lt;a href=&quot;https://lwn.net/Articles/759654/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;led to him stepping down&lt;/span&gt;&lt;/a&gt;&lt;span&gt; from his post as Benevolent Dictator For Life (“BDFL”) of Python in 2018. Decisions about the language were ceded to &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-8016/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;a democratically elected Steering Council&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, which has governed Python ever since.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Burnout, van Rossum noted, was often connected to conflict – and it often didn’t matter whether or not you ended the conflict victorious. Merely having the conflict at all could be exhausting.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Van Rossum’s talk itself was fairly short, but was followed by a lengthy discussion among the assembled core developers on the experiences they’d had with burnout, and strategies that could be employed to tackle it.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Several attendees in the room commented that learning to recognise burnout in yourself was an important skill. Some participants in the discussion described times when they had suddenly realised that things that had previously been enjoyable had morphed into a source of stress. One core developer told the story of a conference they had organised, at which they had felt such extreme stress that they were unable to think of any of the things that had gone well. Instead, they found themselves fixated on all of the minor things that had gone wrong.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Learning to recognise burnout in others was perhaps an even harder problem to solve. Van Rossum noted that the developers most susceptible to burnout were generally those who were most active and engaged with the community. But how can you distinguish between somebody devoting their time to CPython because of the intense enjoyment they found in contributing to the project, somebody who might have formed an unhealthy addiction to open source, and somebody who was only continuing to contribute out of a misplaced sense of obligation?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Some developers spoke of strategies they used to decompress. Brett Cannon described how he periodically takes “open source breaks”, in which he forces himself to spend a period of time without looking at his GitHub notifications or thinking about his open-source commitments. Mariatta Wijaya spoke about how she found mentoring other Python programmers to be deeply healing. All agreed that it was crucial to talk to friends and relatives when you were feeling close to burnout.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;It was agreed that the Python community needed to do better in many ways. We needed to become better, as a community, at understanding when other people said that they were unable to complete something they had previously committed to. And perhaps we needed to normalise questions such as, “Hey, you’ve been super productive and responsive for too long. When do you think you’ll burn out?”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Russell Keith-Magee remarked that systems with single points of failure were bound to lead to situations of intense stress. These systems would inevitably, at some point, fail. The transition from a single BDFL (with an indefinite term) to a five-member Steering Council with one-year terms had been a very positive change in that regard, Keith-Magee said. But there were still places in CPython development where there were single points of failure. Examples included various esoteric platforms where support from CPython depended on a single core developer being able to give up their time to review PRs relating to the platform.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Carol Willing agreed with Keith-Magee, pointing out that no matter who you were, you were rarely the only person who could do a certain task. You &lt;/span&gt;&lt;em&gt;&lt;span&gt;might&lt;/span&gt;&lt;/em&gt;&lt;span&gt; be the person who could do it fastest or best – but sometimes, it was important to “see the people, and share the joy”.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Łukasz Langa spoke about his role as part of the current Code of Conduct Working Group, to which any violations of the &lt;/span&gt;&lt;a href=&quot;https://www.python.org/psf/conduct/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Python Code of Conduct&lt;/span&gt;&lt;/a&gt;&lt;span&gt; can be reported. Langa remarked that being part of the Working Group had brought to the fore parts of the community which he had previously been mostly unaware of. He encouraged everybody in the room to report toxic members of the community who were discouraging or aggressive online.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Speaking personally, for a moment: I tried to take an open-source break earlier this year, when I felt myself close to burning out on some of my open-source commitments. I can’t say it was fully successful – my addiction to GitHub was too great for me to resist glancing at my notifications occasionally. But it was helpful, and re-energising, to spend some time doing a creative activity that bore with it a 0% risk of people shouting at me on the internet about it:&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW9jyCByps_8fSzctINDv6FRBbC8f-H_wz7eVrD_4aEGCy-hm0H1umibAftp2nXc4KYVrbABUvnLDLEQPmOi5necf69ruuyHTjABgJOyBZ64eO3lBsmHJ4S9ogosVzKVzvGloPjQMVXFWjB6fnD3djhfqsuKTBDxbiuRf4bMf-yDjpYHs/s572/image_2023-05-27_220847107.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;572&quot; data-original-width=&quot;271&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW9jyCByps_8fSzctINDv6FRBbC8f-H_wz7eVrD_4aEGCy-hm0H1umibAftp2nXc4KYVrbABUvnLDLEQPmOi5necf69ruuyHTjABgJOyBZ64eO3lBsmHJ4S9ogosVzKVzvGloPjQMVXFWjB6fnD3djhfqsuKTBDxbiuRf4bMf-yDjpYHs/s320/image_2023-05-27_220847107.png&quot; width=&quot;152&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4786056040780016467'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4786056040780016467'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-burnout.html' title='The Python Language Summit 2023: Burnout is Real'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW9jyCByps_8fSzctINDv6FRBbC8f-H_wz7eVrD_4aEGCy-hm0H1umibAftp2nXc4KYVrbABUvnLDLEQPmOi5necf69ruuyHTjABgJOyBZ64eO3lBsmHJ4S9ogosVzKVzvGloPjQMVXFWjB6fnD3djhfqsuKTBDxbiuRf4bMf-yDjpYHs/s72-c/image_2023-05-27_220847107.png" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4891011556077925672</id><published>2023-05-29T12:18:00.002-04:00</published><updated>2023-05-30T11:11:40.288-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Making the Global Interpreter Lock Optional</title><content type='html'>
&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;The Global Interpreter Lock (“GIL”), is one of the most fundamental parts of how Python works today. It’s also one of the most controversial parts, as it prevents true concurrency between threads – another way of saying that it’s difficult to run two functions simultaneously while writing pure-Python code.&lt;p&gt;&lt;span&gt;If there’s one blog that really “took off” after I wrote last year’s coverage on the Python Language Summit, it was &lt;/span&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python_11.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;my blog on Sam Gross’s proposal to make Python’s Global Interpreter Lock (the “GIL”) optional&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. One week following the publication of my articles, the blog had been viewed nearly 38,000 times; the blog in “second place” had only been viewed 5,300 times.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Interest in removing the GIL is clear, therefore – and this year, Gross returned to the &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit&lt;/a&gt; to discuss the development of his plans.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Dare to dream of a GIL-free world&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Gross started off by giving an update on how work on &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; – Gross’s fork of CPython with the GIL removed – had progressed over the past year. Gross had been spending the last few months rebasing his fork onto CPython 3.12. As a result, he was now able to give an accurate estimate of how bad the performance costs to single-threaded code would be, if the GIL were removed.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Over the past year, Gross had also written a PEP – &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0703/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 703&lt;/span&gt;&lt;/a&gt;&lt;span&gt; – which, following the Language Summit, was &lt;/span&gt;&lt;a href=&quot;https://github.com/python/steering-council/issues/188&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;submitted to the Steering Council for their consideration&lt;/span&gt;&lt;/a&gt;&lt;span&gt; on May 12. If the PEP is accepted by the Steering Council, a version of Python with the GIL disabled could be available as soon as Python 3.13. (To discuss the ideas in the PEP, head to &lt;/span&gt;&lt;a href=&quot;https://discuss.python.org/t/pep-703-making-the-global-interpreter-lock-optional-3-12-updates/26503/1&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the thread on discuss.python.org&lt;/span&gt;&lt;/a&gt;&lt;span&gt;.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Gross reported that the latest version of &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; was around 6% slower on single-threaded code than the CPython &lt;/span&gt;&lt;code&gt;main&lt;/code&gt;&lt;span&gt; branch, and that he was confident that the performance overhead could be reduced even further, possibly to nearly 0%. Most of the overhead was due to reference counting and changes that had been required to the operation of CPython’s new-in-3.11 &lt;/span&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_2.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;specialising adaptive interpreter&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. With multiple threads, the performance overhead was around 8%.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz0cEgI5ArFR9lfrczf74Z1y3C536LXYM7iW8WJKi3G_A_Usgp-Bhl8tbOqL7lCkZgpa4Nod76W7FRbSAZ6jwekyynJXd7CDYTSnoilbuGTvRpgvjkYpAMuTBCUwQYeFMpOKsRafkrus1HHzPUC6RFtS0Zu0okF4UVZyeJj_NnQD1C4ck/s1025/Sam%20Gross%20picture.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;585&quot; data-original-width=&quot;1025&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz0cEgI5ArFR9lfrczf74Z1y3C536LXYM7iW8WJKi3G_A_Usgp-Bhl8tbOqL7lCkZgpa4Nod76W7FRbSAZ6jwekyynJXd7CDYTSnoilbuGTvRpgvjkYpAMuTBCUwQYeFMpOKsRafkrus1HHzPUC6RFtS0Zu0okF4UVZyeJj_NnQD1C4ck/s320/Sam%20Gross%20picture.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;A slide from Gross&#39;s talk&lt;br /&gt;(numbers indicate the per-thread overhead)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Having rebased onto Python 3.12, Gross was also able to give an estimate on the extent of the code changes that would be required to CPython, were &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; to be accepted. Excluding generated files, Gross reported that around 15,000 lines of code would need to be changed. There would also need to be some alterations to &lt;/span&gt;&lt;a href=&quot;https://github.com/microsoft/mimalloc&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;mimalloc&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, which &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; depends on – but Gross was hopeful that these would be accepted to mimalloc itself, reducing the need for CPython to maintain mimalloc patches in its codebase.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Some audience members expressed concern about the prospect of “&lt;/span&gt;&lt;code&gt;#ifdef&lt;/code&gt;&lt;span&gt; hell” across the code base, to account for the two possible CPython build options. However, Gross countered that most of the changes required could be made unconditionally without resorting to &lt;/span&gt;&lt;code&gt;#ifdef&lt;/code&gt;&lt;span&gt;s, since the changes were simply no-ops with the GIL enabled.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The plan for &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; remains that it would be enabled via a compile-time flag, named &lt;/span&gt;&lt;code&gt;--disable-gil&lt;/code&gt;&lt;span&gt;. Third-party C extensions would need to provide separate wheels for GIL-disabled Python.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;GIL gotta go&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Last year, it felt as though Gross’s proposal was met with a certain degree of excitement, but also a certain degree of scepticism. It was thrilling to see how far &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; had come, but there was a certain amount of frustration in the room at the lack of a concrete plan for where to go next.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;This year, it felt like the proposal was greeted much more warmly. Gross had come to the summit with a far more clearly defined roadmap for how we might get to &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt;, and had taken the time to put together detailed estimates of the performance impact and the extent of the code changes.&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;“Thank you for doing this… now we have something we can actually consider!”&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;--&lt;i&gt; Brandt Bucher, CPython Core Developer&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;Attendees at the Language Summit were also impressed at how low the performance overhead of &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; was, although Mark Shannon commented that he thought the numbers might be “a slight underestimate”. Gross explained that he had managed to achieve a 2-3% speedup by optimising for the case where only a single thread was active. Even in multithreaded programs, he explained, this provided a performance boost, since even in multithreaded code, it was often the case that only a single thread would be attempting to access an object at any given point in time.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Larry Hastings expressed concern that &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; might make debugging code harder; Gross responded that there was some impact on debuggability, but that it wasn’t too bad, in his opinion. Pablo Galindo Salgado, release manager for Python 3.10 and 3.11, expressed concern that &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; could also make implementing debuggers trickier – but commented that “it might be worth the price” anyway.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Another point of discussion was the changes Gross had made to &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0659/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the specialising adaptive interpreter&lt;/span&gt;&lt;/a&gt;&lt;span&gt; in the &lt;/span&gt;&lt;code&gt;nogil&lt;/code&gt;&lt;span&gt; fork. In order for the specialisations to work with the GIL disabled, Gross had had to guard the adaptive specialisations to the bytecode behind a lock. As well as this, each thread had been limited to a single specialisation of any given bytecode; with the GIL enabled, the adaptive interpreter can respecialise bytecode multiple times. Gross commented that he thought it would probably be possible to allow multiple specialisations of bytecode in multithreaded code, but that this would require further investigation. His current solution was the simplest one he had found, for now.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4891011556077925672'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4891011556077925672'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-making.html' title='The Python Language Summit 2023: Making the Global Interpreter Lock Optional'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz0cEgI5ArFR9lfrczf74Z1y3C536LXYM7iW8WJKi3G_A_Usgp-Bhl8tbOqL7lCkZgpa4Nod76W7FRbSAZ6jwekyynJXd7CDYTSnoilbuGTvRpgvjkYpAMuTBCUwQYeFMpOKsRafkrus1HHzPUC6RFtS0Zu0okF4UVZyeJj_NnQD1C4ck/s72-c/Sam%20Gross%20picture.png" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-7383278761830184347</id><published>2023-05-29T12:13:00.002-04:00</published><updated>2023-05-29T17:20:59.083-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Three Talks on the C API</title><content type='html'>The &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit 2023&lt;/a&gt; began with an extended discussion of Python’s &lt;a href=&quot;https://docs.python.org/3/c-api/index.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;C API&lt;/span&gt;&lt;/a&gt;&lt;span&gt; – the interface through which it is possible to communicate between code written in Python and code written in low-level languages, like C. The fullness of this interface is a significant factor behind the vibrancy of Python’s ecosystem, enabling libraries such as &lt;/span&gt;&lt;a href=&quot;https://github.com/numpy/numpy&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;NumPy&lt;/span&gt;&lt;/a&gt;&lt;span&gt; and &lt;/span&gt;&lt;a href=&quot;https://github.com/pandas-dev/pandas&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;pandas&lt;/span&gt;&lt;/a&gt;&lt;span&gt; that are foundational to Python’s widespread use in data science.&lt;/span&gt;&lt;p&gt;&lt;span&gt;Three speakers had booked slots to discuss the C API this year: Mark Shannon, Guido van Rossum, and Antonio Cuni. The conversation evolved naturally from one talk to the next, so in this blog post, I’ll be discussing the three talks together.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;All at sea on the C API&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_0AUlHvdFlA1D5qHlngSRaT8smzG9Su1UAdEMgz1reCrG_-ESm8WYB-zVK8j7LHT-qqxlWavJRBY7YJilLayk-EFAVAZDUp55w5q_IZ0wndNeuB_3Ibxar87rKePkdA9q8sCaAR0X3SOf7qa8WuSJOSE8yN6X2aUyqCIMmNjgN6uPqg/s1024/DALL%C2%B7E%202023-05-18%2016.24.34%20-%20A%20Van%20Gogh%20painting%20of%20a%20man%20doing%20computer%20programming%20on%20a%20dinghy%20in%20the%20middle%20of%20a%20storm%20at%20sea,%20sunlight%20dramatically%20piercing%20through%20the%20clouds.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_0AUlHvdFlA1D5qHlngSRaT8smzG9Su1UAdEMgz1reCrG_-ESm8WYB-zVK8j7LHT-qqxlWavJRBY7YJilLayk-EFAVAZDUp55w5q_IZ0wndNeuB_3Ibxar87rKePkdA9q8sCaAR0X3SOf7qa8WuSJOSE8yN6X2aUyqCIMmNjgN6uPqg/s320/DALL%C2%B7E%202023-05-18%2016.24.34%20-%20A%20Van%20Gogh%20painting%20of%20a%20man%20doing%20computer%20programming%20on%20a%20dinghy%20in%20the%20middle%20of%20a%20storm%20at%20sea,%20sunlight%20dramatically%20piercing%20through%20the%20clouds.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The C API at sea (illustration by DALL-E)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;“I still don’t know what the C-API is, and I’ve been trying for years!”&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Mark Shannon, CPython Core Developer&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;Mark Shannon spoke on the problems (as he saw them) with Python’s C API. Shannon lamented that with every minor Python version, a slew of third-party C extensions seemed to break. He argued that the root cause was that the needs of C extensions were not adequately met by the formal C API, which had evolved in a haphazard and often-unplanned way over the past three decades of Python’s existence.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;As a result of the C API’s flaws, Shannon said, extension authors were forced to reach beyond the formal API and into implementation details that had emerged as a kind of “implicit API”. The implementation details that constituted the new “implicit API” had become so widely depended upon that it was now impossible for CPython to change some parts of its code without breaking large parts of the Python ecosystem.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Shannon believes that the new “implicit API” should be formalised in Python 3.13. This, he argues, would put an end to the cycle of CPython releases inevitably leading to widespread breakages in C extensions.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Sam Gross, who (among &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0703/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;other things&lt;/span&gt;&lt;/a&gt;&lt;span&gt;) has contributed to &lt;/span&gt;&lt;a href=&quot;https://github.com/pytorch/pytorch&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;pytorch&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, agreed with Shannon that the C API was lacking in many areas. Gross argued that there was a great deal of important functionality that wasn’t exposed to extension authors. “Projects just end up copying-and-pasting CPython C code,” Gross said, meaning the extensions broke with each new release of CPython.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Pablo Galindo Salgado, release manager for Python 3.10 and 3.11, said that the release process for those versions had felt like a “game of whackamole” when it came to third-party C extensions breaking. Salgado argued that CPython needed to reach out to the authors of extensions such as pytorch to gather detailed feedback on what core functionality was missing from the API. Several attendees expressed frustration with a perceived tendency among C extension authors to immediately reach into CPython implementation details when something they needed was missing from the API. The result of this was that CPython core developers were often in the dark about which things the C API &lt;/span&gt;&lt;em&gt;&lt;span&gt;should&lt;/span&gt;&lt;/em&gt;&lt;span&gt; be providing, but currently wasn’t. “We might not be able to give you a solution,” Salgado said, “But please come to us and tell us what your problem is, if you have a problem!”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Gross proposed that CPython should run third-party test suites with new versions of CPython as they were being developed, so that the Core Dev team would be able to spot third-party breakages early and gauge the impact of their changes. Pytorch operated a similar programme, Gross said, and it had been successful in helping to limit breakages of third-party pytorch models as the core pytorch team evolved their API.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Brandt Bucher noted, however, that the problem often wasn’t so much that CPython was unaware when they were breaking third-party code – the benchmarks run in &lt;/span&gt;&lt;a href=&quot;https://github.com/python/pyperformance&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the pyperformance suite&lt;/span&gt;&lt;/a&gt;&lt;span&gt; often served as an early warning signal for breakages in C extensions. The problem was often that CPython would offer to help affected projects, only to have their help rejected. Several core developers had previously sent pull requests to help third-party projects become compatible with an upcoming version of CPython, only for their pull requests to remain unmerged for several months due to burned-out maintainers of these projects.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Let’s get specific&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO-1oRlIU4n4U5yQPoikvJjW6AHx9ke2CQxHtAPTlekE-bdXMCstMR2jRCaU74nO9ndcVJunKVHdC5NtLiTEFO0cjWDPpZWBe_rfMMtVEGNL5OWUImK-QZMZuW-OxBAi274wv_CbCZU6peUlUBVKErDJo-z5yBd0nS9tVcKFnpkNxJRwQ/s959/image_2023-05-27_221430833.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;959&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO-1oRlIU4n4U5yQPoikvJjW6AHx9ke2CQxHtAPTlekE-bdXMCstMR2jRCaU74nO9ndcVJunKVHdC5NtLiTEFO0cjWDPpZWBe_rfMMtVEGNL5OWUImK-QZMZuW-OxBAi274wv_CbCZU6peUlUBVKErDJo-z5yBd0nS9tVcKFnpkNxJRwQ/s320/image_2023-05-27_221430833.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Guido van Rossum speaks to the Language Summit on the C API&lt;br /&gt;(photo by Hugo van Kemenade)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;Shannon was clear about what he thought the problem with the C API was. The problem was that the C API was insufficient for the authors of C extensions, leading these authors to reach into CPython implementation details, leading to an unending cycle of projects breaking with each new release of CPython. Others, however, argued that this wasn’t so much a specific problem but a genre of problems. Each specific project might have a different notion about which things were imperfect with the C API, and which things were missing from the C API. Each imperfection or absence could be considered a concrete problem in its own way. “Things break for everybody, but things break in different ways for different people,” Carol Willing argued. “We need more granularity in our understanding of that.”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;As Mark Shannon’s slot drew to an end, Guido van Rossum opted to continue the discussion that Shannon had started, but sought to draw attention to a more precise enumeration of the difficulties C API users were facing.&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;“There’s lots of ideas here, but I don’t know what the problem is!”&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Carol Willing, CPython Core Developer&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;Simon Cross, a contributor to &lt;/span&gt;&lt;a href=&quot;https://github.com/hpyproject/hpy&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the HPy project&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, reported that the HPy project had, in the early stages of the project, put together a long list of the problems, as they saw them, with the CPython C API. Cross offered to share the list with the Core Dev team. Thomas Wouters, a Google employee, also offered to provide a list of difficulties Google had experienced when upgrading to recent Python releases, something the company keeps detailed records of. There was agreement that putting together a comprehensive list of problems with the existing API was an important first step, before CPython could consider drawing up plans to fix the problem.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The C API discussions ended with an agreement that further discussion was required. Interested parties can follow the ongoing conversation at &lt;a href=&quot;https://github.com/capi-workgroup/problems/issues&quot;&gt;https://github.com/capi-workgroup/problems/issues&lt;/a&gt;. The plan is to work towards an informational PEP, with input from an array of stakeholders, outlining a consensus around the problems and pitfalls in the current C API. Once the problems with the status quo have been enumerated in detail, the community might be in a position to consider possible solutions.&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;HPy: A possible solution?&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyFD0leE8UsskX9WuC7J1LZA2470XLK2seL82YQrGQJnqix-bdWFgei-_q02a2k-NCoccvTWV9E7oWg8LEEJvfiNIiZ71P3YorGvuefXGY4YsvEvMybNEA0RyoeyUYWF_NfIon8DQ3J_A_UM5epaSEaFg6BQoeNiR9XFMp-J_EK5Vkzk/s1216/Cuni%20slide%20screenshot.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;690&quot; data-original-width=&quot;1216&quot; height=&quot;182&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyFD0leE8UsskX9WuC7J1LZA2470XLK2seL82YQrGQJnqix-bdWFgei-_q02a2k-NCoccvTWV9E7oWg8LEEJvfiNIiZ71P3YorGvuefXGY4YsvEvMybNEA0RyoeyUYWF_NfIon8DQ3J_A_UM5epaSEaFg6BQoeNiR9XFMp-J_EK5Vkzk/s320/Cuni%20slide%20screenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;A slide from Antonio Cuni&#39;s talk on HPy&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;While the C API discussions ended with a detailed discussion of the problems in the current C API, the first talk of the day was in fact by Antonio Cuni, a core developer with &lt;/span&gt;&lt;a href=&quot;https://github.com/hpyproject/hpy&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the HPy project&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. HPy is an alternative C API for Python – an API that seeks to avoid many of the pitfalls of the current API. The contention of the HPy developers is that the current C API is bad for CPython, bad for alternative implementations of Python such as &lt;/span&gt;&lt;a href=&quot;https://www.pypy.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PyPy&lt;/span&gt;&lt;/a&gt;&lt;span&gt; or &lt;/span&gt;&lt;a href=&quot;https://github.com/oracle/graalpython&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;GraalPython&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, and, ultimately, bad for end users.&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;HPy is a specification of a new API and ABI for extending Python that is Python implementation agnostic and designed to hide and abstract internal details&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;--&amp;nbsp;&lt;a href=&quot;https://github.com/hpyproject/hpy&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;&lt;i&gt;The HPy GitHub README&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;Cuni began by describing the key goals of the HPy project:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;span&gt;An API that doesn’t leak CPython-specific implementation details&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A 0% (or close to 0%) performance overhead when compared with CPython’s current C API&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A “Universal ABI” that allows compiled extension modules to use the same interface to communicate with PyPy (for example) as they would do to communicate with CPython&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;An API that is garbage-collection friendly.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span&gt;Cuni argued that if the Python ecosystem as a whole moved to using HPy, instead of the “official” C API, there would be dramatically fewer breakages of C extensions with each new Python release. Cuni’s proposal was that CPython should “officially bless” HPy as the recommended C API for Python.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;HPy Hpy Hooray?&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5SAdpZyRNSY-AqgNxZ6KGXs030pc2EiBkPt7c34tZPisLgt72Ps36i6GfdL9kql4bou9lEFpfqBBRAEMc8CIACo78Mr1wlHwVinPsuU3SNxXlQcsI72m4Yxwk_YrCbU1aEVATPvPAH_ZM4-_ylFfsuvOLqm4bKL0V_yAGJTNlB9C2MJE/s959/image_2023-05-27_221734482.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;959&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5SAdpZyRNSY-AqgNxZ6KGXs030pc2EiBkPt7c34tZPisLgt72Ps36i6GfdL9kql4bou9lEFpfqBBRAEMc8CIACo78Mr1wlHwVinPsuU3SNxXlQcsI72m4Yxwk_YrCbU1aEVATPvPAH_ZM4-_ylFfsuvOLqm4bKL0V_yAGJTNlB9C2MJE/s320/image_2023-05-27_221734482.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Simon Cross, HPy Core Developer&lt;br /&gt;(photo by Hugo van Kemenade)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;Cuni’s talk was exuberant, but it was at times somewhat unclear what exactly he was asking for from the room. “The investment from CPython,” Cuni argued “would be a political investment rather than a technical one”. Thomas Wouters, however, argued that the CPython team didn’t have the “moral authority” to coerce extension authors into using HPy. Hynek Schlawack agreed, arguing that it was perhaps unrealistic to migrate the entire Python ecosystem towards HPy.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Many were uncertain about what it would even mean to “officially bless” HPy – would CPython host HPy’s documentation on &lt;/span&gt;&lt;a href=&quot;http://docs.python.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;docs.python.org&lt;/span&gt;&lt;/a&gt;&lt;span&gt;? Or would CPython simply add a note to the documentation of the C API that the “official” C API was no longer the &lt;/span&gt;&lt;em&gt;&lt;span&gt;recommended&lt;/span&gt;&lt;/em&gt;&lt;span&gt; way to write a C extension? Guido van Rossum emphasised that a top-down approach from the Core Dev team to extension authors wouldn’t work: nobody wanted a repeat of the decade-long transition from Python 2 to Python 3. Carol Willing agreed that pushing C extension authors to use HPy could be counterproductive, arguing that it was important to remember the impact of our decisions on end users of Python.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Other core developers were sceptical about the fundamentals of HPy itself. HPy’s origin story lies in &lt;a href=&quot;https://www.pypy.org/posts/2018/09/inside-cpyext-why-emulating-cpython-c-8083064623681286567.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;difficulties PyPy encountered when it trying to use CPython’s existing C API&lt;/a&gt;. These difficulties led to attempts to create an API that could be easily used on either Python implementation. Larry Hastings argued that blessing an API that was friendlier to PyPy had clear benefits to PyPy (and other implementations), but that it was less clear where CPython stood to gain from this change.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Cuni’s response was that if the ecosystem migrated to an API that exposed fewer implementation details directly, CPython would be able to refactor its internal implementation far more seamlessly, as CPython would no longer have to worry about breaking a multitude of third-party C extensions with every internal reorganisation of code. Cuni mentioned &lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;efforts to run CPython using WebAssembly&lt;/a&gt; as a specific area where CPython could stand to gain, as the HPy API could interact far more easily with the Javascript garbage collector. And Cuni also noted that HPy made it easy for extension authors to test whether they were sticking to the API or not, something which is famously hard to know with the current C API. “We don’t know all the experimentation that this might enable,” Cuni exclaimed, however, “Because we haven’t implemented this change yet!”&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0jGMJJRJ-p-vUDoVQIKuEoMM61NmDLbLXDQALevgnSOaiGfI728qgxcuHau8OxqciLoVxuMJslnd7vuizRHWau4prrClJn3XyKkgPaftHrSFdK-FE2QOgiE8wshlhIoxp3l4FuqbP-tp0t3vcbWUD4gwVBnlEOmiGEkCgQ8XAslBHcdg/s1231/image_2023-05-18_145653379.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;702&quot; data-original-width=&quot;1231&quot; height=&quot;182&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0jGMJJRJ-p-vUDoVQIKuEoMM61NmDLbLXDQALevgnSOaiGfI728qgxcuHau8OxqciLoVxuMJslnd7vuizRHWau4prrClJn3XyKkgPaftHrSFdK-FE2QOgiE8wshlhIoxp3l4FuqbP-tp0t3vcbWUD4gwVBnlEOmiGEkCgQ8XAslBHcdg/s320/image_2023-05-18_145653379.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;Mark Shannon was another core developer expressing scepticism about HPy. Shannon argued that while HPy had strengths over the “official” C API, it was far from perfect. “We should try to fix CPython’s API” before CPython recommended users switch to HPy, Shannon argued. Simon Cross, also of the HPy project, said that the team welcomed feedback about where they could improve. It was still easy for HPy to make changes, Cross argued, given they had not yet achieved widespread adoption.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Further Reading on HPy&lt;/span&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hpyproject/hpy/wiki/c-api-next-level-manifesto&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;HPy’s overview of changes needed to the C API&lt;/span&gt;&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hpyproject/hpy/wiki/c-api-next-level-changes&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;HPy’s explanation of why the changes are needed&lt;/span&gt;&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7383278761830184347'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7383278761830184347'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-three.html' title='The Python Language Summit 2023: Three Talks on the C API'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_0AUlHvdFlA1D5qHlngSRaT8smzG9Su1UAdEMgz1reCrG_-ESm8WYB-zVK8j7LHT-qqxlWavJRBY7YJilLayk-EFAVAZDUp55w5q_IZ0wndNeuB_3Ibxar87rKePkdA9q8sCaAR0X3SOf7qa8WuSJOSE8yN6X2aUyqCIMmNjgN6uPqg/s72-c/DALL%C2%B7E%202023-05-18%2016.24.34%20-%20A%20Van%20Gogh%20painting%20of%20a%20man%20doing%20computer%20programming%20on%20a%20dinghy%20in%20the%20middle%20of%20a%20storm%20at%20sea,%20sunlight%20dramatically%20piercing%20through%20the%20clouds.png" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-7525632046495448238</id><published>2023-05-29T11:34:00.002-04:00</published><updated>2023-05-29T17:21:19.825-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Python on Mobile</title><content type='html'>
&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;p&gt;&lt;span&gt;At the &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit 2023&lt;/a&gt;, Russell Keith-Magee presented on the ongoing efforts of &lt;/span&gt;&lt;a href=&quot;https://beeware.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;BeeWare&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, a project that aims to make it easier to run Python on mobile platforms such as Android and iOS.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhKd0EQEStk2AWmSAjsGgsESDcswdm1vnDv77ZrTgwbJdOD6Om0nyFfH6gxIT1fvBo6Tt9bykJuS1pIkPD1qNFnLiINcLdtiebwaDA4CvfOCyNkoq5nRNKZ9K0_7FPWhsYhLJXGxbv7BCL2XEMHZNQxfl61szs8q0yAX56kyk_PKSXXG4A&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;270&quot; data-original-width=&quot;270&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhKd0EQEStk2AWmSAjsGgsESDcswdm1vnDv77ZrTgwbJdOD6Om0nyFfH6gxIT1fvBo6Tt9bykJuS1pIkPD1qNFnLiINcLdtiebwaDA4CvfOCyNkoq5nRNKZ9K0_7FPWhsYhLJXGxbv7BCL2XEMHZNQxfl61szs8q0yAX56kyk_PKSXXG4A&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The BeeWare logo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Russell Keith-Magee is one busy bee&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Improving Python’s story for running on mobile has been a labour of love for Keith-Magee for eight years at this point. Keith-Magee &lt;/span&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2020/05/cpython-on-mobile-platforms.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;last presented at the Python Language Summit in 2020&lt;/span&gt;&lt;/a&gt;&lt;span&gt; (a year when the summit was conducted entirely virtually due to the Covid-19 pandemic). Since then, however, great progress has been made.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The biggest change since his last update, Keith-Magee reported, wasn’t technical – it was financial. For the last year, BeeWare has no longer been a hobby project for Keith-Magee. He is now paid by &lt;/span&gt;&lt;a href=&quot;https://www.anaconda.com&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Anaconda&lt;/span&gt;&lt;/a&gt;&lt;span&gt; to &lt;/span&gt;&lt;a href=&quot;https://beeware.org/news/buzz/exciting-news-for-the-future-of-beeware/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;work on the project full time&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, along with a colleague, Malcolm Smith. “I now have the resources to do the work” required to make this happen, he announced.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Keith-Magee came to the Language Summit this year with a proposal: to add Android and iOS as platforms with “tier-3” support from CPython in Python 3.13.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;What does “tier-3 support” mean? Tier-3 support, as defined by &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0011/#tier-3&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 11&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, describes a level of support that the CPython core developers commit to giving a specific platform. The CPython test suite is run constantly on popular platforms such as Ubuntu, Windows and MacOS, and test failures on these platforms can block releases until they are fixed. More esoteric platforms, meanwhile, are tested in CI less frequently. Test failures on those platforms will not necessarily block a release of CPython.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Tier-3 support is the current level of support Python provides to the &lt;a href=&quot;https://emscripten.org&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;emscripten&lt;/a&gt;, &lt;a href=&quot;https://wasi.dev&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;WASI&lt;/a&gt; and &lt;a href=&quot;https://www.freebsd.org&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;FreeBSD&lt;/a&gt; platforms, among others. If a platform has tier-3 support, the test suite will be run on the platform on a regular basis, but not on every pull request. Tier-3 support indicates that at least one core developer has committed to supporting CPython on that platform as best they can. However, test failures on that platform will not block a release of CPython.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;The path to tier-3 support&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Historically, a significant barrier standing in the way of mobile-platform support from CPython has been the difficulties associated with running tests on mobile platforms in &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Continuous_integration&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;CI&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. Keith-Magee announced, however, that it was now possible to run the CPython test suite on mobile platforms via &lt;/span&gt;&lt;a href=&quot;https://beeware.org/project/projects/tools/briefcase/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Briefcase&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, BeeWare’s packaging and development tool. (Getting the test suite to &lt;/span&gt;&lt;em&gt;&lt;span&gt;pass&lt;/span&gt;&lt;/em&gt;&lt;span&gt; is another issue – But Keith-Magee felt confident that it would be easy to make progress on that front.) As such, Keith-Magee reported, it should be feasible for CPython to integrate running tests on these platforms into the project’s testing infrastructure on GitHub.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;One remaining issue is a fairly specific question, but an important one nonetheless: on a mobile platform, what should &lt;/span&gt;&lt;a href=&quot;https://docs.python.org/3/library/sys.html#sys.platform&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;sys.platform&lt;/code&gt;&lt;/a&gt;&lt;span&gt; be? The two major mobile platforms are currently inconsistent about this: on iOS, &lt;/span&gt;&lt;code&gt;sys.platform == &quot;ios&quot;&lt;/code&gt;&lt;span&gt;, whereas on Android, &lt;/span&gt;&lt;code&gt;sys.platform == &quot;linux&quot;&lt;/code&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The advantage of the first approach is that it is easy for user code to detect whether the code is being run on iOS or not. The advantage of the second approach, meanwhile, is that most existing Python code won’t necessarily account for the possibility that it might be run on Android or iOS, so will run into difficulties with idioms such as the following:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;python hljs&quot;&gt;&lt;div class=&quot;wrapper&quot;&gt;&lt;div class=&quot;gutter linenumber&quot;&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt; sys.platform == &lt;span class=&quot;hljs-string&quot;&gt;&quot;linux&quot;&lt;/span&gt;:
    do_fancy_linux_only_feature()
&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;The Android platform, Keith-Magee noted, is very similar to Linux, so by setting &lt;/span&gt;&lt;code&gt;sys.platform&lt;/code&gt;&lt;span&gt; to “linux”, a lot of code “just works” on Android even though the code hasn’t explicitly accounted for the possibility that it might be run on that platform.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Abuzz with excitement&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMf7wl_3NSqzHPBtLs31nHWssIZ1rIY3Wd5AmZKsrmQJnxvn0AQT0yF-cbuP6oldqPjC3L75USN9wYhENRXMmLoPgfEvVx6bUiu7RMNHpkWeexNYmKKRIetyQkdAFlloeZt1KAS9tP9OCu4F9QXY7mF2L11TasEGT2MTrKODgJRDqqkj8/s959/image_2023-05-27_221125338.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;959&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMf7wl_3NSqzHPBtLs31nHWssIZ1rIY3Wd5AmZKsrmQJnxvn0AQT0yF-cbuP6oldqPjC3L75USN9wYhENRXMmLoPgfEvVx6bUiu7RMNHpkWeexNYmKKRIetyQkdAFlloeZt1KAS9tP9OCu4F9QXY7mF2L11TasEGT2MTrKODgJRDqqkj8/s320/image_2023-05-27_221125338.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Keith-Magee in flight (photo by Hugo van Kemenade)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;Keith-Magee’s talk was greeted enthusiastically by the core developers in the room; there was strong consensus that Python needed a better story on mobile platforms. Carol Willing expressed excitement about the ways in which support for mobile platforms could help Python spread globally, to countries where large numbers of people had no access to desktop computers (but had easy access to phones). Łukasz Langa agreed, noting that he had received many enquiries about Python on mobile after giving a talk on the subject about a year ago. “It’s interesting to a &lt;/span&gt;&lt;em&gt;&lt;span&gt;lot&lt;/span&gt;&lt;/em&gt;&lt;span&gt; of people,” Langa commented. “We need it.”&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;“Wooooo!”&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Carol Willing, CPython Core Developer&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;On the &lt;/span&gt;&lt;code&gt;sys.platform&lt;/code&gt;&lt;span&gt; question, Core Developer Filipe Laíns said that he was working on a new API for the &lt;/span&gt;&lt;a href=&quot;https://docs.python.org/3/library/sysconfig.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;sysconfig&lt;/code&gt;&lt;/a&gt;&lt;span&gt; standard-library module, which will provide a more granular way of distinguishing between platforms from user code. In the meantime, Brett Cannon wondered if BeeWare could use the same approach as CPython builds for WebAssembly: on WebAssembly builds, unusually, &lt;/span&gt;&lt;code&gt;sys.platform&lt;/code&gt;&lt;span&gt; has a different value to &lt;/span&gt;&lt;code&gt;os.name&lt;/code&gt;&lt;span&gt; (&lt;/span&gt;&lt;code&gt;sys.platform &lt;/code&gt;&lt;span&gt;is either &quot;wasi&quot; or &quot;emscripten&quot;, but &lt;/span&gt;&lt;code&gt;os.name &lt;/code&gt;&lt;span&gt;is &quot;linux&quot;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Another outstanding question, however, is what the release process would look like for these new platforms. There was appreciation of the work Keith-Magee had already put into BeeWare, and nobody doubted that he would continue to be committed to the project. However, Keith-Magee is not currently a core developer, leading to a concern that CPython might be supporting a platform that nobody on the core team had expertise in.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Ned Deily, release manager for Python 3.6 and 3.7, worried that distributing CPython binaries for these platforms might not be feasible, as it would make the release process “even more arduous”. Keith-Magee responded that it could be possible to automate the build process for these platforms. If it wasn’t, he said, it also wouldn’t necessarily be essential for CPython to distribute official binaries for these platforms, at least at first.&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Where next for BeeWare?&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Keith-Magee’s next steps are to work towards upstreaming the patches to CPython that the BeeWare project has made, so that CPython on mobile platforms can “just work” without any changes being made. The alterations that have already been made to support &lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;CPython on WebAssembly&lt;/a&gt; have made this task much easier, Keith-Magee noted.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7525632046495448238'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/7525632046495448238'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-python.html' title='The Python Language Summit 2023: Python on Mobile'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhKd0EQEStk2AWmSAjsGgsESDcswdm1vnDv77ZrTgwbJdOD6Om0nyFfH6gxIT1fvBo6Tt9bykJuS1pIkPD1qNFnLiINcLdtiebwaDA4CvfOCyNkoq5nRNKZ9K0_7FPWhsYhLJXGxbv7BCL2XEMHZNQxfl61szs8q0yAX56kyk_PKSXXG4A=s72-c" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-2780073626786371552</id><published>2023-05-29T11:14:00.011-04:00</published><updated>2023-06-25T14:46:25.716-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023</title><content type='html'> Every year, just before the start of PyCon US, core developers, triagers, and special guests gather for the Python Language Summit: an all-day event of talks where the future direction of Python is discussed. The Language Summit 2023 included three back-to-back talks on the C API, an update on work towards making the Global Interpreter Lock optional, and a discussion on how to tackle burnout in the community.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This year&#39;s summit received around 45 attendees, and the summit was covered by Alex Waygood.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0X3Sj-KVFyXteYb66VcF4DxKMmhlqV8vVWfpThq6bbC0YOz3mUPA-j_64U6v8GKN10JYLZ0LNBuOJMOv11D2zokJHdPxbfkoL1Etvn0OUdk1MLsv1TZydBMSNVVic8plYV6MvDjo_hMTGbxSZTph8uWkXagYijQkp45wrkHUjZJq2O8ysw/s1341/pycon23.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;894&quot; data-original-width=&quot;1341&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0X3Sj-KVFyXteYb66VcF4DxKMmhlqV8vVWfpThq6bbC0YOz3mUPA-j_64U6v8GKN10JYLZ0LNBuOJMOv11D2zokJHdPxbfkoL1Etvn0OUdk1MLsv1TZydBMSNVVic8plYV6MvDjo_hMTGbxSZTph8uWkXagYijQkp45wrkHUjZJq2O8ysw/w400-h266/pycon23.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Attendees of the Python Language Summit&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;&lt;br /&gt;

&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-three.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Three Talks on the C API&lt;/a&gt;: Talks by Antonio Cuni, Mark Shannon and Guido van Rossum&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-making.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Making the Global Interpreter Lock Optional&lt;/a&gt;: A talk by Sam Gross&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-towards.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Towards Native Profiling for Python&lt;/a&gt;: A talk by Joannah Nanjekye&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-what-is.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;What is the stdlib for?&lt;/a&gt; A talk by Brett Cannon&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-pattern.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Pattern Matching, __match__, and View Patterns&lt;/a&gt;: A talk by Michael Sullivan&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-python.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Python on Mobile: State of the Union&lt;/a&gt;. A talk by Russell Keith-Magee&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-burnout.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Burnout is Real&lt;/a&gt;: A talk by Guido van Rossum&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Lightning Talks&lt;/a&gt;, featuring short presentations by Dong-hee Na, Carl Meyer and Amethyst Reese&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2780073626786371552'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/2780073626786371552'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html' title='The Python Language Summit 2023'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0X3Sj-KVFyXteYb66VcF4DxKMmhlqV8vVWfpThq6bbC0YOz3mUPA-j_64U6v8GKN10JYLZ0LNBuOJMOv11D2zokJHdPxbfkoL1Etvn0OUdk1MLsv1TZydBMSNVVic8plYV6MvDjo_hMTGbxSZTph8uWkXagYijQkp45wrkHUjZJq2O8ysw/s72-w400-h266-c/pycon23.JPG" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-4665788984650582520</id><published>2023-05-29T11:13:00.003-04:00</published><updated>2023-05-30T06:14:16.266-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: Lightning Talks</title><content type='html'>
&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;The &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit 2023&lt;/a&gt; closed off with a trio of lightning talks from Dong-hee Na, Carl Meyer and Amethyst Reese.&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;markdown-body container-fluid comment-inner comment-enabled&quot; data-hard-breaks=&quot;true&quot; id=&quot;doc&quot;&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Dong-hee Na: Let’s support LLVM-BOLT as an official feature&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;CPython Core Developer Dong-hee Na gave a short presentation on the LLVM-BOLT optimiser, arguing that we should support it as a standard feature of CPython.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;LLVM-BOLT is a “post link time binary optimiser” that was adopted by &lt;/span&gt;&lt;a href=&quot;https://github.com/pyston&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;the Pyston project&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, a performance-oriented fork of CPython 3.8. The Pyston team had reported that use of the optimiser resulted in performance gains of 2-4% on their benchmarks, although the&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://devblogs.microsoft.com/python/python-311-faster-cpython-team/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Faster CPython team&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;and Dong-hee Na &lt;a href=&quot;https://github.com/faster-cpython/ideas/issues/224&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;had reported smaller returns&lt;/a&gt; when they had applied the optimiser to Python 3.11.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Dong-hee Na showed benchmark results that showed significant speedups in some areas with LLVM-BOLT applied to Python 3.12, but noted that LLVM-BOLT also caused regressions in some other areas due to overly aggressive optimisations. He announced that he had added support for LLVM-BOLT to CPython as an optional compile-time flag, &lt;/span&gt;&lt;code&gt;--enable-bolt&lt;/code&gt;&lt;span&gt;, to allow experimentation with the feature.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi0d1JAcXu962gjfuEKscZMczSxI7IAnt7EvD_MLu7BoMClEYxIl1fzdlnSbnYa0XzvfM-gOLOia2dIUewL6JFgbyjeBtYUUKR9Mpshg_7U0fwqXhY9Mkeg-uV3D5Ru-uKyUOswg2hySU6kGflLpBWY-kJ3gC3960SODPRsmASkuiavjbU&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1366&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi0d1JAcXu962gjfuEKscZMczSxI7IAnt7EvD_MLu7BoMClEYxIl1fzdlnSbnYa0XzvfM-gOLOia2dIUewL6JFgbyjeBtYUUKR9Mpshg_7U0fwqXhY9Mkeg-uV3D5Ru-uKyUOswg2hySU6kGflLpBWY-kJ3gC3960SODPRsmASkuiavjbU&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;A slide from Dong-hee Na&#39;s talk on LLVM-Bolt&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Carl Meyer: Lazy Imports – the sequel&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Carl Meyer instigated a short discussion on proposals to introduce a mechanism enabling lazy imports in Python. Following &lt;/span&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Meyer’s lightning talk on the same subject last year&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, Meyer – along with his colleague, Germán Méndez Bravo (who, according to Meyer, deserves “most of the credit”) – had written &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0690/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 690&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, proposing a compile-time flag that would make imports in Python lazy by default. The PEP, however, was &lt;/span&gt;&lt;a href=&quot;https://discuss.python.org/t/pep-690-lazy-imports-again/19661/26&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;rejected by the Steering Council&lt;/span&gt;&lt;/a&gt;&lt;span&gt; in December 2022, due to concern that the new flag would have created a split in the community between programmers who used Python with lazy imports enabled, and those who used Python with eager imports.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Meyer’s question to the audience was: where next for lazy imports? Was it worth modifying the proposal and trying again, or was the whole idea doomed? Meyer noted that the team at Instagram, where he worked, had seen start-up time improvements of 50-80%, and 40-90% reductions in memory usage, by adopting lazy imports in the &lt;/span&gt;&lt;a href=&quot;https://github.com/facebookincubator/cinder&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;fork of CPython&lt;/span&gt;&lt;/a&gt;&lt;span&gt; they used for the Instagram web server.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Meyer floated a series of possible changes (some mutually exclusive) that could be made to the PEP. For each possible change, he asked if the change would make attendees more or less likely to support adding support for lazy imports to Python:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Explicit opt-in syntax marking a specific import as lazy (e.g. &lt;/span&gt;&lt;code&gt;lazy import inspect&lt;/code&gt;&lt;span&gt;).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A clear roadmap detailed in the PEP, outlining the timeframe in which it was expected that lazy-import behaviour would become the default in Python.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A promise that the implementation of lazy imports would not lead to any changes being made to the &lt;/span&gt;&lt;code&gt;dict&lt;/code&gt;&lt;span&gt; data structure.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Generalised support of “lazy names”, rather than just support for lazy &lt;/span&gt;&lt;em&gt;&lt;span&gt;imports&lt;/span&gt;&lt;/em&gt;&lt;span&gt; specifically.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;span&gt;The room unanimously agreed that change (3) would make them more likely to support the PEP, and largely agreed that change (4) would make them less likely to support it. The room was (frustratingly, for Meyer) split on whether proposals (1) and (2) would make them more or less likely to give the PEP their support.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;On the bright side, only one attendee said they thought they could never support a proposal for lazy imports in Python. &lt;/span&gt;&lt;em&gt;&lt;span&gt;Unfortunately&lt;/span&gt;&lt;/em&gt;&lt;span&gt; for Meyer, the attendee in question was Thomas Wouters, currently serving on the Steering Council.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;hr /&gt;&lt;/h2&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 class=&quot;raw&quot;&gt;&lt;span&gt;Amethyst Reese: Can we &lt;/span&gt;&lt;code&gt;__call__&lt;/code&gt;&lt;span&gt; modules?&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Amethyst Reese presented on an idea that has since become &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0713/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 713&lt;/span&gt;&lt;/a&gt;&lt;span&gt;: a proposal to add a mechanism allowing developers to easily create callable modules.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiY5RbnRYMXpHo5AYTKNrKuRGJH9uwQ8158ypEk9tb09F7AK_XpST-9SfY9Prn6Rw8fd1syzEqVRTCzuPVrTAjYn8VGJmJbIjhaxwWjG8STo6SU9m4ais2PKwQPlHJ_ByqK20J9uWbojLt2ojf3LgSeFVy7RG1L4UjCF7Ol1i3hGYZ7Wyw&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;719&quot; data-original-width=&quot;959&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiY5RbnRYMXpHo5AYTKNrKuRGJH9uwQ8158ypEk9tb09F7AK_XpST-9SfY9Prn6Rw8fd1syzEqVRTCzuPVrTAjYn8VGJmJbIjhaxwWjG8STo6SU9m4ais2PKwQPlHJ_ByqK20J9uWbojLt2ojf3LgSeFVy7RG1L4UjCF7Ol1i3hGYZ7Wyw&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Amethyst Reese at the Python Language Summit&lt;br /&gt;(Photo by Hugo van Kemenade)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Strictly speaking, it’s &lt;/span&gt;&lt;em&gt;&lt;span&gt;possible&lt;/span&gt;&lt;/em&gt;&lt;span&gt; to create a callable module today, but it’s not exactly easy. The example given in the PEP looks something like the following:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;python hljs&quot;&gt;&lt;div class=&quot;wrapper&quot;&gt;&lt;div class=&quot;gutter linenumber&quot;&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; sys
&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; types

&lt;span class=&quot;hljs-keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;hljs-title function_&quot;&gt;fancy&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot;&gt;...&lt;/span&gt;):
    ...

&lt;span class=&quot;hljs-keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;hljs-title class_&quot;&gt;FancyModule&lt;/span&gt;(types.ModuleType):
    &lt;span class=&quot;hljs-keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;hljs-title function_&quot;&gt;__call__&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot;&gt;self, ...&lt;/span&gt;):
        &lt;span class=&quot;hljs-keyword&quot;&gt;return&lt;/span&gt; fancy(...)

sys.modules[__name__].__class__ = FancyModule
&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;Reese proposes that we provide a simpler mechanism to create callable modules: simply provide special recognition for module-level &lt;/span&gt;&lt;code&gt;__call__&lt;/code&gt;&lt;span&gt; functions, similar to the way that &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0562/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 562&lt;/span&gt;&lt;/a&gt;&lt;span&gt; added special recognition of module-level &lt;/span&gt;&lt;code&gt;__getattr__&lt;/code&gt;&lt;span&gt; and &lt;/span&gt;&lt;code&gt;__dir__&lt;/code&gt;&lt;span&gt; functions. With the semantics specified in &lt;/span&gt;&lt;a href=&quot;https://peps.python.org/pep-0713/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;PEP 713&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, &lt;/span&gt;&lt;code&gt;fancy.py&lt;/code&gt;&lt;span&gt; could be rewritten as follows:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;python hljs&quot;&gt;&lt;div class=&quot;wrapper&quot;&gt;&lt;div class=&quot;gutter linenumber&quot;&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;hljs-title function_&quot;&gt;fancy&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot;&gt;...&lt;/span&gt;):
    ...

__call__ = fancy
&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;With a module, &lt;/span&gt;&lt;code&gt;fancy.py&lt;/code&gt;&lt;span&gt;, defined like the above, users would simply be able to do the following:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;python hljs&quot;&gt;&lt;div class=&quot;wrapper&quot;&gt;&lt;div class=&quot;gutter linenumber&quot;&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; fancy
fancy()
&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;This would allow users of Python to avoid constructs which often feel unnecessarily verbose and involve frustrating amounts of boilerplate, such as:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;python hljs&quot;&gt;&lt;div class=&quot;wrapper&quot;&gt;&lt;div class=&quot;gutter linenumber&quot;&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; datetime
&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; pprint
&lt;span class=&quot;hljs-keyword&quot;&gt;import&lt;/span&gt; dis

d = datetime.datetime()
pprint.pprint(...)
dis.dis(...)
&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;It would also allow users to create callable modules in a way that would be easier for type checkers to support, as dynamically inserting custom objects into &lt;/span&gt;&lt;code&gt;sys.modules&lt;/code&gt;&lt;span&gt; can cause issues for these tools.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The proposal was met with curiosity by attendees of the Language Summit. Thomas Wouters said that he had originally opposed the addition of module-level &lt;/span&gt;&lt;code&gt;__getattr__&lt;/code&gt;&lt;span&gt; and &lt;/span&gt;&lt;code&gt;__dir__&lt;/code&gt;&lt;span&gt;, introduced by PEP 562. However, now they had been introduced to Python, he was of the opinion that it might make sense to add support for module-level dunder methods including &lt;/span&gt;&lt;code&gt;__call__&lt;/code&gt;&lt;span&gt;, but also others such as &lt;/span&gt;&lt;code&gt;__setattr__&lt;/code&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4665788984650582520'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/4665788984650582520'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023.html' title='The Python Language Summit 2023: Lightning Talks'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEi0d1JAcXu962gjfuEKscZMczSxI7IAnt7EvD_MLu7BoMClEYxIl1fzdlnSbnYa0XzvfM-gOLOia2dIUewL6JFgbyjeBtYUUKR9Mpshg_7U0fwqXhY9Mkeg-uV3D5Ru-uKyUOswg2hySU6kGflLpBWY-kJ3gC3960SODPRsmASkuiavjbU=s72-c" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8520.post-3693105079121596945</id><published>2023-05-29T11:10:00.005-04:00</published><updated>2023-10-19T08:49:40.255-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pycon"/><title type='text'>The Python Language Summit 2023: What is the Standard Library for?</title><content type='html'>&lt;p&gt;&amp;nbsp;Brett Cannon came to the &lt;a href=&quot;https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023_29.html&quot; rel=&quot;nofollow&quot; target=&quot;&quot;&gt;Python Language Summit&lt;/a&gt; this year with a fundamental question for the assembled core developers: What is the standard library for?&lt;/p&gt;&lt;p&gt;According to a quick&amp;nbsp;&lt;code&gt;python -c &quot;import sys; print(len(sys.stdlib_module_names))&quot;&lt;/code&gt;&amp;nbsp;call on my laptop, the standard library in Python 3.11 consists of 305 importable modules. Many of these are implementation details that, if you’re a good citizen, you really&amp;nbsp;&lt;em&gt;shouldn’t&lt;/em&gt;&amp;nbsp;be importing – but the point stands that the Python standard library is perhaps now larger than it should be.&lt;/p&gt;&lt;p&gt;But the goal of his question, Cannon explained, wasn’t to decide which modules to get&amp;nbsp;&lt;em&gt;rid&lt;/em&gt;&amp;nbsp;of. Instead, it was to create guidelines on when and why&amp;nbsp;&lt;em&gt;new&lt;/em&gt;&amp;nbsp;modules should be accepted into the standard library.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;We need to audit the standard library, and not&amp;nbsp;&lt;em&gt;deprecate&lt;/em&gt;&amp;nbsp;it, but decide which bits should probably not have been added if we had perfect hindsight.&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Guido van Rossum, CPython Core Developer and former BDFL&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Carol Willing agreed that the core dev team shouldn’t be looking to remove modules&amp;nbsp;&lt;em&gt;en masse&lt;/em&gt;, but should decide what kinds of modules they wanted to admit in the future. Łukasz Langa agreed, and pointed out that it was often hard removing modules even when we wanted to, due to the fact that “the standard library is a huge import cycle”.&lt;/p&gt;&lt;h2 class=&quot;raw&quot;&gt;Where do we go now?&lt;/h2&gt;&lt;p&gt;Cannon himself put forward two possible answers to his question, before tossing it out to the audience:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The standard library should contain everything required to bootstrap an installer.&lt;/li&gt;&lt;li&gt;The standard library should make it easy for beginners to be able to write scripts without installing anything.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The conversation was free-flowing, but a common point of consensus among the attendees was that the standard library should focus on tools and utilities that allow users to write better Python code. Hynek Schlawack cited&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/dataclasses.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;dataclasses&lt;/code&gt;&lt;/a&gt;&amp;nbsp;as an example of a module that made writing classes much less painful, and generally led to them writing better code as a result. (Schlawack is the author of the&amp;nbsp;&lt;a href=&quot;https://www.attrs.org/en/stable/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;attrs&lt;/a&gt;&amp;nbsp;library, the third-party inspiration for&amp;nbsp;&lt;code&gt;dataclasses&lt;/code&gt;, which itself is still going strong.) Filipe Laíns agreed, arguing that the core dev team should focus on building business implementations for third-party libraries to build on top of.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“The default answer for ‘Should this be in the standard library?’ should be ‘No’, but we should bless smaller utilities that help people write better Python code”&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;-- &lt;i&gt;Antonio Cuni, HPy Core Developer&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;There was a certain amount of regret in the air about modules that perhaps should never have been added to the standard library, and had proved themselves to be significant maintenance burdens in the years since, but could now never be removed.&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/tkinter.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;tkinter&lt;/code&gt;&lt;/a&gt;, it was universally agreed, was the primary example here; possibly&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/multiprocessing.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;multiprocessing&lt;/code&gt;&lt;/a&gt;&amp;nbsp;also.&lt;/p&gt;&lt;p&gt;Guido van Rossum pondered whether&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/asyncio.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;asyncio&lt;/code&gt;&lt;/a&gt;&amp;nbsp;should ever have been added to the standard library, remarking that it had been difficult to evolve&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;while it was in the standard library, and had possibly been added before it was “fully baked”. The&amp;nbsp;&lt;code&gt;ssl&lt;/code&gt;&amp;nbsp;integration had probably been a mistake, he said, and should have been left to third parties.&lt;/p&gt;&lt;p&gt;Łukasz Langa noted that modules such as&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/typing.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;typing&lt;/code&gt;&lt;/a&gt;, which had continued to evolve rapidly after being added to the standard library, had helped spur new syntax changes to Python that had been to the language’s betterment. Without&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;in the standard library, Langa argued, we would probably never have adopted the&amp;nbsp;&lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt;&amp;nbsp;syntax that is now the foundation of asynchronous Python programming.&lt;/p&gt;&lt;p&gt;Zac Hatfield-Dods, maintainer of several prominent third-party packages, said that different standard-library packages had different impacts on the Python ecosystem.&amp;nbsp;&lt;a href=&quot;https://docs.pytest.org/en/7.3.x/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Pytest&lt;/a&gt;, one of the libraries he maintains, had managed to flourish and find success despite the existence of&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/unittest.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;unittest&lt;/code&gt;&lt;/a&gt;&amp;nbsp;in the standard library. But another library he helps out with, the asynchronous&amp;nbsp;&lt;a href=&quot;https://trio.readthedocs.io/en/stable/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Trio&lt;/a&gt;&amp;nbsp;framework, had struggled to attract users while&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;had been part of the standard library. “Nobody supports alternative async implementations,” he complained, despite Trio’s development often being years ahead of where&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;is. (In the coffee break afterwards, Hatfield-Dods was keen to emphasise that he is, in fact, a fan of&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;and the work of the&amp;nbsp;&lt;code&gt;asyncio&lt;/code&gt;&amp;nbsp;maintainers.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHMtg7BSQza8aOAebA4arhofrKFaaX0MulKsXjgTFBc--7H5bWHuumjdw-DMOHN_eGH1cBA4sZzumqMPp0caSMVZv2aySrlwd7R9jMgjwwsMEpluO89sKCEsbAiHli5fg_i65HkN2OJoXnCqlKQiCA9HBlICEB_NUcFOsN3WcCPKOAbU/s959/image_2023-05-27_223251699.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;719&quot; data-original-width=&quot;959&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHMtg7BSQza8aOAebA4arhofrKFaaX0MulKsXjgTFBc--7H5bWHuumjdw-DMOHN_eGH1cBA4sZzumqMPp0caSMVZv2aySrlwd7R9jMgjwwsMEpluO89sKCEsbAiHli5fg_i65HkN2OJoXnCqlKQiCA9HBlICEB_NUcFOsN3WcCPKOAbU/s320/image_2023-05-27_223251699.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Zac Hatfield-Dods (left), speaking at the Language Summit&lt;br /&gt;(Photo by Hugo van Kemenade)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Cannon brought up the question of whether a module like&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/pathlib.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pathlib&lt;/code&gt;&lt;/a&gt;&amp;nbsp;belonged. “It’s just sugar,” he remarked – i.e., hardly a “core utility” or a protocol that allowed people to write better code. But it has nonetheless been one of the more popular additions to the standard library in recent years. Langa again pushed back, arguing that without the addition of&amp;nbsp;&lt;code&gt;pathlib&lt;/code&gt;&amp;nbsp;to the standard library, we would never have added&amp;nbsp;&lt;a href=&quot;https://docs.python.org/3/library/os.html#os.PathLike&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;os.PathLike&lt;/code&gt;&lt;/a&gt;, a protocol that had allowed a common interface for describing file-system paths in Python. “A third-party PyPI package wouldn’t have convinced us to make that change,” Langa argued.&lt;/p&gt;&lt;p&gt;Several attendees noted that adding a module to the standard library often made it hard for users to use features added to the module in newer versions of Python, due to CPython’s slow development cycle. One solution could be to provide third-party versions of standard-library modules on PyPI, backporting the latest features of a module to older versions of Python. Thomas Wouters argued that previous attempts at providing these backport modules had often been disastrous. However, Jelle Zijlstra noted that&amp;nbsp;&lt;a href=&quot;https://github.com/python/typing_extensions&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;typing_extensions&lt;/a&gt;, which backports features from the latest version of the&amp;nbsp;&lt;code&gt;typing&lt;/code&gt;&amp;nbsp;module, had been incredibly successful (though it was sometimes hard to maintain).&lt;/p&gt;&lt;p&gt;Overall, there was agreement that the original motivations for a large, “batteries-included” standard library no longer held up to scrutiny. “In the good old days,” Ned Deily reminisced, “We said ‘batteries-included’ because we didn’t have a good story for third-party installation.” But in 2023, installing third-party packages from PyPI is much easier.&lt;/p&gt;&lt;p&gt;Often, Thomas Wouters noted, people preferred using standard-library modules in a corporate setting due to the fact that the installation of any third-party package would require approval from their company’s IT department. But, he noted, this was hardly Python’s problem.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/3693105079121596945'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/8520/posts/default/3693105079121596945'/><link rel='alternate' type='text/html' href='https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-what-is.html' title='The Python Language Summit 2023: What is the Standard Library for?'/><author><name>Alex Waygood</name><uri>http://www.blogger.com/profile/18392244184145876843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqWrRywQc7r4CtGECU3Zc_uXAfDKghSO04gIg1NViJH0LSO2CheixJ64sYm4D1Rjh4ZYYUsfJEwPzk8UcvUCGVvdZ3epHA3sYwPST-B6mrh3IvA78v5yPhPhzPzuBsgDU/s113/linkedin+profile+pic.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHMtg7BSQza8aOAebA4arhofrKFaaX0MulKsXjgTFBc--7H5bWHuumjdw-DMOHN_eGH1cBA4sZzumqMPp0caSMVZv2aySrlwd7R9jMgjwwsMEpluO89sKCEsbAiHli5fg_i65HkN2OJoXnCqlKQiCA9HBlICEB_NUcFOsN3WcCPKOAbU/s72-c/image_2023-05-27_223251699.png" height="72" width="72"/><georss:featurename>Salt Lake City, UT, USA</georss:featurename><georss:point>40.7607793 -111.8910474</georss:point><georss:box>12.450545463821157 -147.0472974 69.071013136178848 -76.7347974</georss:box></entry></feed>