<?xml version="1.0" encoding="utf-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">
    <generator uri="https://gohugo.io/" version="0.152.2">Hugo</generator><title type="html"><![CDATA[Scientific-Python on Blog]]></title>
    
    
    
            <link href="https://blog.scientific-python.org/tags/scientific-python/" rel="alternate" type="text/html" title="html" />
            <link href="https://blog.scientific-python.org/tags/scientific-python/atom.xml" rel="self" type="application/atom" title="atom" />
    <updated>2026-04-04T04:32:36+00:00</updated>
    
    
    
    
        <id>https://blog.scientific-python.org/tags/scientific-python/</id>
    
        
        <entry>
            <title type="html"><![CDATA[Community Considerations Around AI Contributions]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/community-considerations-around-ai/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-2/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 2" />
                <link href="https://blog.scientific-python.org/scientific-python/translations/?utm_source=atom_feed" rel="related" type="text/html" title="Translations for Scientific Python projects" />
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1" />
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1: Sparse Arrays" />
                <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python awarded CZI grant to improve communications infrastructure &amp; accessibility" />
            
                <id>https://blog.scientific-python.org/scientific-python/community-considerations-around-ai/</id>
            
            
            <published>2026-01-29T00:00:00+00:00</published>
            <updated>2026-01-29T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>An attempt at exploring risks and impacts of LLMs and agents on our ecosystem, and how we, as a community, may agree upon common cultural norms and standards for integrating such technology into contributor pathways and workflows.</blockquote><p>As LLM- / Agent-generated workflows and PRs become commonplace, we, the Scientific Python maintainer community, have to decide how to engage with them. Much of our ecosystem was crafted by hand, with a lot of care and love, so it is unsurprising that the rise in LLM contributions may at first feel threatening.
I know from personal experience that I felt somewhat deflated the first time one of these landed in front of me.
There was a sense of frustration and loss, and it took me a few days to process the repercussions.
Discussing this with a colleague, he rightfully positioned it as follows:</p>
<blockquote>
<p><em>The reason for the success of projects like NumPy and SciPy is not primarily superior coding ability, or better tooling, but the explosive effect of humans working well together, and enjoying their work. We cannot ignore that human and social element, because if we do, we lose it all, and we really do become lesser versions of programming teams in companies.</em></p>
<p><em>In Rebel Code (Moody, 2001), there is this idea that open-source has always been a movement of rebellion, an attempt at taking back the commons from enclosure. What does the rebellion look like when it loses it social form? What kind of people will we lose?</em> — Matthew Brett</p>
</blockquote>
<p>It is against this backdrop that I spent a week pacing the corridor, hand-wringing.
This post is some part of the result: an attempt at exploring risks and impacts of LLMs and agents on our ecosystem, and how we, as a community, may agree upon common cultural norms and standards for integrating such technology into contributor pathways and workflows. It is not a philosophical piece, jumping pretty much directly into pragmatic concerns. I think the other conversation, the one that ties more directly into Matthew&rsquo;s concerns above, is also very much worth having.</p>
<p>Admittedly, my initial sense of foreboding around LLMs upending our community&rsquo;s culture of collaboration, while by no means gone, has somewhat dissipated as I&rsquo;ve started to also contemplate the other side of the coin: how these changes may benefit maintainers, who have, over the years, increasingly been burdened with more menial tasks, drawing them away from the work that originally attracted them to the ecosystem.</p>
<p>Whether we like it or not, the world has changed irrevocably, and now is a good time to consider how to position ourselves within it.</p>
<p>I start this post outlining concerns, since these have been the topic of most AI conversations within our community.
I&rsquo;ll follow with a section on proposed guidelines that we may iterate on, and end with a more hopeful section of how we may benefit from the revolution underfoot.</p>
<h2 id="maintainer-concerns">Maintainer concerns<a class="headerlink" href="#maintainer-concerns" title="Link to this heading">#</a></h2>
<h3 id="licensing">Licensing<a class="headerlink" href="#licensing" title="Link to this heading">#</a></h3>
<p>The earliest concern raised around LLMs was that they almost certainly violate licensing conditions.
In many cases, they will readily produce material derived from training sources that have licenses incompatible with the library you are contributing to. Being a summarization of a large corpus, an LLM is unlikely to even know that it drew upon a BSD-licensed source when generating code, and as such attribution will not be given.</p>
<p>Of course, it matters <em>what</em> you generate. If you refactor a test suite or correct spelling, you are unlikely to contravene any licenses. If, however, you are implementing a sophisticated algorithm, perhaps one that exists in, say, GPL&rsquo;d libraries (incompatible with our BSD-based ecosystem), the risk increases significantly.</p>
<p>Colleagues I spoke to prior to writing this post mentioned that they often use LLMs for annoying one-off tasks: generating an <code>nginx</code> configuration, writing an OPML-to-YAML converter, or setting up some throwaway experiment. There&rsquo;s little reason to have licensing concerns about such use-cases.</p>
<h3 id="introduction-of-subtle-bugs">Introduction of subtle bugs<a class="headerlink" href="#introduction-of-subtle-bugs" title="Link to this heading">#</a></h3>
<p>LLMs typically operate with limited <em>context</em>. Problem-specific context needs to be selected and provided by the user, and it is not clear what <em>optimal</em> context entails. Certain categories of prediction mistakes occur frequently, including hallucinations and over-confidence. Even having a &ldquo;good memory&rdquo; (i.e., being able to process and reference a lot of material quickly) cannot account for such missing context, and therefore proposed solutions may be sub-optimal.
It happens, therefore, that contributions generated by LLMs introduce subtle bugs, due to a lack of systems architecture awareness.
These are bugs which, unfortunately, you—the maintainer—will be responsible for resolving in the future :)</p>
<p>In a (mostly positive) summary of the current (beginning of 2026) state of AI for coding<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, Andrej Karpathy writes:</p>
<blockquote>
<p><em>The mistakes have changed a lot - they are not simple syntax errors anymore, they are subtle conceptual errors that a slightly sloppy, hasty junior dev might do. The most common category is that the models make wrong assumptions on your behalf and just run along with them without checking. They also don’t manage their confusion, they don’t seek clarifications, they don’t surface inconsistencies, they don’t present tradeoffs, they don’t push back when they should, and they are still a little too sycophantic [telling users what they want to hear].</em> — Andrej Karpathy<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
</blockquote>
<h3 id="reviewer-frustration">Reviewer frustration<a class="headerlink" href="#reviewer-frustration" title="Link to this heading">#</a></h3>
<p>LLM contributions can be generated at a staggering pace, but reviews still require careful human attention. And while a first pass LLM review is fine, we&rsquo;re not going to merge changes without looking at and understanding them first.
After all, that is why the review process exists in the first place—because we&rsquo;ve learned the cost of moving forward too hastily, and of making decisions without carefully considering their impact.
Unless the contributor is attentive and deliberately careful in the follow-up conversation, the interaction may feel hollow and dehumanized, and generate frustration among reviewers.
There are ways to improve the situation (see &ldquo;Potential guidelines&rdquo; below), but the essence of this concern is that it can be very discouraging for &ldquo;artisans&rdquo; to have to engage with—and spend time on—code that cost very little to build.</p>
<h2 id="general-concerns">General concerns<a class="headerlink" href="#general-concerns" title="Link to this heading">#</a></h2>
<h3 id="a-reduction-in-learning">A reduction in learning<a class="headerlink" href="#a-reduction-in-learning" title="Link to this heading">#</a></h3>
<p>When programmers shift towards relying on LLMs, they will be tempted to focus less on learning. Why go through the pain of figuring out a complex code base, or understanding an algorithm you are working on, when all that can be taken care of on your behalf? The reward is immediate, but over time there is a cost to bear as the contributor&rsquo;s abilities decrease—or never evolve in the first place. This affects, in particular, those who are learning programming and problem-solving skills for the first time.</p>
<p>To be fair, there are good learning opportunities with LLMs as well: they may help you better understand a codebase, advise on subtleties of translating code to a new language, etc. If you apply it with care, you <em>can</em> benefit without succumbing to the risks—but it requires a fair amount of discipline, and humans are better at avoiding suffering than disciplining ourselves.</p>
<h3 id="uncertain-improved-efficiency">Uncertain improved efficiency<a class="headerlink" href="#uncertain-improved-efficiency" title="Link to this heading">#</a></h3>
<p>Research is still out on whether AI improves coding efficiency, especially when it comes to experienced developers working on open source projects they know well. Preliminary studies of this specific scenario suggest neutral to negative results.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>Somewhat tongue in cheek, software engineer Mike Judge notes:</p>
<blockquote>
<p><em>If so many developers are so extraordinarily productive using these tools, where is the flood of shovelware? We should be seeing apps of all shapes and sizes, video games, new websites, mobile apps, software-as-a-service apps — we should be drowning in choice. We should be in the middle of an indie software revolution. We should be seeing 10,000 Tetris clones on Steam.</em> — Mike Judge<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
</blockquote>
<p>Experiments to determine the &ldquo;AI efficiency multiplier&rdquo; are structured as follows: you generate a list of tasks. For each, you estimate how long it will take, and then flip a coin to decide whether you implement the solution using the &ldquo;classic approach&rdquo;, or by using an agent. You then do the task, estimate how long it took, and note the time it <em>actually</em> took.</p>
<p>What the METR study showed (albeit with low N, so results are uncertain) is that programmers may <em>feel</em> like they&rsquo;re faster with AI when often they&rsquo;re not. It&rsquo;s an easy trap to step into, especially when having to decide between two options where one <em>requires effort</em> and the other does not.
Again, it&rsquo;s worth noting that &ldquo;farming out&rdquo; the task means there is a good chance that you will fail to fully comprehend the solution and its potential impact, unless you deliberately and carefully review the result.</p>
<p>I think the equation clearly shifts when doing tasks you are unfamiliar with. For example, if you spend most of your time building scientific code in Python, having to scaffold a website from scratch will take longer than it would using an agent. But of course you then have the benefit of knowing how to build websites, and so it matters how many times you will be doing that type of task in the future.</p>
<h3 id="eroded-artistic-co-creation">Eroded artistic co-creation<a class="headerlink" href="#eroded-artistic-co-creation" title="Link to this heading">#</a></h3>
<p>Many of us got into open source because there is a deep satisfaction that comes from productive collaboration with other humans. We enjoy thinking about and talking through hard problems, learning from the best, and sharing our art. The software we build is a culmination and reflection of this culture of collaboration.</p>
<p>Like with any tool, we need to learn whether, when, and how to apply AI.
If it is used to replace <em>thinking</em>, instead of merely to reduce grunt-work, it risks derailing collaboration and sucking the joy out of attentive design and meticulous problem solving.</p>
<p>Given all the concerns above, some projects may well decide that they should not be using it at all.
We are only starting to engage more with AI contributions, only starting to see its impact on our projects and our collaborative culture. I think 2026 will prove to be highly educational.</p>
<h2 id="potential-guidelines">Potential guidelines<a class="headerlink" href="#potential-guidelines" title="Link to this heading">#</a></h2>
<p>Given the above concerns, what should we as a community do to engage with (a) the new tools (b) developers who utilize these tools and (c) the contributions they generate.
What I&rsquo;m asking is: instead of being prescriptive around the tools others choose to use to do their work, can we instead formulate guidelines that will allow us to continue enjoying working together?</p>
<p>Here are some initial suggestions:</p>
<p><strong>1. Be transparent</strong></p>
<p>Trust would greatly increase if contributors <em>declared</em> their AI use. This would help reviewers decide how they want to engage in the review process, and make them aware of potential risks. Declaring the use of AI sets the stage for honest conversations, improving the likelihood of a good interaction.</p>
<blockquote>
<p><em>Kernel contributors have been using tooling to generate contributions for a long time. These tools can increase the volume of contributions. At the same time, reviewer and maintainer bandwidth is a scarce resource. Understanding which portions of a contribution come from humans versus tools is helpful to maintain those resources and keep kernel development healthy.</em> — Proposed Linux kernel developer guideline<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></p>
</blockquote>
<p>Needless to say, if a project has AI guidance (and many already do), it should be followed.</p>
<p><strong>2. Take responsibility</strong></p>
<p>When you submit a PR, no matter <em>what</em> tools you use, it is <em>your</em> responsibility to make sure that it addresses the problem <em>correctly</em> and doesn&rsquo;t introduce subtle errors—in that sense, it is no different from contributing code you wrote yourself. In that case, however, you may have a clearer idea about potential pitfalls, and how careful you were in avoiding them. When using LLMs, there should be a <em>deliberate effort</em> to ensure that code conforms to community norms.</p>
<p>For example, when writing tests with an LLM, it may simply generate a large number of very similar tests, instead of using parametrization and fixtures the way the rest of the project does. It would then be up to you to identify that deficiency and refactor your code (or have the LLM refactor the code) to address it.</p>
<p><strong>3. Gain understanding</strong></p>
<p>With the assistance of AI, it will happen that contributors venture into territory beyond their technical expertise.
With the help of LLMs, contributors are able to solve harder problems than before, but it remains crucial that they put in the effort to understand their contribution before submitting.
We have to appreciate that there are some risks associated with LLM-assisted contributions, both as these models evolve to be &ldquo;better programmers&rdquo; and avoid common pitfalls, and as authors work out how to best provide context and assess LLM-generated content.
Transparency here helps a great deal to set expectations.</p>
<p>For contributors, it is important to keep in mind that reviews remain human conversations between peers.
Reviewers typically prefer not engaging an LLM directly, but having a knowledgeable exchange around the motivation behind a PR, how various technical choices are justified, and the impact it may have on the rest of the code.</p>
<p>We therefore recommend that contributors work to fully understand the changes they submit, and present it in such a way that reviewers can dive straight into the motivation, design decisions, and technical requirements.</p>
<p><strong>4. Honor Copyright</strong></p>
<p>I had a longer section here around copyright and attribution, but I cut most of it, since I fear we may have run out of good options.
Projects in our ecosystem have been very deliberate about adhering to licensing requirements, and about giving attribution.
But LLMs are unlikely to ever produce meaningful license updates, and by this stage they&rsquo;ve read and assimilated most of our library codebases.
Patterns that were once copyrighted are now commonly duplicated and fully generic.</p>
<p>Personally, I am pulled in two directions: first, I care about people getting credit for the work they do. On the other hand, and also the reason we do not employ copyleft licenses, is that we really want our work to be used widely and impact as many lives as possible. Credit is important, especially for younger people starting their careers, and we&rsquo;ll have to continue thinking about how to give it justly. Practically speaking, however, I&rsquo;m not convinced that licenses are an effective mechanism to enforce credit anymore.</p>
<p>I think it is reasonable to expect, still, that when you make a contribution you have a reasonable sense that you are not violating copyright.
After all, you cannot force contributors to some random GPL library to be OK with your using their code.
In the case of a test suite refactoring, or contributing to a typical React app, this is unlikely to be a problem.
But once you start implementing new algorithms in SciPy, e.g., you&rsquo;re running the risk of, e.g., copying algorithms or bringing in copyrighted ideas from other projects.</p>
<p>I&rsquo;d therefore recommend playing it safe and only making AI-guided contributions that clearly steer clear of copyright infringements. Also see <a href="https://devguide.python.org/getting-started/generative-ai/#acceptable-uses">the Python Developer&rsquo;s Guide</a> on what they consider reasonable use-cases.</p>
<h2 id="potential-benefits">Potential Benefits<a class="headerlink" href="#potential-benefits" title="Link to this heading">#</a></h2>
<p>Notwithstanding the above concerns, and pervading sentiments around AI in our community, I think it&rsquo;s worth honestly assessing potential benefits.</p>
<p>When I started writing this blog post, I had dabbled with LLM-generated code from time to time &ldquo;to keep my finger on the pulse&rdquo;. I was, frankly, quite underwhelmed.
During a routine re-evaluation in December, however, I noticed a marked shift in how quickly an agent was able to solve a routine coding task. The same caveats as usual applied (the AI sometimes went down rabbit holes, it made up function names, etc.), but it <em>did</em> give me pause.</p>
<p>As I wrestled with the implications of AI for our community, I realized that the Scientific Python project was formed, in part, because of the enormous burdens that maintainers now face. To address those burdens, we build tools, we coordinate, and we explore new solutions. But one thing that is very difficult to increase is <em>labor</em>. The existing maintainer community is slow to grow—after all, it takes a very specific kind of person to do (and enjoy doing) the work we do. And there are only 24 hours in a day—substantially fewer for many of us as we move from being students to having families, industry careers, etc.</p>
<p>So, here we are, at a time where we risk being immobilized by our own success: as our libraries grow and are adopted by more and more users, we are unable to add new features because we are so overburdened by maintenance requirements. And now we are presented with a tool that cannot handle the sophisticated thinking and problem solving required to architect libraries and implement novel algorithms, but <em>that is</em> useful for solving common maintenance chores. Then one has to wonder: is this perhaps an opportunity for us to see our maintenance burden lightened, so we can get back to the craft we love—i.e., producing hand-crafted APIs and novel implementations of algorithms that give researchers across the world access to cutting edge methods?</p>
<h2 id="conclusion">Conclusion<a class="headerlink" href="#conclusion" title="Link to this heading">#</a></h2>
<p>When it comes to a disruptive technology that has the potential to rapidly reshape the ecosystem that we have built with so much care and attention to detail, how we engage with it demands careful consideration.
From what I&rsquo;ve seen from the current generation of LLMs, they&rsquo;re not ready to provide us with best-in-class solutions, but they may already be useful in reducing some of the tedium involved in contributing.
Will utilizing AI, due to the risks outlined above, unravel the very tapestry of collaboration that holds our ecosystem together, or can it be harnessed to restore developer bandwidth and preserve the &ldquo;explosive effect of humans working well together&rdquo;?
It is worth exploring how to adjust to and incorporate these changes, and how to best let our different &ldquo;coding philosophies&rdquo; and tool choices co-exist—all while preserving the incredible benefit that our open-source scientific software ecosystem provides.</p>
<p><em>Please let us know your thoughts in the comments below. This post is part of an effort to come up with a community approach to AI and AI-generated contributions.</em></p>
<h2 id="references">References<a class="headerlink" href="#references" title="Link to this heading">#</a></h2>
<ul>
<li><a href="https://docs.fedoraproject.org/en-US/council/policy/ai-contribution-policy/">Fedora AI contribution policy</a></li>
<li><a href="https://github.com/scikit-image/scikit-image/pull/7982">scikit-image AI contribution guidelines</a></li>
<li><a href="https://wiki.gentoo.org/wiki/Project:Council/AI_policy">Gentoo AI policy</a></li>
<li><a href="https://lkml.org/lkml/2025/11/5/1802">Linux Kernel: [PATCH] [v3] Documentation: Provide guidelines for tool-generated content</a></li>
<li><a href="https://devguide.python.org/getting-started/generative-ai/#acceptable-uses">Python Developer&rsquo;s Guide: Generative AI</a></li>
</ul>
<h2 id="credit">Credit<a class="headerlink" href="#credit" title="Link to this heading">#</a></h2>
<p>I would like to thank the following community members for feedback on early drafts: <em>Matthew Brett, Henry Schreiner, Dan McCloy</em>. And <em>Chris Holdgraf, Angus Hollands, Brian Hawthorne</em>, for conversations on the topic. This post does not necessarily reflect their views.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://x.com/karpathy/status/2015883857489522876?s=20">https://x.com/karpathy/status/2015883857489522876?s=20</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p><a href="https://x.com/karpathy/status/2015883857489522876">https://x.com/karpathy/status/2015883857489522876</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p><a href="https://secondthoughts.ai/p/ai-coding-slowdown">https://secondthoughts.ai/p/ai-coding-slowdown</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p><a href="https://mikelovesrobots.substack.com/p/wheres-the-shovelware-why-ai-coding">https://mikelovesrobots.substack.com/p/wheres-the-shovelware-why-ai-coding</a>&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p><a href="https://lore.kernel.org/ksummit/20251114183528.1239900-1-dave.hansen@linux.intel.com/">https://lore.kernel.org/ksummit/20251114183528.1239900-1-dave.hansen@linux.intel.com/</a>&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="ai" label="AI" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Developer Summit 2]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/dev-summit-2/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1" />
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1: Sparse Arrays" />
                <link href="https://blog.scientific-python.org/scientific-python/translations/?utm_source=atom_feed" rel="related" type="text/html" title="Translations for Scientific Python projects" />
                <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python awarded CZI grant to improve communications infrastructure &amp; accessibility" />
                <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="related" type="text/html" title="Team up! Alt text and cross-project community" />
            
                <id>https://blog.scientific-python.org/scientific-python/dev-summit-2/</id>
            
            
            <published>2024-09-29T00:00:00+00:00</published>
            <updated>2024-09-29T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Summary of the 2024 Scientific Python Developer summit.</blockquote><p>This post is a while overdue, but it&rsquo;s been a busy summer for everyone!</p>
<p>In June, several of us got together for the &ldquo;annual&rdquo; (well, we&rsquo;ve had it twice now) Scientific Python developer summit in Seattle.
Our friends at the eScience Institute were again kind enough to host us.
This time around, we made the event a bit shorter to avoid clashing with graduation.</p>
<p>As before, the Developer Summits are for members of the community to come together, in person, so they can work.
Of course, we work together already online, but the event allows us to focus our energies on cross-project concerns (that often fall by the wayside) with planning and intent.</p>
<p>This is why, before the summit, we have planning Zoom calls, where we identify topics of interest, which are turned into issues, which are then fleshed out and discussed prior to the event.
That way, we hoped to hit the ground running—as we did!</p>
<!-- prettier-ignore-start -->
<figure class="align-default" id="id000">
<img src="group.jpg" alt="Photo of the summit attendees, in front of a fountain on the University of Washington campus, with a volcano in the background" class="align-center">



<figcaption>
<p><span class="caption-text">Our intrepid community developers, with Mt Rainier in the background</span>
</figcaption>
</figure>

<!-- prettier-ignore-end -->
<h2 id="topics">Topics<a class="headerlink" href="#topics" title="Link to this heading">#</a></h2>
<p>You can get a rough idea of what we worked on by browsing the <a href="https://github.com/scientific-python/summit-2024/issues/">planning issues</a> and the <a href="https://hackmd.io/wsJVTMYdQGG_Zgz7rgxSzw">summit worklog</a>.</p>
<p>Broad topics included <a href="https://scientific-python.org/specs/">SPECs</a>, documentation, tools &amp; bots, <a href="https://lectures.scientific-python.org/">lectures</a>, <code>scipy.sparse</code>, telemetry, Array API, and type annotation.</p>
<h3 id="documentation">Documentation<a class="headerlink" href="#documentation" title="Link to this heading">#</a></h3>
<p>Documentation was a much more popular topic than anticipated!</p>
<ul>
<li>The new <a href="https://mystmd.org/guide">mystmd</a> tooling generated some excitement, and an <a href="https://github.com/numpy/numpy-tutorials/tree/mystjs">experimental port of the NumPy tutorials</a> was made by Melissa and Ross.</li>
<li>Recommendations on consistent use of <a href="https://github.com/numpy/numpydoc/pull/525">backticks</a> and <a href="https://github.com/pydata/pydata-sphinx-theme/issues/1852">monospaced font</a> were submitted to numpydoc and pydata-sphinx-theme, respectively.</li>
<li>Madicken, Paul, and Dan worked together to <a href="https://github.com/pydata/pydata-sphinx-theme/pull/1861">extend PyData Sphinx Theme&rsquo;s testing infrastructure</a>, by combining Sphinx Build Factory (for generating small test sites) with Playwright (for browser automation).</li>
<li>Eric and Elliott fixed an <a href="https://github.com/sphinx-gallery/sphinx-gallery/pull/1320">intersphinx issue in sphinx-gallery</a>.</li>
</ul>
<h3 id="specs">SPECs<a class="headerlink" href="#specs" title="Link to this heading">#</a></h3>
<p>The Scientific Python Ecosystem Coordination documents (SPECs) aim to improve coordination of technical development across the ecosystem.</p>
<p>Several new SPECs were started:</p>
<ul>
<li><a href="https://hackmd.io/yI1iAqekQIq0a4jLS9WPyw">SPEC-?: Dispatching (<code>spatch</code>)</a></li>
<li><a href="https://scientific-python.org/specs/spec-0008/">SPEC-8: Securing The Release Process</a></li>
<li><a href="https://scientific-python.org/specs/spec-0009/">SPEC-9: Governance</a></li>
<li><a href="https://github.com/scientific-python/specs/pull/321">SPEC-10: Changelog and release documentation</a></li>
<li><a href="https://github.com/scientific-python/specs/pull/326">SPEC-12: Formatting mathematical expressions</a></li>
<li><a href="https://github.com/scientific-python/specs/pull/324">SPEC-13: Naming conventions</a></li>
</ul>
<p>Some existing SPECs were discussed and improved:</p>
<ul>
<li><a href="https://scientific-python.org/specs/spec-0007/">SPEC-7: Seeding pseudo-random number generation (SPRaNG)</a></li>
</ul>
<p>Matplotlib <a href="https://scientific-python.org/specs/purpose-and-process/#decision-points">endorsed</a> several SPECs.</p>
<h3 id="tooling">Tooling<a class="headerlink" href="#tooling" title="Link to this heading">#</a></h3>
<ul>
<li>We created a new tools team to handle the ever-growing <a href="https://tools.scientific-python.org/">list of tools we maintain</a>.</li>
<li>Eric added his <a href="https://github.com/scientific-python/circleci-artifacts-redirector-action">circleci-artifacts-redirector-action</a> to the suite.</li>
<li>Matthias brought over his <a href="https://github.com/scientific-python/MeeseeksDev">backport bot</a> and set up a maintenance team.</li>
</ul>
<h3 id="scipy">SciPy<a class="headerlink" href="#scipy" title="Link to this heading">#</a></h3>
<p>Several of the SciPy developers were present, and we used the opportunity to celebrate Dan Schult joining as a core developer 🎉!
Matt and Pamphile did some work on the new distribution infrastructure, Dan worked on sparse (remotely with CJ), and a <a href="https://github.com/scipy/scipy/pull/20891">PR adding newly-supported <code>const</code> statements to Cython code</a> got reviewed and merged.
Eric isolated <a href="https://github.com/sphinx-doc/sphinx/issues/12409">a non-deterministic bug in Sphinx</a> that was impacting parallel builds of SciPy&rsquo;s documentation.
He found a work-around that had been eluding the team for months!</p>
<h3 id="unplanned-collaborations">Unplanned collaborations<a class="headerlink" href="#unplanned-collaborations" title="Link to this heading">#</a></h3>
<p>As is the nature of these events, some collaborations arise spontaneously.
For example:</p>
<ul>
<li>Nick and Ariel explored using Awkward Array for neuro-tractography.</li>
<li>Nick and Mridul explored using <a href="https://scipp.github.io/index.html">scipp</a> for high-energy physics data.</li>
<li>Guen worked on telemetry.</li>
<li>Inessa and Sanket discussed best practices for community surveys and project governance.</li>
<li>Sebastian and Thomas <a href="https://hackmd.io/84thx0ucQ2ab17ZYrBhWRw">discussed parallelization APIs</a>.</li>
<li>Inessa, with input from Tim and Thomas, finalized the design of the 2024 scikit-learn user survey.</li>
<li>Erik and Dan discussed index compression options for CSR-like N-D sparse arrays.</li>
</ul>
<h3 id="conclusion">Conclusion<a class="headerlink" href="#conclusion" title="Link to this heading">#</a></h3>
<!-- prettier-ignore-start -->
<figure class="align-default" id="id001">
<img src="chess.jpg" alt="Members of the team playing chess at Big Time Ale Brewery in Seattle" class="align-center">



<figcaption>
<p><span class="caption-text">Nothing like a relaxing game of chess after a long day&rsquo;s work</span>
</figcaption>
</figure>

<!-- prettier-ignore-end -->
<p>Numerous other PRs were made, of which a number were probably not even captured in the <a href="https://hackmd.io/wsJVTMYdQGG_Zgz7rgxSzw">worklog</a>.
But, besides the inherent satisfaction of working together with this great group, the best feature of the summit was that we were able to hang out, bonding over our communal joys and struggles—both technical and personal.</p>
<p>We are grateful to the ecosystem developers who gave up their time to attend the summit (many had to put in leave <em>just to do more work</em>!).
The summits are valuable, and translate to a lot of work getting done and decisions being made.
We hope that there will be more on the horizon!</p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="summit" label="Summit" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Translations for Scientific Python projects]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/translations/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python awarded CZI grant to improve communications infrastructure &amp; accessibility" />
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1" />
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1: Sparse Arrays" />
                <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="related" type="text/html" title="Team up! Alt text and cross-project community" />
                <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python GSoD 2022 Proposal" />
            
                <id>https://blog.scientific-python.org/scientific-python/translations/</id>
            
            
            <published>2024-08-13T00:00:00+00:00</published>
            <updated>2024-08-13T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Setting up and managing translations for Scientific Python projects.</blockquote><p>In November 2022, <a href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/">the Chan Zuckerberg Initiative (CZI) awarded the Scientific Python project with a grant to improve communications infrastructure and accessibility</a>. This proposal involves several key areas to improve sustainability, inclusivity and accessibility of the Scientific Python ecosystem. One of these areas is making software documentation and user interfaces available in multiple languages. We are happy to announce that we have organized the necessary infrastructure and processes to allow volunteers to start translating multiple project websites.</p>
<p>In this blog post, we will discuss how we set up manage translations for Scientific Python projects, and how you can participate in the translation and localization effort. The work described here was done by Quansight Labs.</p>
<h2 id="why-translations-are-important">Why translations are important<a class="headerlink" href="#why-translations-are-important" title="Link to this heading">#</a></h2>
<p>Accessibility and inclusion are important aspects of building a healthy community around open source software development. By providing translations of our websites, documentation and user interfaces in multiple languages, we can reach a wider global audience, thereby making our projects more inclusive and increasing the diversity of contributions and ideas. This is especially important for scientific software projects, which are used by researchers and scientists from around the world with a wide range of language proficiencies and backgrounds.</p>
<p>Recently, machine translation tools have made it easier to translate content into multiple languages. While such tools are improving, they often fall short in the context of technical documentation. In addition, without a human in the loop, maintainers can never be sure if translated content is correct for languages they are not familiar with. For this reason, we chose to work with a group of volunteers to help us translate selective subsets of project websites and documentation.</p>
<h2 id="setting-up-translations-workflow">Setting up translations workflow<a class="headerlink" href="#setting-up-translations-workflow" title="Link to this heading">#</a></h2>
<p>You may have seen that translations into some languages are already available for <a href="https://numpy.org">numpy.org</a>, with a version switcher in the top right corner.</p>
<p><img src="/scientific-python/translations/numpyorg.png" alt="Screenshot of the numpy.org site in Japanese, with a version switcher in the top right corner showing the English and Portuguese language options."></p>
<p>A number of core projects have also joined this effort and are set up to start with translations. At the moment, we are targeting <a href="https://numpy.org">NumPy</a>, <a href="https://scipy.org">SciPy</a>, <a href="https://networkx.org">NetworkX</a>, <a href="https://xarray.dev">Xarray</a>, and <a href="https://pandas.pydata.org">pandas</a>. We&rsquo;re offering to help other core projects integrate something similar into their websites, and we aim to accomplish this in a way that requires minimal effort from the core project maintainers, using <a href="https://scientific-python.crowdin.com">Crowdin</a>.</p>
<p>For the moment, our scope is to translate only the projects&rsquo; websites—the landing pages you see when you check out the links above—and <strong>not</strong> full documentation. We are intentionally starting small with the goal of completing this first phase and then potentially expanding once the translations team is established.</p>
<h2 id="translations-team">Translations team<a class="headerlink" href="#translations-team" title="Link to this heading">#</a></h2>
<p>For new contributors who are looking to get involved in the projects they already use and depend on, joining the translations team can be a great way to get started. Because of how the translations infrastructure is set up in Crowdin, this workflow is particularly well-suited for new contributors who are not yet familiar with GitHub or other development tools—they can work entirely on the Crowdin web platform.</p>
<p>One advantage of setting this up at the Scientific Python level, and not on a per-project basis, is that the translations team can work on multiple projects, and knowledge and experience can be shared. This also helps to ensure that translations are consistent across projects.</p>
<p>The translations team will be responsible for:</p>
<ul>
<li>Translating (and reviewing) content into multiple languages;</li>
<li>Ensuring that translations are accurate and up-to-date;</li>
<li>Engaging with the community to help maintain and improve translations.</li>
</ul>
<p>Once the translations are complete and reviewed, a maintainer for each project can merge the translations and publish them to the project website. After the initial setup, the translations team will be able to manage the translations workflow independently, with minimal input from the project maintainers.</p>
<p>For more information on the infrastructure and team working on the translations, and how to join as a translator, see <a href="https://scientific-python-translations.github.io/">https://scientific-python-translations.github.io/</a>. You can also join the <code>#translation</code> channel at the <a href="https://discord.gg/vur45CbwMz">Scientific Python Discord server</a>.</p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="translations" label="translations" />
                             
                                <category scheme="taxonomy:Tags" term="inclusion" label="inclusion" />
                             
                                <category scheme="taxonomy:Tags" term="czi" label="CZI" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[The Scientific Python Development Guide]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-development-guide/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/scientific-python-project/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python: Community developed, community owned" />
                <link href="https://blog.scientific-python.org/matplotlib/how-to-create-custom-tables/?utm_source=atom_feed" rel="related" type="text/html" title="How to create custom tables" />
                <link href="https://blog.scientific-python.org/matplotlib/visualising-usage-using-batteries/?utm_source=atom_feed" rel="related" type="text/html" title="Battery Charts - Visualise usage rates &amp; more" />
                <link href="https://blog.scientific-python.org/matplotlib/python-graph-gallery.com/?utm_source=atom_feed" rel="related" type="text/html" title="The Python Graph Gallery: hundreds of python charts with reproducible code." />
                <link href="https://blog.scientific-python.org/matplotlib/stellar-chart-alternative-radar-chart/?utm_source=atom_feed" rel="related" type="text/html" title="Stellar Chart, a Type of Chart to Be on Your Radar" />
            
                <id>https://blog.scientific-python.org/scientific-python/dev-summit-1-development-guide/</id>
            
            
            <published>2023-08-26T12:00:00-05:00</published>
            <updated>2023-08-26T12:00:00-05:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Introducing the Scientific Python Development Guide!</blockquote><p>One outcome of the
<a href="https://scientific-python.org/summits/developer/2023/">2023 Scientific Python Developer Summit</a>
was the <a href="https://learn.scientific-python.org/development">Scientific Python Development Guide</a>, a comprehensive guide to modern
Python package development, complete with a <a href="https://github.com/scientific-python/cookie">new project template</a>
supporting 10+ build backends and a <a href="https://learn.scientific-python.org/development/guides/repo-review">WebAssembly-powered checker</a>
with checks linked to the guide. The guide covers topics like <a href="https://learn.scientific-python.org/development/guides/packaging-simple/">modern</a>,
<a href="https://learn.scientific-python.org/development/guides/packaging-compiled/">compiled</a>, and <a href="https://learn.scientific-python.org/development/guides/packaging-classic/">classic</a> packaging, <a href="https://learn.scientific-python.org/development/guides/style/">style</a> checks, <a href="https://learn.scientific-python.org/development/guides/mypy/">type
checking</a>, <a href="https://learn.scientific-python.org/development/guides/docs/">docs</a>, <a href="https://learn.scientific-python.org/development/guides/tasks/">task runners</a>, <a href="https://learn.scientific-python.org/development/guides/gha-basic/">CI</a>, <a href="https://learn.scientific-python.org/development/guides/pytest/">tests</a>,
and much more! There also are sections of <a href="https://learn.scientific-python.org/development/tutorials/">tutorials</a>, <a href="https://learn.scientific-python.org/development/principles/">principles</a>, and
some common <a href="https://learn.scientific-python.org/development/patterns/">patterns</a>.</p>
<p>This guide (along with cookie &amp; repo-review) started in <a href="https://scikit-hep.org">Scikit-HEP</a> in 2020.
During the summit, it was merged with the <a href="https://nsls-ii.github.io/">NSLS-II</a> guidelines, which provided
the basis for the <a href="https://learn.scientific-python.org/development/principles/">principles</a> section. I&rsquo;d like to thank and acknowledge Dan
Allan and Gregory Lee for working tirelessly during the summit to rework,
rewrite, merge, and fix the guide, including writing most of the <a href="https://learn.scientific-python.org/development/tutorials/">tutorials</a>
pages and first <a href="https://learn.scientific-python.org/development/patterns/">patterns</a> page, and rewriting the <a href="https://learn.scientific-python.org/development/tutorials/dev-environment/">environment</a> page as a
tutorial.</p>
<h2 id="the-guide">The guide<a class="headerlink" href="#the-guide" title="Link to this heading">#</a></h2>
<p>The core of the project is the guide, which is comprised of four sections:</p>
<ul>
<li><a href="https://learn.scientific-python.org/development/tutorials/">Tutorials</a>: How to go from &ldquo;research&rdquo; code to a basic package, for
beginning readers.</li>
<li><a href="https://learn.scientific-python.org/development/guides/">Topical guides</a>: The core of the guide, for intermediate to advanced
readers.</li>
<li><a href="https://learn.scientific-python.org/development/principles/">Principles</a>: Some general principles from the <a href="https://nsls-ii.github.io/">NSLS-II</a> guide.</li>
<li><a href="https://learn.scientific-python.org/development/patterns/">Patterns</a>: Recipes for common situations. Three pages are there now;
<a href="https://learn.scientific-python.org/development/patterns/data-files/">including data</a>, <a href="https://learn.scientific-python.org/development/patterns/backports/">backports</a>, and <a href="https://learn.scientific-python.org/development/patterns/exports/">exports</a>.</li>
</ul>
<p>From the original <a href="https://scikit-hep.org/developer">Scikit-HEP dev pages</a>, a lot was added:</p>
<ul>
<li>Brand new guide page on documentation, along with new <a href="https://learn.scientific-python.org/development/guides/repo-review">sp-repo-review</a> checks to
help with readthedocs.</li>
<li>A compiled projects page! Finally! With <a href="https://scikit-build-core.readthedocs.io">scikit-build-core</a>,
<a href="https://meson-python.readthedocs.io">meson-python</a>, and <a href="https://www.maturin.rs">maturin</a>. The page shows real outputs from the
<a href="https://www.cookiecutter.io">cookiecutter</a>, kept in sync with <a href="https://nedbatchelder.com/code/cog">cog</a> (a huge benefit of using a single
repo for all three components!)</li>
<li>Big update to <a href="https://learn.scientific-python.org/development/guides/gha-basic/">GHA CI page</a> including a section on Composite
Actions given at the Dev summit.</li>
<li>CLI entry points are now included.</li>
<li>Python 3.12 support added, Python 3.7 dropped.</li>
<li>New <a href="https://learn.scientific-python.org/development/guides/repo-review">sp-repo-review</a> badges throughout (more on that later!)</li>
<li>Updates for <a href="https://beta.ruff.rs">Ruff</a>&rsquo;s move and support for requires-python.</li>
<li>Lots of additions for GitHub Actions.</li>
</ul>
<p>The infrastructure was updated too:</p>
<ul>
<li>Using latest Jekyll (version 4) and latest Just the Docs theme. More colorful
callout boxes. Plugins are used now.</li>
<li>Live PR preview (provided by probably the world’s first readthedocs Jekyll
build!). Developed with the Zarr developers during the summit.</li>
<li>Better advertising for <a href="https://github.com/scientific-python/cookie">cookie</a> and <a href="https://learn.scientific-python.org/development/guides/repo-review">sp-repo-review</a> on the index page(s).</li>
<li>Auto bump and auto-sync CI jobs.</li>
</ul>
<h2 id="cookie">Cookie<a class="headerlink" href="#cookie" title="Link to this heading">#</a></h2>
<p>We also did something I&rsquo;ve wanted to do for a long time: the guide, the
cookiecutter template, and the checks are all in a single repo! The repo is
<a href="https://github.com/scientific-python/cookie">scientific-python/cookie</a>, which is the moved <code>scikit-hep/cookie</code> (the
old URL for cookiecutter still works!).</p>
<p>Cookie is a new project template supporting multiple backends (including
compiled ones), kept in sync with the dev guide. We recommend starting with
the dev guide and setting up your first package by hand, so that you understand
what each part is for, but once you&rsquo;ve done that, <a href="https://github.com/scientific-python/cookie">cookie</a> allows you to get
started on a new project in seconds.</p>
<p>A lot of work went into <a href="https://github.com/scientific-python/cookie">cookie</a>, too!</p>
<ul>
<li>Generalized defaults. We still have special integration if someone sets the
org to <code>scikit-hep</code>; the same integration can be offered to other orgs.</li>
<li>All custom hooks removed; standard jinja now used throughout templates. Using
cookiecutter computed variables idiom too. Windows still fully supported and
tested. Adding new choices is much easier now.</li>
<li>Added cruft (a cookiecutter updater) testing.</li>
<li>Dual-supporting <a href="https://copier.readthedocs.io">copier</a> now too, a <a href="https://www.cookiecutter.io">cookiecutter</a> replacement with a huge
CLI improvement (and also supports updating). Might be the first project to
support both at the same time. CI (or <a href="https://nox.thea.codes">nox</a> locally) checks to ensure
generation is identical. Much better interface with copier, including
validation, descriptive text, arrow selection, etc.</li>
<li>Improved CLI experience even if using cookiecutter (like no longer requesting
current year).</li>
<li>Reworked docs template.</li>
<li>Support for cookiecutter 2.2 pretty descriptions (added about four hours after
cookiecutter 2.2.0 was released) and cookiecutter 2.2.3 choice descriptions.</li>
<li>GitLab CI support when not targeting github.com URLs (added by Giordon Stark).</li>
<li>Support for selecting VCS or classic versioning.</li>
</ul>
<h2 id="repo-review">Repo-review<a class="headerlink" href="#repo-review" title="Link to this heading">#</a></h2>
<p>See the <a href="https://iscinumpy.dev/post/repo-review/">introduction to repo-review</a>
for information about this one!</p>
<p>Along with this was probably the biggest change, one requested by several people
at the summit: <a href="https://github.com/scientific-python/repo-review">scientific-python/repo-review</a> (was
<code>scikit-hep/repo-review</code>) is now a completely general framework for implementing
checks in Python 3.10+. The checks have been moved to <code>sp-repo-review</code>, which is
now part of scientific-python/cookie. There are too many changes to list here,
so just the key ones in 0.6, 0.7, 0.8, 0.9, and 0.10:</p>
<ul>
<li>Extensive, beautiful <a href="https://repo-review.readthedocs.io">documentation</a> for
check authors at (used to help guide the new docs guide page &amp; template
update!)</li>
<li>Support for four output formats, <a href="https://rich.readthedocs.io">rich</a> (improved), svg, json (new), html
(new).</li>
<li>Support for listing all checks.</li>
<li>GitHub Actions support with HTML step summary, <a href="https://pre-commit.com">pre-commit</a> support.</li>
<li>Generalized topological sorting to fixtures, dynamic fixtures.</li>
<li>Dynamic check selection (via fixtures! Basically everything is powered by
fixtures now.)</li>
<li>URL support in all output formats (including the terminal and WebApp!)</li>
<li>Support for package not at root of repo.</li>
<li>Support for running on a remote repo from the command line.</li>
<li>Support for select/ignore config in <code>pyproject.toml</code> or command line.</li>
<li>Pretty printed and controllable sorting for families.</li>
<li>Supports running from Python, including inside a readme with something like
cog.</li>
<li>Support for dynamic family descriptions (such as to output build system and
licence used).</li>
<li>Support for limiting the output to just errors or errors and skips.</li>
<li>Support for running on multiple repos at once, with output tailored to
multiple repos. Also supports passing <code>pyproject.toml</code> path instead to make
running on mixed repos easier.</li>
<li>Support for linting <code>[tool.repo-review]</code> with <a href="https://validate-pyproject.readthedocs.io">validate-pyproject</a>.</li>
</ul>
<p>The
<a href="https://repo-review.readthedocs.io/en/latest/changelog.html">full changelog</a>
has more - you can even see the 10 beta releases in-between 0.6.x and 0.7.0
where a lot of this refactoring work was happening. If you have configuration
you’d like to write check for, feel free to write a plugin!</p>
<p><a href="https://validate-pyproject.readthedocs.io">validate-pyproject</a> 0.14 has added support for being used as a repo-review
plugin, so you can validate <code>pyproject.toml</code> files with repo-review! This lints
<code>[project]</code> and <code>[build-system]</code> tables, <code>[tool.setuptools]</code>, and other tools
via plugins. <a href="https://scikit-build-core.readthedocs.io">Scikit-build-core</a> 0.5 can be used as a validate-project plugin
to lint <code>[tool.scikit-build]</code>. Repo-review has a plugin for
<code>[tool.repo-review]</code>.</p>
<h2 id="sp-repo-review">sp-repo-review<a class="headerlink" href="#sp-repo-review" title="Link to this heading">#</a></h2>
<p>Finally, <a href="https://learn.scientific-python.org/development/guides/repo-review">sp-repo-review</a> contains the previous repo-review plugins with checks:</p>
<ul>
<li>Fully cross-linked with the development guide. Every check has a URL that
points to a matching badge inside the development guide where the thing the
check is looking for is being discussed!</li>
<li>Full list of checks (including URLs), produced by cog, in
<a href="https://pypi.org/p/sp-repo-review">readme</a>.</li>
<li>Also ships with GitHub Action and <a href="https://pre-commit.com">pre-commit</a> checks</li>
<li>Released (in sync with cookie &amp; guide, as they are in the same repo) as
CalVer,
<a href="https://github.com/scientific-python/cookie/releases">with release notes</a>.</li>
<li>Split CI that selects just want to run based on changed files, with green
checkmark that respects skips (based on the excellent contrition to
pypa/build).</li>
</ul>
<!-- prettier-ignore-start -->
<figure class="align-default" id="id000">
<img src="cibw_example.png" alt="Image of sp-repo-review showing checks" class="align-center" width="60%">



<figcaption>
<p><span class="caption-text">Running sp-repo-review on cibuildwheel</span>
</figcaption>
</figure>

<!-- prettier-ignore-end -->
<h2 id="using-the-guide">Using the guide<a class="headerlink" href="#using-the-guide" title="Link to this heading">#</a></h2>
<p>If you have a guide, we&rsquo;d like for you to compare it with the Scientific Python
Development Guide, and see if we are missing anything - bring it to our
attention, and maybe we can add it. And then you can link to the centrally
maintained guide instead of manually maintaining a complete custom guide. See
<a href="https://scikit-hep.org/developer">scikit-hep/developer</a> for an example; many pages now point at this guide.
We can also provide org integrations for <a href="https://github.com/scientific-python/cookie">cookie</a>, providing some
customizations when a user targets your org (targeting <code>scikit-hep</code> will add a
badge).</p>]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="tutorials" label="tutorials" />
                             
                                <category scheme="taxonomy:Tags" term="cookie" label="cookie" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="scientific-python" />
                             
                                <category scheme="taxonomy:Tags" term="summit" label="summit" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Developer Summit 1]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/?utm_source=atom_feed" rel="related" type="text/html" title="Developer Summit 1: Sparse Arrays" />
                <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python awarded CZI grant to improve communications infrastructure &amp; accessibility" />
                <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="related" type="text/html" title="Team up! Alt text and cross-project community" />
                <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python GSoD 2022 Proposal" />
            
                <id>https://blog.scientific-python.org/scientific-python/dev-summit-1/</id>
            
            
            <published>2023-07-09T18:24:17-07:00</published>
            <updated>2023-07-09T18:24:17-07:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Learn about the first Scientific Python Developer Summit.</blockquote><p>The first <a href="https://scientific-python.org/summits/developer/2023/">Scientific Python Developer Summit</a> (May 22-26, 2023) brought together 34 developers at the eScience Institute at the University of Washington to develop shared infrastructure, documentation, tools, and recommendations for libraries in the Scientific Python ecosystem.</p>
<h2 id="pre-summit-planning">Pre-summit planning<a class="headerlink" href="#pre-summit-planning" title="Link to this heading">#</a></h2>
<p>Prior to the summit we held several hour-long planning meetings:</p>
<ul>
<li><a href="https://scientific-python.org/summits/developer/2023/general-planning/">General (2023-02-27)</a></li>
<li><a href="https://hackmd.io/UNwG2BjJSxOUJ0M1iWI-nQ">May 15, Package metrics, DevStats</a></li>
<li><a href="https://hackmd.io/MmbP4VTATyG129_U56xdJQ">May 15, SPECs</a></li>
<li><a href="https://hackmd.io/YL5DNtsaSsS-1ZU3Pxkrxg">May 18, Community &amp; Documentation</a></li>
<li><a href="https://hackmd.io/0M1Yh7KwTnaXSsU14BiyQw">May 19, Build Systems &amp; CI Infrastructure</a></li>
<li><a href="https://hackmd.io/JL5slkxORA-q7VRN79v1sA">May 19, PyTest plugins &amp; Sphinx extensions</a></li>
</ul>
<h2 id="summit-execution">Summit execution<a class="headerlink" href="#summit-execution" title="Link to this heading">#</a></h2>
<p><img src="/scientific-python/dev-summit-1/checkin.png" alt="Morning group check-in"></p>
<p>At the summit, we had a brief check-in and then split into several groups based on each developers time and interests. Raw work progress and log have been collected in a <a href="https://hackmd.io/iEtdfbxfSbGwOAJTXmqyIQ?both">document</a>, we highlight just a few of things we accomplished below:</p>
<h3 id="sparse-arrays">Sparse arrays<a class="headerlink" href="#sparse-arrays" title="Link to this heading">#</a></h3>
<p>Almost a quarter of the group worked on <a href="https://scientific-python.org/summits/sparse/">sparse arrays</a> for the entire week.
This work is part of a larger, <a href="https://scientific-python.org/grants/sparse_arrays/">multi-year effort</a> to improve and expand SciPy&rsquo;s
<a href="https://github.com/scipy/scipy/pull/14822">sparse array API</a>, which will eventually
involve removing the sparse matrix API and eventually <code>np.matrix</code>.</p>
<p>More details can be found in the <a href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/">Developer Summit 1: Sparse</a> blog post.</p>
<h3 id="scientific-python-ecosystem-coordination-documents">Scientific Python Ecosystem Coordination documents<a class="headerlink" href="#scientific-python-ecosystem-coordination-documents" title="Link to this heading">#</a></h3>
<p>We made significant progress on several <a href="https://scientific-python.org/specs/">SPECs</a>, which had been drafted during previous sprints.</p>
<p><img src="/scientific-python/dev-summit-1/specs.png" alt="Snapshot of the current SPECs and their endorsements"></p>
<p><a href="https://scientific-python.org/specs/spec-0000">SPEC 0&mdash;Minimum Supported Versions </a>, an updated and expanded recommendation similar to
the <a href="https://numpy.org/neps/nep-0029-deprecation_policy.html">NEP 29</a>, was discussed and endorsed by several
<a href="https://scientific-python.org/specs/core-projects/">core projects</a>.</p>
<p><a href="https://scientific-python.org/specs/spec-0001/">SPEC 1&mdash;Lazy Loading of Submodules and Functions</a> was discussed and endorsed by
two <a href="https://scientific-python.org/specs/core-projects/">core projects</a>.</p>
<p><a href="https://scientific-python.org/specs/spec-0002/">SPEC 2&mdash;API Dispatch</a> was discussed (in a follow-up video meeting just after the summit)
and is in the process of being marked as <code>withdrawn</code> or something similar.</p>
<p><a href="https://scientific-python.org/specs/spec-0003/">SPEC 3&mdash;Accessibility</a> was discussed and updated. We hope to see it endorsed by
several core projects in the near future.</p>
<p><a href="https://scientific-python.org/specs/spec-0004/">SPEC 4&mdash;Using a creating nightly wheels</a> was rewritten, a helper GitHub action
<a href="https://github.com/scientific-python/upload-nightly-action">upload-nightly-action</a> was created, and PRs to update the various
projects to use the new <a href="https://anaconda.org/scientific-python-nightly-wheels/">nightly wheels location</a> were made. The updates
are now complete and the SPEC was endorsed by two core projects.</p>
<p>We anticipate several more core projects to endorse the existing SPECs over the coming months and we are now holding regular
SPEC steering committee meetings to continue developing and expanding the SPECs.</p>
<h3 id="community-building">Community building<a class="headerlink" href="#community-building" title="Link to this heading">#</a></h3>
<p>We created a comprehensive <a href="https://learn.scientific-python.org/community/">community guide</a> to empower projects in fostering their communities. This guide includes essential information on the role of community managers, along with practical strategies for community meetings, outreach, onboarding, and project management.</p>
<h3 id="development-documentation">Development Documentation<a class="headerlink" href="#development-documentation" title="Link to this heading">#</a></h3>
<p>We created a <a href="https://learn.scientific-python.org/development/">development guide</a>,
a <a href="https://github.com/scientific-python/cookie">new project template</a>,
and <a href="https://learn.scientific-python.org/development/guides/repo-review/">existing project review</a>.</p>
<h3 id="serendipitous-collaboration">Serendipitous Collaboration<a class="headerlink" href="#serendipitous-collaboration" title="Link to this heading">#</a></h3>
<p>One of the fun things that happens at summits like these are the chance encounters of people from different projects.
For example, a couple of attendees worked on creating a co-collaboration network across the broader scientific python ecosystem.
This gave us the opportunity to look at how contributors collaborate across projects.
We could see how the bigger projects were all clustered together as there are multiple contributors who share maintenance duties for multiple projects.
We could also, for example, see how the Scikit-HEP cluster was a bit further away from the usual scientific Python cluster.
An action item for us :) We need more collaboration!!</p>
<p><img src="/scientific-python/dev-summit-1/collab.png" alt="Visualization of co-collaboration network"></p>
<h3 id="pytest-pluginssphinx-extensions">Pytest plugins/Sphinx extensions<a class="headerlink" href="#pytest-pluginssphinx-extensions" title="Link to this heading">#</a></h3>
<p>Several attendees worked on pytest plugins and Sphinx extensions:</p>
<ul>
<li>
<p><a href="https://github.com/tylerjereddy/pytest-regex">pytest-regex</a> was created to support selecting tests with regular expressions.</p>
</li>
<li>
<p><a href="https://github.com/scientific-python/pytest-doctestplus">pytest-doctestplus</a> was moved upstream into the Scientific Python organization.
The summit provided new momentum to develop new features (e.g. produce updated docstring), and to use it for the NumPy documentation testing.</p>
</li>
<li>
<p>sphinx-scientific-python, a new extension as a home for various features from the ecosystem, e.g.,
we agreed on bringing existing extensions from MNE tools to this extension.</p>
</li>
<li>
<p>pydata-sphinx-theme updates</p>
</li>
</ul>
<h3 id="scipy-release-management-progress">SciPy release management progress<a class="headerlink" href="#scipy-release-management-progress" title="Link to this heading">#</a></h3>
<p>The first release candidate of SciPy 1.11.0 was published on PyPI
on May 31, 2023, five days after the conclusion of the summit. The
summit facilitated high-bandwidth decision making on several proposed
SciPy code changes by allowing the current SciPy release manager (Tyler Reddy,
Los Alamos National Laboratory) to consult with other SciPy core developers
in person. Specific code changes were discussed with the following SciPy
maintainers: Stefan van der Walt (<code>scipy.ndimage</code>), CJ Carey (<code>scipy.sparse</code>),
Matt Haberland (<code>scipy.stats</code>), and Pamphile Roy (<code>scipy.stats</code>). When SciPy
releases are performed out of band from the summit, the release manager
will often have to delay incorporation of useful code changes to the
next release six months later, due to lack of availability of the
pertinent domain experts.</p>
<!--

### Lecture notes
-->
<h3 id="package-metrics">Package metrics<a class="headerlink" href="#package-metrics" title="Link to this heading">#</a></h3>
<p>We factored out a general <a href="https://github.com/scientific-python/devstats">developer statistics package</a>
from our prototype <a href="https://devstats.scientific-python.org/">developer statistics website</a>.</p>
<!--

## Post-summit implementation

We are still in the process of
-->]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="summit" label="Summit" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Developer Summit 1: Sparse Arrays]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python awarded CZI grant to improve communications infrastructure &amp; accessibility" />
                <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="related" type="text/html" title="Team up! Alt text and cross-project community" />
                <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python GSoD 2022 Proposal" />
            
                <id>https://blog.scientific-python.org/scientific-python/dev-summit-1-sparse/</id>
            
            
            <published>2023-07-09T10:07:40-04:00</published>
            <updated>2023-07-09T10:07:40-04:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Sparse Arrays at the May Developer Summit in Seattle</blockquote><p>(May 22-26, 2023, Seattle WA) &ndash;
The first <a href="https://blog.scientific-python.org/scientific-python/dev-summit-1/">Scientific Python Developer Summit</a> provided an opportunity
for core developers from the scientific Python ecosystem to come together to:</p>
<ol>
<li>improve joint infrastructure</li>
<li>better coordinate core projects</li>
<li>work on a shared strategic plan</li>
</ol>
<p>Related notes/sites:</p>
<ul>
<li><a href="https://hackmd.io/iEtdfbxfSbGwOAJTXmqyIQ?view">Worklog</a>.</li>
<li><a href="https://scientific-python.org/summits/developer/2023/">Planning Meeting Notes and Info</a>.</li>
</ul>
<p>One of the focuses of the summit was Sparse Arrays, and specifically their implementation in SciPy.
This post attempts to recap what happened with &ldquo;sparse&rdquo; at the summit
and a glimpse of plans for our continuing work. The Sparse Array working group
holds <a href="https://scientific-python.org/calendars">open follow-up meetings</a>, currently scheduled every two weeks,
to continue the momentum and move this project forward.</p>
<p>At the Summit, we focused on improving the newly added Sparse Array API
in SciPy, that lets users manipulate sparse data with NumPy
semantics (before, SciPy used NumPy&rsquo;s 2D-only Matrix API, but that is <a href="https://stackoverflow.com/questions/53254738/deprecation-status-of-the-numpy-matrix-class">slated for deprecation</a>).
Our goal at the summit was to give focused energy to the effort,
bring new people on board, and connect downstream users with the development
effort. We also worked to create a working group for this project that would
last beyond the summit itself.</p>
<p>The specific PRs and Issues involved in <code>scipy.sparse</code> are detailed in the
<a href="https://hackmd.io/1Q2832LDR_2Uv_-cV-wnYg">Summit 2023 scipy.sparse Report</a>,
with more detailed description appearing in the
<a href="https://hackmd.io/iEtdfbxfSbGwOAJTXmqyIQ?view">Summit Worklog</a>.
Some big picture take-aways are:</p>
<ul>
<li>Reorganized how to check for matrix/array/format info. This involved
adding a <code>format</code> attribute describing which format of sparse storage is used,
changing functions <code>issparse</code>/<code>isspmatrix</code> as well as shifting
the class hierarchy to allow easy <code>isinstance</code> checking.
The interface going forward includes:
<ul>
<li><code>issparse(A)</code>: True when a sparse array or matrix.</li>
<li><code>isinstance(A, sparray)</code>: True when a sparse array.</li>
<li><code>isspmatrix(A)</code>: True when a sparse matrix.
To check the format of a sparse array or matrix use <code>A.format == &quot;csr&quot;</code> or similar.</li>
</ul>
</li>
<li>Made decisions about how to approach the &ldquo;creation functions&rdquo; for sparse arrays.
The big-picture approach is to introduce new functions with an <code>_array</code> suffix which
construct sparse arrays. The old names will continue to create sparse matrix until
post-deprecation removal.
Some specific changes made include:
<ul>
<li>Add the creation function <code>diags_array(A)</code> (and planned for <code>eye_array</code>, <code>random_array</code> and others).</li>
<li>Create a <code>sparse.linalg.matrix_power</code> function for positive integer matrix power of a sparse array</li>
</ul>
</li>
<li>Made progress toward 1D sparse arrays. The data structures for 1d may be quite different from 2d.
A prototype <code>coo_array</code> allowed exploration of possible n-d arrays, though that is not a short-term goal.</li>
<li>Explored feasibility and usefulness of defining <code>__array_ufunc__</code> and other <code>__array_*__</code> protocols for sparse arrays</li>
<li>Made clearer distinction between private and public methods for sparse arrays</li>
<li>Improved documentation for sparse arrays</li>
</ul>
<p>Our goal is to have a working set of sparse array construction functions
and a 1d sparse array class (focusing on <code>coo_array</code> first) in plenty of
time for intensive testing before SciPy v1.12. This will then allow us to
focus on creating migration documents and tools as well as helping downstream
libraries make the shift to sparse arrays. We hope to enable the removal of
deprecated sparse matrix interfaces in favor of the array interface. For this
to happen we will need most downstream users to shift to the sparse array API.
We intend to help them do that.</p>
<p>Our work continues with a community call every <a href="https://scientific-python.org/calendars">two weeks on Fridays.</a>
Near term work is to:</p>
<ul>
<li>Continue improving sparse creation functions: diags, eye, random and others.</li>
<li>Deprecate some matrix-specific functionality</li>
<li>General performance improvements</li>
<li>Adapting scikit-learn to support sparse arrays (to be discussed with scikit-learn&rsquo;s maintainers)</li>
</ul>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="summit" label="Summit" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="scipy.sparse" label="scipy.sparse" />
                             
                                <category scheme="taxonomy:Tags" term="sparse" label="Sparse" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Scientific Python awarded CZI grant to improve communications infrastructure & accessibility]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/2022-czi-grant/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="related" type="text/html" title="Team up! Alt text and cross-project community" />
                <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python GSoD 2022 Proposal" />
            
                <id>https://blog.scientific-python.org/scientific-python/2022-czi-grant/</id>
            
            
            <published>2022-11-08T00:00:00+00:00</published>
            <updated>2022-11-08T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>New Scientific Python grant to focus on common web themes, adopting and promoting access-centered practices, translations, and interactivity of documentation.</blockquote><p>We are delighted to announce a <a href="https://scientific-python.org/doc/scientific-python-community-and-communications-infrastructure-2022.pdf">two-year grant</a> from the Chan Zuckerberg Initiative (CZI) in support of the <a href="https://scientific-python.org/">Scientific Python project</a>.
This grant will support work on common web themes, joint infrastructure and practices, accessibility, and interactivity of core library documentation.
We are particularly excited that, through this work, we may expand global participation of scientific communities in using and contributing to Python tools.
It is, to the best of our knowledge, the first time that a scientific open source community has received significant support for accessibility and internationalization efforts.</p>
<h2 id="czi--scientific-python">CZI &amp; Scientific Python<a class="headerlink" href="#czi--scientific-python" title="Link to this heading">#</a></h2>
<p>CZI continues to support many impactful and innovative projects in the scientific Python community through its <a href="https://chanzuckerberg.com/eoss/">Essential Open Source Software for Science (EOSS) program</a>.
Today, they announced the <a href="https://czi.co/3fFaQMZ">5th funding cycle of that program</a>.
This grant to Scientific Python, while outside the EOSS program, complements it well.
Among other things, the Scientific Python project aims to support, document, and make accessible common practices &amp; infrastructure.
Such infrastructure will benefit not only the projects at the core of the ecosystem, but also those well beyond it.</p>
<p>&ldquo;We are thrilled to partner with the Scientific Python project, an effort to harmonize a critical set of open source research software projects widely used across all the areas of biomedical research that CZI supports.
The distributed nature of the scientific open source ecosystem will greatly benefit from their efforts to standardize best practices and focus on ecosystem-level initiatives,&rdquo; said Dario Taraborelli, Science Program Officer at the Chan Zuckerberg Initiative.</p>
<h2 id="what-will-we-be-working-on">What will we be working on?<a class="headerlink" href="#what-will-we-be-working-on" title="Link to this heading">#</a></h2>
<p>This grant will support core scientific Python projects by doing release management, writing documentation, building and supporting joint infrastructure, and by measuring and publishing metrics on community involvement and project health.
In addition, here are some specific deliverables:</p>
<h3 id="common-web-themes">Common web themes<a class="headerlink" href="#common-web-themes" title="Link to this heading">#</a></h3>
<p>There are two web themes commonly deployed on community sites: the <a href="https://theme.scientific-python.org/">Scientific Python Hugo Theme</a>—for project websites, and the <a href="https://github.com/pydata/pydata-sphinx-theme">pydata-sphinx-theme</a>—for documentation.
We will improve these themes, effectively upgrading several project websites simultaneously.
By fostering theme adoption, we will help the ecosystem present a more unified front to users, while reducing the web maintenance burden on developers.
Other theme work includes better responsive layouts (important for use on mobile and tables), blogging facilities, increased usability, and accessibility compliance.</p>
<h3 id="adopting-and-promoting-access-centered-practices">Adopting and promoting access-centered practices<a class="headerlink" href="#adopting-and-promoting-access-centered-practices" title="Link to this heading">#</a></h3>
<p>Better accessibility of online resources increases usability for everyone, while fostering community participation and inclusion.
The Scientific Python Hugo Theme and pydata-sphinx-theme are natural conduits for introducing accessibility standards and best practices to the broader ecosystem.
We will develop access-centered best practices and contribution guidelines, organize online workshops, and work with other maintainers to improve their projects&rsquo; documentation and homepage accessibility.
A set of access-centered practices will be written up as a Scientific Python Ecosystem Coordination document (or SPEC, for short), to provide guidance to those projects we cannot support directly.</p>
<p>A key aim of this work is to have web and documentation themes, as well as core scientific Python project websites, meet the applicable <a href="https://www.w3.org/WAI/standards-guidelines/wcag/">Web Content Accessibility Guidelines</a>.</p>
<h3 id="interactive-documentation--translations">Interactive documentation &amp; translations<a class="headerlink" href="#interactive-documentation--translations" title="Link to this heading">#</a></h3>
<p>Documentation is key to a project’s success, and good documentation is approachable to end users with a wide range of backgrounds and skills.
While most scientific Python projects value documentation and work hard at it, there is still much room for improvement.</p>
<p>One such improvement is translation and localization.
Development takes place in English, as reflected by project websites and documentation.
While many contributors are comfortable with English as a first, second, or even third language, the language barrier excludes especially users that are very young, are new to the community, have learning disabilities, or are from the Global South—all potential future contributors and leaders in the scientific Python community! We will therefore translate key pages of core project websites, and provide translation infrastructure for the web themes.</p>
<p>A second area of improvement is interactivity.
Interactive project documentation has the potential to engage less experienced users, making it easier to experiment with and teach ecosystem libraries.
We will work on documentation interactivity by providing seamless, in-browser execution of code via JupyterLite, a WebAssembly Jupyter distribution.</p>
<h2 id="who-will-be-involved">Who will be involved<a class="headerlink" href="#who-will-be-involved" title="Link to this heading">#</a></h2>
<p>The four PI’s for this grant are Stéfan van der Walt (UC Berkeley; NumPy, scikit-image, SciPy; Scientific Python Hugo Theme), Tania Allard (Quansight Labs; JupyterHub, NumFOCUS DISC, Jupyter accessibility), Jarrod Millman (Scientific Python; NetworkX; scikit-image; Scientific Python Hugo Theme, pydata-sphinx-theme), and Ralf Gommers (Quansight Labs; SciPy, NumPy, <a href="https://data-apis.org/">data-apis.org</a>).
Melissa Weber Mendonça (Quansight Labs; NumPy, SciPy) and Chris Holdgraf (2i2c; Project Jupyter, MyST, pydata-sphinx-theme) will participate as key personnel, providing expertise in documentation and Sphinx themes in particular.
Jarrod and Stéfan are co-creators of the Scientific Python project, and everyone on the grant has been involved in the larger scientific Python ecosystem and community for many years.</p>
<h2 id="next-steps">Next steps<a class="headerlink" href="#next-steps" title="Link to this heading">#</a></h2>
<p>Today was announcement day, but the real work starts in December.
Some topics we’ll be able to dive straight into; others will require hiring—and we’re excited to involve new web designers, accessibility experts, and engineers in this journey.
Stay tuned—there’s a lot more to come!</p>
<p>To connect with the team, and to follow job posts, please join us at <a href="https://discuss.scientific-python.org">https://discuss.scientific-python.org</a>.</p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="czi" label="CZI" />
                             
                                <category scheme="taxonomy:Tags" term="funding" label="funding" />
                             
                                <category scheme="taxonomy:Tags" term="accessibility" label="accessibility" />
                             
                                <category scheme="taxonomy:Tags" term="common-infrastructure" label="common-infrastructure" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Scientific Python: Community developed, community owned]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/scientific-python-project/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
            
                <id>https://blog.scientific-python.org/scientific-python/scientific-python-project/</id>
            
            
            <published>2022-08-14T00:00:00+00:00</published>
            <updated>2022-08-14T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Introducing the Scientific Python project: why it is necessary,
what it hopes to achieve, and the various mechanisms by which
it will operate.</blockquote><p>The Scientific Python project is an initiative to better coordinate and support the scientific Python ecosystem of libraries and to grow the surrounding community.
It aims to improve communication between ecosystem projects, to better plan for their joint future, and to make that future a reality.</p>
<h2 id="why-is-this-important">Why is this important?<a class="headerlink" href="#why-is-this-important" title="Link to this heading">#</a></h2>
<p>Initially, the Scientific Python developer community was small, so that it was easy to discuss important ecosystem-wide decisions at events like the annual SciPy conference.
But with the rapid growth of the community, number of libraries, as well as geographical diversification, this was no longer possible.
Scientific Python is a loose federation of somewhat independent community projects, and while this configuration is robust, it also tends to favor reinvention of the wheel and decisions that focus on project needs, instead of being strategically aligned with the entire ecosystem.
Ultimately, the different projects depend on one another, so that it makes sense to have close coordination between them.</p>
<h2 id="how-are-we-doing-this">How are we doing this?<a class="headerlink" href="#how-are-we-doing-this" title="Link to this heading">#</a></h2>
<h3 id="specs">SPECs<a class="headerlink" href="#specs" title="Link to this heading">#</a></h3>
<p>The <a href="https://scientific-python.org/specs/">SPECs</a>, or Scientific Python Ecosystem Coordination documents, provide a mechanism through which the community can establish cross-project policies.
They function similarly to PEPs, NEPs, SKIPs, or any of the other enhancement proposals—except that they are relevant to multiple projects in the ecosystem.</p>
<p>These documents will be recommendations written up by the community, and their authority will derive from endorsement by popular libraries.
Some of them are already in progress and many are on the way!</p>
<p>SPECs are short and concise, and are endorsed by core projects in the ecosystem once they are adopted.</p>
<h3 id="shared-infrastructure">Shared infrastructure<a class="headerlink" href="#shared-infrastructure" title="Link to this heading">#</a></h3>
<p>We provide common engineering infrastructure to help maintainers.
Some tools we currently work on include
<a href="https://github.com/scientific-python/scientific-python-hugo-theme">a Hugo web theme</a> for project websites,
a self-hosted privacy-friendly web analytics platform,
a <a href="https://discuss.scientific-python.org">shared discussion forum</a>,
the <a href="https://github.com/scientific-python/devpy">devpy</a> developer CLI,
<a href="https://blog.scientific-python.org">this blog</a>,
and a <a href="https://devstats.scientific-python.org">project development statistics dashboard</a>.</p>
<h3 id="developer-events">Developer events<a class="headerlink" href="#developer-events" title="Link to this heading">#</a></h3>
<p>We organize virtual &ldquo;domain summits&rdquo; where developers can meet to discuss relevant cross-project topics.
These will be recorded and shared on our <a href="https://www.youtube.com/@scientific-python">YouTube channel</a>.
Thus far, we&rsquo;ve organized four such events on: API dispatching, alt-text for improved accessibility, domain stacks, and sparse arrays.</p>
<p>We also organize an annual in-person developer summit: a week of intense collaboration, with work scheduled ahead of time, during which we address as many cross-project concerns as we can.</p>
<h3 id="documentation">Documentation<a class="headerlink" href="#documentation" title="Link to this heading">#</a></h3>
<p>We work on documentation for new contributors and maintainers.
Our YouTube channel hosts onboarding videos, that show how to get started contributing to a scientific Python project, as well as developer interviews.
Over the next year, we also plan to unify several disparate community resources into a maintainer guide.</p>
<h3 id="community-outreach">Community outreach<a class="headerlink" href="#community-outreach" title="Link to this heading">#</a></h3>
<p>We love to reach out to and connect with our growing community of users and developers!
Platforms we are present on include
<a href="https://twitter.com/scientific_py">Twitter</a>, <a href="https://www.facebook.com/scientific.python">Facebook</a>, <a href="https://www.instagram.com/scientific.python">Instagram</a>, and <a href="https://www.tiktok.com/@scientific.python">TikTok</a>.</p>
<h2 id="who-is-behind-this">Who is behind this?<a class="headerlink" href="#who-is-behind-this" title="Link to this heading">#</a></h2>
<p>The short answer: anyone who wants to be.
The long answer: we are a community of volunteers from different scientific Python ecosystem packages.
There are several teams working on the different aspects of the project, such as our <a href="https://scientific-python.org/about/">community managers &amp; leaders</a>, the <a href="https://scientific-python.org/about/">SPEC steering committee</a>, and <a href="https://blog.scientific-python.org/about/">blog content reviewers and editors</a>.
The project is led by Jarrod Millman and Stéfan van der Walt, both long-term community members who care deeply about the success of the ecosystem and its developers.</p>
<p>Currently there are eight <a href="https://scientific-python.org/specs/core-projects/">projects</a> that endorse the SPECs: IPython, Matplotlib, NetworkX, NumPy, pandas, scikit-image, scikit-learn, and SciPy.
However, contributors from many more projects participate on our discussion forum, write blogs, and contribute to the community in other ways.
We welcome everyone to become part of the community and to contribute however they can!</p>
<p><img src="/scientific-python/scientific-python-project/community.png" alt="Picture of the Scientific Python Community"></p>
<h2 id="what-am-i-doing-here">What am I doing here?<a class="headerlink" href="#what-am-i-doing-here" title="Link to this heading">#</a></h2>
<p>For the past couple of months I have been a community manager for the project.
This includes recording documentation videos for the website, recording developer interviews for our YouTube channel, presenting talks at conferences, hosting developer events, creating content for our Instagram, Facebook, TikTok, and Twitter channels, and many other things that I never thought I would do.</p>
<p>Why? Because I believe in this.
Jarrod and Stéfan reached out to me last year, inviting me to be part of this amazing idea and I was honored and very grateful.
I wasn&rsquo;t sure that I could do it, but now I find myself here and I know that this is the right place for me.
Not because I have a lot of experience in these things (I had actually never even used TikTok before joining the project), but because I care.
I have learned the importance of building community and while the Scientific Python tools are amazing, what makes the difference is the community around them and I&rsquo;m grateful to be able to help make this community great.</p>
<p>I have learned a lot from the Scientific Python ecosystem by being a community manager, I have met a lot of wonderful people and I have seen what people can do with the tools that the ecosystem offers.
So, my take: The Scientific Python project is a great bet.
Open source Scientific Python is about much more than coding, it is about collaborating, teaching, and communicating.
So unifying the community and promoting the integration of the projects sounds like the perfect path to follow in order to get the most out of the ecosystem.</p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="community" label="community" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="scientific-python" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Team up! Alt text and cross-project community]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="related" type="text/html" title="Scientific Python GSoD 2022 Proposal" />
            
                <id>https://blog.scientific-python.org/scientific-python/alt-text-workshop-summary/</id>
            
            
            <published>2022-05-19T00:00:00+00:00</published>
            <updated>2022-05-19T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Learn more about alt text on the blog and how you can contribute.</blockquote><p><img src="/scientific-python/alt-text-workshop-summary/alt-text-header.png" alt="Icons of the accessibility symbol, a paper tag labeled ‘Alt’, and a photograph."></p>
<p>The Scientific Python blog has just gotten a little more accessible! If you
didn&rsquo;t catch our <a href="https://twitter.com/scientific_py/status/1523733881651834880">invite on Twitter</a>
or run into the problem firsthand, there&rsquo;s a good chance you might not have
noticed the new descriptions for a number of blog post images.</p>
<p>Since it&rsquo;s not a flashy improvement, we wanted to make a point to highlight
the community effort to to make a more accessible blog&ndash;and internet as a
whole&ndash;last week.</p>
<h2 id="what-did-we-do">What did we do?<a class="headerlink" href="#what-did-we-do" title="Link to this heading">#</a></h2>
<p>In the spirit of <a href="https://scientific-python.org/about/">Scientific Python&rsquo;s mission to build community-developed and
inclusive spaces</a>, the project had its
first image description workshop on May 13, 2022. We gathered to learn about
and practice writing about images from the ground up. Image descriptions&ndash;
<a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/alt">often called <code>alt text</code></a>&ndash;
are one of many accessibility considerations that people making content are
responsible for.
<a href="https://webaim.org/projects/million/#alttext">Missing alt text is among the most common culprits of inaccessible content on the internet</a>.
Fortunately, missing alt text has a clear fix even for those new to with
accessibility: describe the image based on its context.</p>
<p><img src="/scientific-python/alt-text-workshop-summary/group.png" alt="Some of the team behind the alt text. Listed from left to right in Zoom, they are Mars Lee, Jarrod Millman, Isabela Presedo-Floyd, Jan-Hendrik Müller, Mridul Seth, Maxwell Grover, Noa Tamir, Pamphile Roy, and Saranjeet Kaur. Several event participants are not pictured per their request."></p>
<p>During this event, thirteen people wrote 23 image descriptions to improve 11
blog posts in one hour (plus the time for post-event feedback 😉). Wow! The
images covered range from illustrative additions, to creative tutorials, to
charts that carry the message of the blog post, so it provides great set of
examples on how to consider
<a href="https://www.w3.org/WAI/tutorials/images/decision-tree/">writing alt text in different situations</a>.</p>
<p>That&rsquo;s not even counting the many questions, discussions, and ephiphanies that
happened during out work time. Learning can&rsquo;t be captured as easily by a
number, but a taste of our less quantifiable wins can be found on
<a href="https://youtu.be/Zn-zyU2lS0k">the workshop recording</a>.</p>
<h2 id="want-to-learn-more">Want to learn more?<a class="headerlink" href="#want-to-learn-more" title="Link to this heading">#</a></h2>
<p>If you want to further explore the experience and relive the joy, you can find
resources on the <a href="https://hackmd.io/bfhftUCiTRqx2S8CTGUt6g?view">event agenda</a>,
discussions on the <a href="https://github.com/MarsBarLee/blog.scientific-python.org/pull/1">working pull request</a>,
and the final steps needed to make change on the <a href="https://github.com/scientific-python/blog.scientific-python.org/pull/71">contributing pull request</a>.</p>
<p>But wait, there&rsquo;s more! While the community made great progress on improving
the blog, the work to add or improve alt text on Scientific Python&rsquo;s blog,
website, and documentation is ongoing. You can continue these efforts by</p>
<ul>
<li>Contributing as an individual! There&rsquo;s no reason you can&rsquo;t write some image descriptions for your favorite blog post to make it even better. (👀 This is a great excuse to find a new favorite blog post.)</li>
<li>Contributing as a group! Collect your friends, co-workers, neighbors, local book club attendees, or others to team up and write alt text. (Help for duplicating the process of our group PR can be found <a href="https://github.com/isabela-pf/a11y-events/tree/main/workshop-resources/alt-text">on the draft event documentation</a>.)</li>
<li>Staying in touch for announcements of future contributing events on the <a href="https://twitter.com/scientific_py">Scientific Python Twitter</a>.</li>
</ul>
<hr>
<p><em>This image description event has been run across multiple open-source projects in the scientific computing ecosystem. <a href="https://github.com/alt-text-task-force">Reach out via issue</a> if you are interested in running a similar event on a project you are part of.</em> ❤️</p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="event" label="event" />
                             
                                <category scheme="taxonomy:Tags" term="accessibility" label="accessibility" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Scientific Python GSoD 2022 Proposal]]></title>
            <link href="https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/?utm_source=atom_feed" rel="alternate" type="text/html" />
            
                <link href="https://blog.scientific-python.org/matplotlib/gsod-developing-matplotlib-entry-paths/?utm_source=atom_feed" rel="related" type="text/html" title="GSoD: Developing Matplotlib Entry Paths" />
            
                <id>https://blog.scientific-python.org/scientific-python/gsod-2022-proposal/</id>
            
            
            <published>2022-03-25T00:00:00+00:00</published>
            <updated>2022-03-25T00:00:00+00:00</updated>
            
            
            <content type="html"><![CDATA[<blockquote>Create educational content for the Scientific Python Blog</blockquote><h2 id="create-educational-content-for-the-scientific-python-blog">Create educational content for the Scientific Python Blog<a class="headerlink" href="#create-educational-content-for-the-scientific-python-blog" title="Link to this heading">#</a></h2>
<h2 id="about-your-organization">About your organization<a class="headerlink" href="#about-your-organization" title="Link to this heading">#</a></h2>
<p>With an extensive and high-quality ecosystem of libraries, scientific Python
has emerged as the leading platform for data analysis.
This ecosystem is sustained largely by volunteers working on independent
projects with separate mailing lists, websites, roadmaps, documentation,
engineering and packaging solutions, and governance structures.</p>
<p>The Scientific Python project aims to better coordinate the ecosystem and
prepare the software projects in this ecosystem for the next decade of data
science.</p>
<h2 id="about-your-project">About your project<a class="headerlink" href="#about-your-project" title="Link to this heading">#</a></h2>
<h3 id="your-projects-problem">Your project’s problem<a class="headerlink" href="#your-projects-problem" title="Link to this heading">#</a></h3>
<p>There is no shortage of blog posts around the web about how to use and explore
different packages in the scientific Python ecosystem.
However, some of it is outdated or incomplete, and many times doesn&rsquo;t follow
the best practices that would be advocated for by the maintainers of these
packages.</p>
<p>In addition, we would like to create a central, <em>community-driven</em> location where
Scientific Python projects can make announcements and share information.</p>
<p>Our project aims to be the definitive community blog&mdash;for people looking
to make use of these libraries in education, research and industry, contribute
to them, or maintain them&mdash;written, reviewed, and approved by the community
of developers and users.</p>
<p>While our core projects (NumPy, SciPy, Matplotlib, scikit-image, NetworkX, etc.)
will be regularly contributing content, we also would like to increase the number of
contributors by providing support to newer members to generate high-quality,
peer-reviewed blog posts.</p>
<h3 id="your-projects-scope">Your project’s scope<a class="headerlink" href="#your-projects-scope" title="Link to this heading">#</a></h3>
<!--
*Tell us about what documentation your organization will create, update, or improve. If some work is deliberately not being done, include that information as well. Include a time estimate, and whether you have already identified organization volunteers and a technical writer to work with your project.*
-->
<p>Our goal is to populate the <a href="https://blog.scientific-python.org/">https://blog.scientific-python.org/</a> website with
high-quality content, reviewed and approved by the maintainers of the
libraries in the ecosystem.
The main goal of these documents is to centralize information relevant to all
(or most) projects in the ecosystem, at the reduced cost of being maintained in
one place.</p>
<p>This project aims to:</p>
<ul>
<li>Create content for the <a href="https://blog.scientific-python.org/">https://blog.scientific-python.org/</a> website</li>
</ul>
<p>To ensure this project is successful, it is recommended that the technical
writer has some familiarity with at least a few of Scientific Python&rsquo;s
<a href="https://scientific-python.org/specs/core-projects">core projects</a>.</p>
<h3 id="measuring-your-projects-success">Measuring your project’s success<a class="headerlink" href="#measuring-your-projects-success" title="Link to this heading">#</a></h3>
<!--
*How will you know that your new documentation has helped solve your problem? What metrics will you use, and how will you track them?*
-->
<p>We would consider the project successful if:</p>
<ul>
<li>At least 3 blog posts were published on blog.scientific-python.org,
by each of the technical writers.</li>
<li>Improved submission and review guide</li>
</ul>
<h3 id="timeline">Timeline<a class="headerlink" href="#timeline" title="Link to this heading">#</a></h3>
<p>We anticipate the project to be developed over six months including onboarding
five technical writers, reviewing existing material, developing blog post ideas with
the project mentors and blog editorial board, writing and revising the
blog posts, as well as providing feedback on the submission and review process.</p>
<!-- prettier-ignore-start -->




<table class="table" id="id000">
  
  <col
    
    align="left"
    
  >
  
  <col
    
    align="right"
    
  >
  

  
  <th class="head">Dates</th>
  
  <th class="head">Action Items</th>
  

  
  <tr>
    
      
      <td>
        May
      </td>
      
    
      
      <td>
        Onboarding
      </td>
      
    
  </tr>
  
  <tr>
    
      
      <td>
        June
      </td>
      
    
      
      <td>
        Review existing documentation
      </td>
      
    
  </tr>
  
  <tr>
    
      
      <td>
        July
      </td>
      
    
      
      <td>
        Update contributor guide
      </td>
      
    
  </tr>
  
  <tr>
    
      
      <td>
        August&ndash;October
      </td>
      
    
      
      <td>
        Create and edit content
      </td>
      
    
  </tr>
  
  <tr>
    
      
      <td>
        November
      </td>
      
    
      
      <td>
        Project completion
      </td>
      
    
  </tr>
  

</table>


<!-- prettier-ignore-end -->
<h2 id="project-budget">Project budget<a class="headerlink" href="#project-budget" title="Link to this heading">#</a></h2>
<!-- prettier-ignore-start -->




<table class="table" id="id001">
  

  
  <th class="head">Budget item</th>
  
  <th class="head">Amount</th>
  
  <th class="head">Running Total</th>
  
  <th class="head">Notes/justifications</th>
  

  
  <tr>
    
      
      <td>
        Technical writers (5)
      </td>
      
    
      
      <td>
        $15,000.00
      </td>
      
    
      
      <td>
        $15,000.00
      </td>
      
    
      
      <td>
        $3,000 / writer
      </td>
      
    
  </tr>
  
  <tr>
    
      
      <td>
        TOTAL
      </td>
      
    
      
      <td>
        
      </td>
      
    
      
      <td>
        $15,000.00
      </td>
      
    
      
      <td>
        
      </td>
      
    
  </tr>
  

</table>


<!-- prettier-ignore-end -->
<h3 id="additional-information">Additional information<a class="headerlink" href="#additional-information" title="Link to this heading">#</a></h3>
<!--
*Include here any additional information that is relevant to your proposal.*

*- Previous experience with technical writers or documentation: If you or any of your mentors have worked with technical writers before, or have developed documentation, mention this in your application. Describe the documentation that you produced and the ways in which you worked with the technical writer. For example, describe any review processes that you used, or how the technical writer's skills were useful to your project. Explain how this previous experience may help you to work with a technical writer in Season of Docs.*
*- Previous participation in Season of Docs, Google Summer of Code or others: If you or any of your mentors have taken part in Google Summer of Code or a similar program, mention this in your application. Describe your achievements in that program. Explain how this experience may influence the way you work in Season of Docs.*
-->
<p>The Scientific Python project is a new initiative, and this is our first time
participating in Google Season of Docs.
However, both Jarrod Millman and Ross Barnowski are established members of the
Python community, with a vast collective experience in mentoring, managing and
maintaining large open source projects.</p>
<p>Jarrod cofounded the Neuroimaging in Python project. He was the NumPy and SciPy
release manager from 2007 to 2009. He cofounded NumFOCUS and served on its board
from 2011 to 2015. Currently, he is the release manager of NetworkX and cofounder
of the Scientific Python project.</p>
<p>Both mentors Jarrod and Ross have mentored many new
contributors on multiple projects including NumPy, SciPy, and NetworkX.
Ross has served as a co-mentor for three former GSoD students on the NumPy
project, largely related to generating new content for tutorials, as well as
refactoring existing user documentation.</p>
<p>Links:</p>
<ul>
<li><a href="https://scientific-python.org/">https://scientific-python.org/</a></li>
<li><a href="https://blog.scientific-python.org/">https://blog.scientific-python.org/</a></li>
<li><a href="https://github.com/scientific-python/">https://github.com/scientific-python/</a></li>
</ul>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="taxonomy:Tags" term="gsod" label="GSoD" />
                             
                                <category scheme="taxonomy:Tags" term="scientific-python" label="Scientific-Python" />
                             
                                <category scheme="taxonomy:Tags" term="proposal" label="proposal" />
                            
                        
                    
                
            
        </entry>
    
</feed>
