<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Scientific Python Ecosystem Coordination on Scientific Python</title>
    <link>https://scientific-python.org/specs/</link>
    <description>Recent content in Scientific Python Ecosystem Coordination on Scientific Python</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 04 Jun 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://scientific-python.org/specs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SPEC 8 — Securing the Release Process</title>
      <link>https://scientific-python.org/specs/spec-0008/</link>
      <pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0008/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;!--&#xA;Briefly and clearly describe the recommendation.&#xA;https://github.com/scientific-python/summit-2024/issues/9&#xA;--&gt;&#xA;&lt;p&gt;Open source libraries constitute a significant portion of the world&amp;rsquo;s digital infrastructure. Securing the Open Source supply chain (OSSC) is therefore an increasing concern, with examples of sophisticated attacks against the ecosystem (e.g., the 2024 &lt;a href=&#34;https://en.wikipedia.org/wiki/XZ_Utils_backdoor&#34;&gt;&lt;code&gt;xz&lt;/code&gt; utils backdoor&lt;/a&gt;) and &lt;a href=&#34;https://blog.pypi.org/posts/2024-04-10-domain-abuse/&#34;&gt;malware attacks on PyPI&lt;/a&gt; highlighting the need for supply chain security to be taken seriously.&#xA;The Python Software Foundation (PSF) is also taking the importance of the OSSC seriously, as demonstrated by the &lt;a href=&#34;https://pyfound.blogspot.com/2023/06/announcing-our-new-security-developer.html&#34;&gt;creation of the PSF Security Developer in Residence position in 2023&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 9 — Governance</title>
      <link>https://scientific-python.org/specs/spec-0009/</link>
      <pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0009/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This SPEC describes what governance is, and offers recommendations for choosing a&#xA;governance model for open-source projects.&lt;/p&gt;&#xA;&lt;p&gt;Open-source project communities are amalgamations of software and the humans who&#xA;use and maintain it. Governance models define methods for decision-making&#xA;within a project, roles for the community members imbued with decision-making&#xA;authority, and processes for filling (and, if needed, vacating) those&#xA;leadership roles. In the context of open-source software projects, governance&#xA;models often also define the granting of necessary permissions or access to&#xA;organization secrets necessary for the implementation of project-related&#xA;decisions. Governance models are complementary to Codes of Conduct and&#xA;Community Guidelines, which define the expectations and responsibilities of all&#xA;participants in a project (including users of the software), regardless of&#xA;their status as a project leader (cf. SPEC XXX), ensuring the long-term&#xA;sustainability of a project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 7 — Seeding Pseudo-Random Number Generation</title>
      <link>https://scientific-python.org/specs/spec-0007/</link>
      <pubDate>Wed, 19 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0007/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Currently, libraries across the ecosystem provide various APIs for seeding pseudo-random number generation.&#xA;This SPEC suggests a unified, pragmatic API, taking into account technical and historical factors.&#xA;Adopting such a uniform API will simplify the user experience, especially for those who rely on multiple projects.&lt;/p&gt;&#xA;&lt;p&gt;We recommend:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;standardizing the usage and interpretation of an &lt;code&gt;rng&lt;/code&gt; keyword for seeding, and&lt;/li&gt;&#xA;&lt;li&gt;avoiding the use of global state and legacy bitstream generators.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We suggest implementing these principles by:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 6 — Keys to the Castle</title>
      <link>https://scientific-python.org/specs/spec-0006/</link>
      <pubDate>Mon, 19 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0006/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;!--&#xA;Briefly and clearly describe the proposal.&#xA;Explain the general need and the advantages of this specific proposal.&#xA;If relevant, include examples of how the new functionality would be used,&#xA;intended use-cases, and pseudo-code illustrating its use.&#xA;--&gt;&#xA;&lt;p&gt;Projects engage with restricted resources all the time.&#xA;Examples include access to add &amp;amp; remove team members, grant commit rights, or make uploads to certain hosts.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Documenting resources&lt;/strong&gt; is critical to ensuring uninterrupted operations.&#xA;It is important that team members know &lt;em&gt;who&lt;/em&gt; have access to resources, and how to &lt;em&gt;gain access&lt;/em&gt; to resources.&#xA;For example, if updated project documentation needs to be uploaded to a remote server via SSH, who are the team members that can do that, and by which process can a release manager request access?&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 5 — CI Best Practices</title>
      <link>https://scientific-python.org/specs/spec-0005/</link>
      <pubDate>Thu, 22 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0005/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;!--&#xA;Briefly and clearly describe the recommendation.&#xA;--&gt;&#xA;&lt;h3 id=&#34;core-project-endorsement&#34;&gt;Core Project Endorsement&lt;a class=&#34;headerlink&#34; href=&#34;#core-project-endorsement&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;!--&#xA;Briefly discuss what it means for a core project to endorse this SPEC.&#xA;--&gt;&#xA;&lt;h3 id=&#34;ecosystem-adoption&#34;&gt;Ecosystem Adoption&lt;a class=&#34;headerlink&#34; href=&#34;#ecosystem-adoption&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;!--&#xA;Briefly discuss what it means for a project to adopt this SPEC.&#xA;--&gt;&#xA;&lt;h4 id=&#34;badges&#34;&gt;Badges&lt;a class=&#34;headerlink&#34; href=&#34;#badges&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;p&gt;Projects can highlight their adoption of this SPEC by including a SPEC badge.&#xA;&#xA;&lt;div class=&#34;tabs&#34;&gt;&#xA;  &lt;div role=&#34;tablist&#34; class=&#34;automatic&#34;&gt;&#xA;    &lt;button id=&#34;-tab-0&#34; type=&#34;button&#34; role=&#34;tab&#34; aria-selected=&#34;true&#34; aria-controls=&#34;-tabpanel-0&#34;&gt;&#xA;      Rendered badge&#xA;    &lt;/button&gt;&#xA;    &lt;button id=&#34;-tab-1&#34; type=&#34;button&#34; role=&#34;tab&#34; aria-selected=&#34;false&#34; aria-controls=&#34;-tabpanel-1&#34;&gt;&#xA;      Markdown&#xA;    &lt;/button&gt;&#xA;    &lt;button id=&#34;-tab-2&#34; type=&#34;button&#34; role=&#34;tab&#34; aria-selected=&#34;false&#34; aria-controls=&#34;-tabpanel-2&#34;&gt;&#xA;      reStructuredText&#xA;    &lt;/button&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div id=&#34;-tabpanel-0&#34; role=&#34;tabpanel&#34; tabindex=&#34;0&#34; aria-labelledby=&#34;$-tab-0&#34;&gt;&lt;a href=&#34;https://scientific-python.org/specs/spec-0005/&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&amp;amp;color=%235CA038&#34; alt=&#34;SPEC 5 — CI Best Practices&#34;&gt;&lt;/a&gt;&lt;/div&gt;&#xA;  &lt;div id=&#34;-tabpanel-1&#34; role=&#34;tabpanel&#34; tabindex=&#34;0&#34; aria-labelledby=&#34;$-tab-1&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&#xA;  &lt;pre&gt;[![SPEC 5 — CI Best Practices](https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&amp;amp;color=%235CA038)](https://scientific-python.org/specs/spec-0005/)&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;  &lt;div id=&#34;-tabpanel-2&#34; role=&#34;tabpanel&#34; tabindex=&#34;0&#34; aria-labelledby=&#34;$-tab-2&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&#xA;  &lt;pre&gt;|SPEC 5 — CI Best Practices| &#xA;&#xA;.. |SPEC 5 — CI Best Practices| image:: https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&amp;amp;color=%235CA038&#xA;   :target: https://scientific-python.org/specs/spec-0005/&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;To indicate adoption of multiple SPECS with one badge, see &lt;a href=&#34;../purpose-and-process/#badges&#34;&gt;this&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 4 — Using and Creating Nightly Wheels</title>
      <link>https://scientific-python.org/specs/spec-0004/</link>
      <pubDate>Mon, 05 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0004/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This SPEC describes how to test against nightly wheels of several widely used&#xA;projects and how to create nightly wheels for your project. The document uses the word&#xA;&lt;em&gt;nightly&lt;/em&gt; to refer to some semi regular interval, like daily, weekly, or every three days.&lt;/p&gt;&#xA;&lt;p&gt;Regularly running your project&amp;rsquo;s tests while using the nightly version of your&#xA;dependencies allows you to spot problems caused by upstream changes before a new release&#xA;is made. This way potential issues can be resolved before they find their way&#xA;into a release, at which point it becomes much harder to change or revert&#xA;something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 3 — Accessibility</title>
      <link>https://scientific-python.org/specs/spec-0003/</link>
      <pubDate>Mon, 14 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0003/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Technology is a great tool to make the world accessible to the full range of human experience, which includes &lt;a href=&#34;https://www.cdc.gov/disability-and-health/articles-documents/disability-impacts-all-of-us-infographic.html&#34;&gt;those with disabilities&lt;/a&gt;. The reach of accessibility guidelines extends beyond the scientific Python ecosystem including the &lt;a href=&#34;https://www.w3.org/TR/WCAG/&#34;&gt;Web Content Accessibility Guidelines (W3C)&lt;/a&gt;, a comprehensive set of international standards designed to make web content more accessible.&lt;/p&gt;&#xA;&lt;p&gt;The primary objective of this SPEC (Scientific Python Accessibility) is to provide fundamental recommendations for the Scientific Python communities and their projects. These recommendations aim to ensure accessibility and inclusivity for individuals with disabilities, particularly regarding web-based content and tools.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 2 — API Dispatch</title>
      <link>https://scientific-python.org/specs/spec-0002/</link>
      <pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0002/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;!--&#xA;Briefly and clearly describe the recommendation.&#xA;--&gt;&#xA;&lt;p&gt;This SPEC (Scientific Python Ecosystem Coordination) recommendation for API dispatching is designed to enhance interoperability and performance within the scientific Python ecosystem, leveraging the capabilities of &lt;a href=&#34;https://packaging.python.org/en/latest/specifications/entry-points/&#34;&gt;Python &lt;code&gt;entry_points&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This recommendation presents a systematic approach that enables users to redirect function calls to alternative computation backends seamlessly. This flexibility allows users to take advantage of optimized implementations simply by configuring an environment variable or adding an additional keyword argument (more on this later), rather than having to learn a new API&amp;rsquo;s interface, which might not be very &amp;ldquo;python-user&amp;rdquo;-friendly. Such adaptability facilitates the integration of hardware-specific optimizations, reimplementations in other programming languages (such as C or Rust), and the utilization of entirely new data structures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 0 — Minimum Supported Dependencies</title>
      <link>https://scientific-python.org/specs/spec-0000/</link>
      <pubDate>Thu, 17 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0000/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This SPEC recommends that all projects across the Scientific Python ecosystem adopt a common time-based policy for dropping dependencies. From the perspective of this SPEC, the dependencies in question are core packages as well as older Python versions.&lt;/p&gt;&#xA;&lt;p&gt;All versions refer to feature releases (i.e., Python 3.8.0, NumPy 1.19.0; not Python 3.8.1, NumPy 1.19.2).&lt;/p&gt;&#xA;&lt;p&gt;Specifically, we recommend that:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Support for Python versions be dropped &lt;strong&gt;3 years&lt;/strong&gt; after their initial release.&lt;/li&gt;&#xA;&lt;li&gt;Support for core package dependencies be dropped &lt;strong&gt;2 years&lt;/strong&gt; after their initial release.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&#xA;  &lt;div class=&#34;admonition-title&#34;&gt; Note&lt;/div&gt;&#xA;  &lt;p&gt;&#xA;    Core packages may or may not decide to provide bug fix releases during the full 2 year period after release.&#xA;Therefore, projects may occasionally want to drop support for core package dependencies earlier than recommended by this SPEC.&#xA;For instance, if a newer minimum version of a core package is needed by a project due to a critical bug fix,&#xA;which is not backported to older versions.&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>SPEC 1 — Lazy Loading of Submodules and Functions</title>
      <link>https://scientific-python.org/specs/spec-0001/</link>
      <pubDate>Thu, 17 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/spec-0001/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;a class=&#34;headerlink&#34; href=&#34;#description&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This SPEC recommends a lazy loading mechanism—targeted at libraries—that avoids import slowdowns&#xA;and provides explicit submodule exports.&lt;/p&gt;&#xA;&lt;p&gt;For example, it allows the following behavior:&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&#xA;  &lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;skimage&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;ski&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# cheap operation; does not load submodules&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ski&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filters&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# cheap operation; loads the filters submodule, but not&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;c1&#34;&gt;# any of its submodules or functions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ski&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filters&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gaussian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# loads the file in which gaussian is implemented&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                           &lt;span class=&#34;c1&#34;&gt;# and calls that function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This has several advantages:&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://scientific-python.org/specs/readme/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://scientific-python.org/specs/readme/</guid>
      <description>&lt;h1 id=&#34;spec&#34;&gt;SPEC&lt;a class=&#34;headerlink&#34; href=&#34;#spec&#34; title=&#34;Link to this heading&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The Scientific Python Ecosystem Coordination (SPEC) mechanism is used to recommend&#xA;project policies, coding conventions, and standard tooling.&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://scientific-python.org/specs/&#34;&gt;https://scientific-python.org/specs/&lt;/a&gt; for a list of SPECs and their statuses.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
