diff --git a/_posts/2025-12-16-pyopensci-2025-recap.md b/_posts/2025-12-16-pyopensci-2025-recap.md new file mode 100644 index 00000000..1974035d --- /dev/null +++ b/_posts/2025-12-16-pyopensci-2025-recap.md @@ -0,0 +1,201 @@ +--- +layout: single +title: "pyOpenSci Annual Review: Tackling Hard Things Together" +excerpt: "2025 was hard, but the pyOpenSci community leaned in. Despite funding uncertainty and GenAI challenges that strained our community, over 376 contributors continued to show up. Together, we continued to strengthen partnerships, focused on sustainability beyond grants, and fortified our community spaces where experts and beginners learn together. And more importantly we supported each other. THIS, is the spirit of resilience." +author: "pyopensci" +permalink: /blog/pyopensci-2025-year-in-review.html +header: + overlay_image: images/headers/pyopensci-floral.png +categories: + - blog-post + - community +classes: wide +toc: true +comments: true +last_modified: 2025-12-18 +--- + +**I'm not going to sugarcoat it—2025 has been hard.** + +I've been running pyOpenSci since 2018, and this is the first year where I genuinely wasn’t sure what the ground would look like under our feet not only six months out but even tomorrow. + +Watching organizations like the Carpentries and the [Python Software Foundation](https://pyfound.blogspot.com/2025/10/NSF-funding-statement.html) turn down million‑dollar‑plus NSF grants because DEIA work was no longer supported by government agencies really hit close to home. + +The spread of generative AI use in both the scientific and open source ecosystems also caused a lot of anxiety and strain—concerns about licensing, whether young developers and researchers are learning foundational skills in a GenAI-driven world, and the influx of issues and pull requests that maintainers are struggling to review. I worry about volunteer burnout. + +However, 2025 also brought with it a shining light—instead of pulling back, the pyOpenSci community leaned in. + +I watched everyone choose to show up and work on the open science infrastructure that we are building together. If you are one of our community members reading this: THANK YOU. + +People showed up because they care about science, inclusion, and open source—and, more importantly, each other. The people in our community are what fuel me every day and make the pyOpenSci community resilient and so special. We adapted. Resilience has been what this year has been about for me. + +Here’s what we did—together. + +## Community growth when it matters most + +If you are a numbers person, here are some that show how we've grown. + +* Our community is now over 376 contributors strong +* Over 268 people have contributed to GitHub improving infrastructure, docs, translations and tooling. +* 116 volunteer reviewers have supported over 120 package maintainers through our software review program. +* To date we've had 29 volunteer editors continue to lead the peer review program driving the entire process forward. + +
+ + + pyOpenSci community members working together + +
When I look at these numbers, I see individual, inspirational faces and stories—people who care about inclusion in both science and open source.
+
+ +People who care about inclusion in both science and open source. Like a colleague I met at our record-setting SciPy sprint last summer who sat down, saw the size of the sprint group, and asked—"how can I help?" He spent the day working with other sprinters, helping them make their first contributions to open source. + +
+ + + Tracey and James at the SciPy 2025 sprint + +
Tracey and James at the SciPy 2025 sprint, where community members came together to support each other and make their first contributions to open source.
+
+ +I also see the maintainer who went through our peer review process and improved their package's quality. At meetings often someone will come up to me that had a great experience; it just brings me joy. I see our editors-in-chief who led the peer review process throughout the year despite jobs being cut and sections of government operations being torn down. Together they even navigated the uptick in AI-fueled submissions. I also see the editor(s) who stepped up to complete a review when another editor needed a break. This happened multiple times this year and I was amazed at the level of support and care that our community showed for each other. It was everything. + +Even though it's been hard, our community has continually chosen to show up. **This is resilience in action.** + +### Generative AI in scientific open source + +One of the important conversations our community had this year centered on Generative AI. We wrestled with hard questions together: + +* What does responsible AI use look like in scientific software? +* How do we ensure developers still learn foundational skills even when AI can generate code quickly? +* What about licensing concerns and the influx of AI-generated pull requests that maintainers are struggling to review? + +Maintainers in our ecosystem are dealing with this new GenAI fueled reality every day. We shared concerns, social posts, papers and youtube videos. [We even wrote a blog post on the topic]({{ site.url }}/blog/generative-ai-peer-review-policy.html) and began adding policy to our peer review process as a safeguard for our volunteer reviewers. In real time, we recognized that this is something we need to navigate together as a community. And, together, we've made progress. + +## Building sustainability beyond grants + +I was saddened to watch major organizations have to turn down seven‑figure NSF grants that would have sustained their work. But it reminded me that a grant-focused funding model is not going to carry our community into 2027 and beyond. [We've been actively exploring sustainability models]({{ site.url }}/blog/pyopensci-funding-sustainability.html) and [convening with other open science communities]({{ site.url }}/blog/pyopensci-surviving-to-thriving.html)—including the Carpentries, rOpenSci, Open Life Sciences, and PREreview—to build resilience together. + +This year, we began actively diversifying our revenue streams through three paths: + +### Training programs: Building skills for the future + +We're building training not just for revenue—but because scientists need accessible, high‑quality education that bridges research workflows and Python packaging best practices. GenAI is supporting many workflows and learning, but it's not a replacement for human guidance and mentorship. + +There is a lot of work to do to ensure that the next generation of researchers and open source developers have the skills that they need to truly be successful. We are living in a multi-language ecosystem, and natural language (like English) will not be enough knowledge to solve the world's greatest challenges, all of which require highly technical data processing and analysis. + +In 2025, I designed and delivered multiple workshops, intentionally testing synchronous vs. asynchronous formats, pacing and cohort size, and fundamentals vs. workflow‑focused curricula. These pilot workshops informed the design of our Spring 2026 asynchronous cohort course. This new course will be more affordable and accessible to a wider range of people. It will connect researchers across the US and the world with each other so they can work on similar pain points and learn together. It will teach foundational open source skills and introduce researchers to the people behind the tools driving open science and open source software. + +
+ + + Teaching a pyOpenSci workshop at SciPy 2025 + +
Teaching a pyOpenSci workshop at SciPy 2025, where participants learn Python packaging and open source best practices together.
+
+ +If you're interested in joining our training programs or bringing workshops to your organization, [get in touch](mailto:leah@pyopensci.org). + +### Organizational membership: Building community partnerships + +We piloted a membership model and partnered with Stanford's Open Source Program Office (OSPO) as our first organizational member. Using the training programs we've built, we ran 2 workshops for Stanford researchers in 2025 and will run more in 2026. We also connected with the CURIOSS OSPO network which bridges OSPOs around the world. + +At pyOpenSci, these types of partnerships are not just transactional—they are a way to infuse new ideas and energy, grow our vibrant community of practice, and support each other. Through these partnerships, we will help even more researchers struggle less with code so they can focus more on their science and discovery. + +If your OSPO or research institution is interested in membership or partnership opportunities, [reach out](mailto:leah@pyopensci.org). + +### Corporate sponsorship: Supporting scientific infrastructure + +We also began developing corporate sponsorship opportunities for companies that want to support scientific software and science during a time when that support is needed most. We've had some great conversations with companies who are interested in supporting our community. + +If your company is interested in supporting scientific software infrastructure and the researchers who depend on it, [please reach out](mailto:leah@pyopensci.org). + +Why this matters now: in the next 12 months, our goal is to cover a significant chunk of our core operational costs through diversified revenue. We want to thrive rather than merely surviving 2026. + +## Improving software in the scientific Python ecosystem through peer review + +Software peer review is how pyOpenSci started. Years later, 59 packages are now part of our ecosystem, supported by over 200 volunteers who have driven our peer review process forward. To date, we've had 96 total submissions. + +This year brought new challenges—especially around GenAI use in scientific software development. We saw the same author submit multiple packages in the same week, creating unprecedented pressure on our volunteer reviewers. As our community wrestled with these questions throughout 2025, we recognized that our peer review process needed clear guidance. + +My biggest concern for our peer review program is people—specifically, volunteer burnout. Humans can now generate huge volumes of code quickly, but we don't have the capacity to review that volume of work. We're seeing model-generated submissions flood our process, asking volunteer reviewers to evaluate code they didn't write. These tools can offer value when used properly, but we can't put that burden on our volunteer teams. + +I also worry about the broader implications: education gaps, licensing concerns, and the disproportionate impact on underrepresented groups that GenAI brings to scientific software development. + +We're actively developing policy around Generative AI use in packages submitted for review—addressing licensing concerns, disclosure requirements, and ensuring code quality standards. There are no clear answers yet, but we're learning together, one careful policy conversation at a time. + +### The power of peer review partnership: Building together + +The value of a shared peer review process has continued to crystallize. Rather than each organization running their own separate process, we're building shared infrastructure together. + +Our partnership with **Astropy** means they no longer have to run their own peer review process. Instead, they can use the process and infrastructure that we're building together as a broader community. The Astropy editors have been incredibly engaged in developing new policy and approaches for the GenAI era, and this cross-community collaboration has been powerful. + +So far, 6 Astropy packages have been accepted both to pyOpenSci and as an Astropy-affiliated package through our shared process. We are also now actively reviewing the Astropy core package itself. + +Our partnership with **JOSS** works similarly—when we review a package, that's one less editor and two fewer reviewers JOSS needs to engage, allowing them to scale their process. Communities like Astropy aren't designed to run peer review, but by using our shared infrastructure and contributing back to our program, everyone benefits. + +When we think critically about human resources—JOSS, rOpenSci, and pyOpenSci all run review processes with different goals—sharing reviews means fewer editors and reviewers needed across the ecosystem. To date, 29 packages have been JOSS-approved through our partnership, reducing redundant work and allowing us to streamline our collective volunteer energy. + +## Record sprint engagement + +We had hugely successful sprints this year at PyCon US and SciPy. But SciPy 2025 in Tacoma, Washington was something special—it was the perfect manifestation of what I envision the pyOpenSci community to be. [You can read more about our SciPy highlights]({{ site.url }}/blog/pyopensci-at-scipy-2025.html) and [what we learned from our community BoF session]({{ site.url }}/blog/pyopensci-bof-community-scipy-2025.html). + +On day one, 20 participants showed up—67% more than 2024. More than I expected. Rather than becoming a challenge to navigate, something beautiful happened: the community self-organized. Experienced sprinters stepped up without being asked. They worked together, helped each other, and created their own learning groups. People sketched on whiteboards, moved tables to form small groups, and mentored each other through Git and GitHub. It was this beautiful mix of expert to beginner Pythonistas learning and growing together. + +
+ + + SciPy 2025 sprint participants working in small groups + +
SciPy 2025 sprint participants self-organizing into small groups, sketching on whiteboards, and mentoring each other.
+
+ +This is what happens when you continue to show up, run events, and create healthy, supportive spaces. Others join in. They extend the work. They become the community. + +We also supported the PyCon US 2025 Maintainers Summit, creating space for those who keep scientific Python running. + +
+ + + PyCon US 2025 Maintainers Summit + +
PyCon US 2025 Maintainers Summit, where we created space for those who keep scientific Python running.
+
+ +## The people who make it possible + +None of what pyOpenSci accomplished this year would have happened without the people who showed up and made it work. + +Our 2025 executive council—[Karen Cranston](https://github.com/kcranston) and [April Johnson](https://www.apriljohnson.io/about-me/)—encouraged me to embrace sustainable leadership. They supported me as I navigated the challenges of the year, and as I said no to things to ensure my focus was aligned, and in developing new programs to support our sustainability, providing critical guidance on organizational challenges and strategic decisions. This led to concrete outcomes: new training pilots, diversified sustainability models, and healthier leadership practices. + +Our editors-in-chief—[James Balamuta](https://github.com/coatless), [Eliot Robson](https://github.com/erobson), and [Lauren Yee](https://github.com/laurenyee)—led the peer review process throughout the year. They navigated the uptick in AI-fueled submissions, stepped up when reviews got challenging, and kept quality standards high. + +Our [editorial team]({{ site.url }}/community/editorial-team/) makes quality peer review possible. This year, 116 volunteer reviewers and 29 volunteer editors drove peer review forward. Their commitment to getting it right, even when it's hard, is what makes our process work. + +As I was developing our sustainability model, Carol Willing, Inessa Pawson, and Chase Million from our Advisory Council stepped up and helped me brainstorm, reviewed ideas, and provided input on the directions I was considering and what outcomes I might expect. They provided exceptional support, helping both me and the organization navigate a challenging year with wisdom and care. + +
+ + + Carol Willing presenting on micromentoring + +
Carol Willing from our Advisory Council presenting on micromentoring at SciPy 2025.
+
+ +And to everyone else who contributed—workshop organizers, sprint mentors, blog contributors, and the countless others who showed up—thank you. This community is built by all of you. + +## pyOpenSci in the news + +This year, pyOpenSci was featured on the [PyBites podcast](https://www.youtube.com/watch?v=9jyYV3G2xu8) and I participated in a [PyLadiesCon panel](https://www.youtube.com/live/NB2Q9dbLwVc?si=WTZdNM5b3eMMKzT8). These opportunities help spread the word about our community and the work we're doing together. + +## What's next (2026) + +Our focus for 2026 is sustainability. This spring we will launch a new part of our membership program—cohort-based online courses that focus on all aspects of building, packaging, publishing, sharing, and maintaining open reusable code. + +We will also grow our membership and sponsorship programs, continue to build and grow our vibrant community of practice, and explore new ways to support our community in this new age of generative AI-driven software. + +## Hard things, together + +I don't have all the answers about funding or GenAI licensing. But I do know that cohesive, supportive and compassionate community can truly solve our hardest problems. And when times are hard, it also builds resilience. + +Let's keep building. Together. diff --git a/images/blog/2025/bof-group-inessa.png b/images/blog/2025/bof-group-inessa.png new file mode 100644 index 00000000..c55dcc98 Binary files /dev/null and b/images/blog/2025/bof-group-inessa.png differ diff --git a/images/blog/2025/bof-group-inessa.webp b/images/blog/2025/bof-group-inessa.webp new file mode 100644 index 00000000..2bfd2538 Binary files /dev/null and b/images/blog/2025/bof-group-inessa.webp differ diff --git a/images/blog/2025/carol-willing-micromentor.png b/images/blog/2025/carol-willing-micromentor.png new file mode 100644 index 00000000..613becee Binary files /dev/null and b/images/blog/2025/carol-willing-micromentor.png differ diff --git a/images/blog/2025/carol-willing-micromentor.webp b/images/blog/2025/carol-willing-micromentor.webp new file mode 100644 index 00000000..2bb8978c Binary files /dev/null and b/images/blog/2025/carol-willing-micromentor.webp differ diff --git a/images/blog/2025/maintainers-summit-dan.png b/images/blog/2025/maintainers-summit-dan.png new file mode 100644 index 00000000..d1d66a04 Binary files /dev/null and b/images/blog/2025/maintainers-summit-dan.png differ diff --git a/images/blog/2025/maintainers-summit-dan.webp b/images/blog/2025/maintainers-summit-dan.webp new file mode 100644 index 00000000..f371e4f6 Binary files /dev/null and b/images/blog/2025/maintainers-summit-dan.webp differ diff --git a/images/blog/2025/pyos-sprint-group.png b/images/blog/2025/pyos-sprint-group.png new file mode 100644 index 00000000..1d782184 Binary files /dev/null and b/images/blog/2025/pyos-sprint-group.png differ diff --git a/images/blog/2025/pyos-sprint-group.webp b/images/blog/2025/pyos-sprint-group.webp new file mode 100644 index 00000000..613963c7 Binary files /dev/null and b/images/blog/2025/pyos-sprint-group.webp differ diff --git a/images/blog/2025/scipy-workshop-teaching.png b/images/blog/2025/scipy-workshop-teaching.png new file mode 100644 index 00000000..2f26f6df Binary files /dev/null and b/images/blog/2025/scipy-workshop-teaching.png differ diff --git a/images/blog/2025/scipy-workshop-teaching.webp b/images/blog/2025/scipy-workshop-teaching.webp new file mode 100644 index 00000000..b36e753c Binary files /dev/null and b/images/blog/2025/scipy-workshop-teaching.webp differ diff --git a/images/blog/2025/tracey-james-scipy-2025.png b/images/blog/2025/tracey-james-scipy-2025.png new file mode 100644 index 00000000..852a791e Binary files /dev/null and b/images/blog/2025/tracey-james-scipy-2025.png differ diff --git a/images/blog/2025/tracey-james-scipy-2025.webp b/images/blog/2025/tracey-james-scipy-2025.webp new file mode 100644 index 00000000..c38540ac Binary files /dev/null and b/images/blog/2025/tracey-james-scipy-2025.webp differ