<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rOpenSci - open tools for open science</title>
    <link>https://deploy-preview-1283--ropensci.netlify.app/rbloggers/index.xml</link>
    <description>Recent content on rOpenSci - open tools for open science</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://deploy-preview-1283--ropensci.netlify.app/rbloggers/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>reviser: Analyzing Real-Time Data Revisions in R</title>
      <link>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/04/13/reviser/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <author>rOpenSci</author>
      <guid>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/04/13/reviser/</guid>
      <description>
         
        
        
         &lt;p&gt;Economic data are rarely static.
Gross domestic product (GDP), inflation, employment, and other official statistics arrive as early estimates, then get revised as new source data arrive, seasonal adjustment is updated, or benchmarking changes are applied.
Those revisions matter because they can change the narrative around turning points, policy mistakes, and forecast performance.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.ropensci.org/reviser/&#34;&gt;&lt;code&gt;reviser&lt;/code&gt;&lt;/a&gt; is an R package by Marc Burri and Philipp Wegmüller for working with these vintage datasets directly.
A vintage dataset records multiple published versions of the same time series, so you can compare what was known at each release date with what was reported later.
&lt;code&gt;reviser&lt;/code&gt; gives you a consistent workflow to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reshape release vintages between wide and tidy formats;&lt;/li&gt;
&lt;li&gt;extract revisions relative to earlier or final releases;&lt;/li&gt;
&lt;li&gt;summarize bias, dispersion, and serial dependence in revisions;&lt;/li&gt;
&lt;li&gt;identify the first release that is statistically close to the eventual benchmark;&lt;/li&gt;
&lt;li&gt;nowcast future revisions with state-space models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The package is aimed at users who already work with real-time macroeconomic data and want tools that go beyond plotting revision triangles by hand.
One design goal is to keep that workflow in pure R.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;reviser&lt;/code&gt; was reviewed through &lt;a href=&#34;https://github.com/ropensci/software-review/issues/709&#34;&gt;rOpenSci statistical software peer review&lt;/a&gt;.
Many thanks to reviewers &lt;a href=&#34;https://github.com/AlexGibberd&#34;&gt;Alex Gibberd&lt;/a&gt;, and &lt;a href=&#34;https://github.com/TanguyBarthelemy&#34;&gt;Tanguy Barthelemy&lt;/a&gt;, and to editor &lt;a href=&#34;https://github.com/rkillick&#34;&gt;Rebecca Killick&lt;/a&gt;, for feedback that improved the package.&lt;/p&gt;
&lt;h2&gt;
Why revision analysis deserves its own workflow
&lt;/h2&gt;&lt;p&gt;Revisions are not just measurement noise.
They encode how information enters the data-production process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some revisions reflect genuinely new information.&lt;/li&gt;
&lt;li&gt;Others reflect noise that could, in principle, have been reduced earlier.&lt;/li&gt;
&lt;li&gt;Still others come from methodological changes or benchmark updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These distinctions matter if you are evaluating early data releases, building nowcasts, or asking whether first releases are already efficient summaries of the available information.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;reviser&lt;/code&gt; vignettes organize this workflow into three layers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Structure vintages consistently.&lt;/li&gt;
&lt;li&gt;Measure and test revision properties.&lt;/li&gt;
&lt;li&gt;Model the revision process when you want to predict future changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
A compact example with GDP vintages
&lt;/h2&gt;&lt;p&gt;The first step is to reshape the data into a tidy vintage format, where each row corresponds to an observed value, the date it refers to, and the publication date of that estimate.&lt;/p&gt;
&lt;p&gt;The package ships with a GDP example dataset in long vintage format.
Suppose we want to focus on U.S. GDP growth, visualize how estimates moved during the 2008-09 global financial crisis, and then ask whether early releases were systematically biased relative to a later benchmark.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reviser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dplyr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;gdp_us&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gdp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;US&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&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;tsbox&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ts_pc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&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;tsbox&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ts_span&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1980-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;gdp_wide&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;vintages_wide&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_us&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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;gdp_long&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;vintages_long&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_wide&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keep_na&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the vintages in tidy form, we can plot how the published path changed over time.
The y-axis in the figure reports quarter-on-quarter GDP growth rates.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;plot_vintages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&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;gdp_long&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&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;pub_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2009-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&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;pub_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2010-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&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;time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2008-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&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;time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2010-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&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;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;line&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Revisions of GDP during the 2008-09 global financial crisis&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;ylab&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Quarter-on-quarter GDP growth rate&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figure&gt;&lt;img src=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/04/13/reviser/gdp-example-plot-1.svg&#34;
    alt=&#34;Multiple vintage paths for U.S. GDP growth, highlighting how estimates published in 2009 changed over time.&#34; width=&#34;100%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;GDP growth vintages for the United States during the 2008-09 global financial crisis.&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;During volatile periods, the vintage paths can diverge enough that the story told by the first release is noticeably different from the story told a year later.&lt;/p&gt;
&lt;p&gt;Once the data are in tidy vintage form, you can compare a set of early releases to a later benchmark release.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;final_release&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nth_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_long&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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;early_releases&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nth_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_long&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;summary_tbl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_revision_analysis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;early_releases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;final_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Warning: Both &amp;#39;release&amp;#39; and &amp;#39;pub_date&amp;#39; columns are present in &amp;#39;df.
      The &amp;#39;release&amp;#39; column will be used for grouping.
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;summary_tbl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;select&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;`Bias &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mean&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;`, `&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Bias &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;robust&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;`, `Noise&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Signal`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
=== Revision Analysis Summary ===

# A tibble: 7 × 5
  id    release   `Bias (mean)` `Bias (robust p-value)` `Noise/Signal`
  &amp;lt;chr&amp;gt; &amp;lt;chr&amp;gt;             &amp;lt;dbl&amp;gt;                   &amp;lt;dbl&amp;gt;          &amp;lt;dbl&amp;gt;
1 US    release_0        -0.014                   0.52           0.22 
2 US    release_1        -0.015                   0.425          0.202
3 US    release_2        -0.013                   0.507          0.205
4 US    release_3        -0.003                   0.851          0.194
5 US    release_4        -0.014                   0.326          0.157
6 US    release_5        -0.021                   0.181          0.152
7 US    release_6        -0.018                   0.202          0.13 

=== Interpretation ===

id=US, release=release_0:
  • No significant bias detected (p = 0.52 )
  • Moderate revision volatility (Noise/Signal = 0.22 )

id=US, release=release_1:
  • No significant bias detected (p = 0.425 )
  • Moderate revision volatility (Noise/Signal = 0.202 )

id=US, release=release_2:
  • No significant bias detected (p = 0.507 )
  • Moderate revision volatility (Noise/Signal = 0.205 )

id=US, release=release_3:
  • No significant bias detected (p = 0.851 )
  • Moderate revision volatility (Noise/Signal = 0.194 )

id=US, release=release_4:
  • No significant bias detected (p = 0.326 )
  • Moderate revision volatility (Noise/Signal = 0.157 )

id=US, release=release_5:
  • No significant bias detected (p = 0.181 )
  • Moderate revision volatility (Noise/Signal = 0.152 )

id=US, release=release_6:
  • No significant bias detected (p = 0.202 )
  • Moderate revision volatility (Noise/Signal = 0.13 )
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is where &lt;code&gt;reviser&lt;/code&gt; moves beyond a reshape-and-plot package.
The revision summary reports quantities that applied work often needs but usually rebuilds ad hoc: mean bias, quantiles, volatility, noise-to-signal ratios, and hypothesis tests for bias, serial correlation, and news-versus-noise interpretations.&lt;/p&gt;
&lt;p&gt;In the bundled example, the early U.S. GDP releases over this sample show little evidence of systematic bias relative to the later benchmark.
The package also supports efficient-release diagnostics, where the question is not only whether revisions exist, but when additional revisions stop adding meaningful information.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;efficient_release&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_first_efficient_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;early_releases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;final_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;summary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;efficient_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Efficient release:  0 

Model summary: 

Call:
stats::lm(formula = formula, data = df_wide)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.89186 -0.12669  0.02046  0.11475  0.97986 

Coefficients:
            Estimate Std. Error t value Pr(&amp;gt;|t|)    
(Intercept)  0.00299    0.02223   0.134    0.893    
release_0    0.97412    0.01692  57.567   &amp;lt;2e-16 ***
---
Signif. codes:  0 &amp;#39;***&amp;#39; 0.001 &amp;#39;**&amp;#39; 0.01 &amp;#39;*&amp;#39; 0.05 &amp;#39;.&amp;#39; 0.1 &amp;#39; &amp;#39; 1

Residual standard error: 0.2518 on 166 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.9523,	Adjusted R-squared:  0.952 
F-statistic:  3314 on 1 and 166 DF,  p-value: &amp;lt; 2.2e-16


Test summary: 

Linear hypothesis test:
(Intercept) = 0
release_0 = 1

Model 1: restricted model
Model 2: final ~ release_0

Note: Coefficient covariance matrix supplied.

  Res.Df Df      F Pr(&amp;gt;F)
1    168                 
2    166  2 1.9283 0.1486
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That is exactly the kind of result that is hard to see from a revision triangle alone but straightforward to formalize once the workflow is standardized.
In this sample, the result points to the first release as already being statistically close to the later benchmark, which suggests subsequent revisions add relatively little systematic information.&lt;/p&gt;
&lt;h2&gt;
From descriptive analysis to revision nowcasting
&lt;/h2&gt;&lt;p&gt;For many users, revision summaries will be the main use case.
But &lt;code&gt;reviser&lt;/code&gt; also includes model-based tools for users who want to treat revisions as an explicit latent-data problem.
That matters if you need to make decisions on preliminary data but also want a structured way to estimate how those figures are likely to change later.&lt;/p&gt;
&lt;p&gt;Two vignettes walk through nowcasting revisions with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the generalized Kishor-Koenig family via &lt;code&gt;kk_nowcast()&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;the Jacobs-Van Norden model via &lt;code&gt;jvn_nowcast()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both approaches cast the revision problem into state-space form, which makes it possible to estimate the dynamics of news and noise in successive data releases.
For technical users, this is the part of the package that turns revision analysis from retrospective diagnosis into a forecasting problem.&lt;/p&gt;
&lt;p&gt;Here is a compact &lt;code&gt;kk_nowcast()&lt;/code&gt; example following the Kishor-Koenig workflow from the &lt;a href=&#34;https://docs.ropensci.org/reviser/articles/nowcasting-revisions-kk.html&#34;&gt;vignette&lt;/a&gt; for the Euro Area (EA).&lt;br&gt;
The key idea is to first identify an efficient release &lt;code&gt;e&lt;/code&gt;, then estimate the revision system on the corresponding panel of releases.
In this euro area example, the efficient-release step selects &lt;code&gt;e = 2&lt;/code&gt;, so the model treats the third published release as the earliest one that is already close to the later benchmark.
That is a useful substantive result on its own: it suggests that most of the economically relevant signal arrives within the first few releases, while later revisions are smaller adjustments around that path.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;gdp_ea&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reviser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&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;tsbox&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ts_pc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&amp;gt;&lt;/span&gt;
&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;dplyr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&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;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;EA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pub_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&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;time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2020-01-01&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;releases&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nth_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_ea&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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;final_release&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nth_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gdp_ea&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;efficient_release&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_first_efficient_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;releases&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;final_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&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;fit_kk&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;kk_nowcast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&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;df&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;efficient_release&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;e&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;efficient_release&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;KK&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MLE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;summary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fit_kk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
=== Kishor-Koenig Model ===

Convergence: Success 
Log-likelihood: 125.7 
AIC: -231.41 
BIC: -198.23 

Parameter Estimates:
 Parameter Estimate Std.Error
        F0    0.633     0.131
      G0_0    0.950     0.031
      G0_1   -0.037     0.152
      G0_2   -0.181     0.220
      G1_0   -0.009     0.011
      G1_1    0.594     0.061
      G1_2    0.194     0.092
        v0    0.380     0.068
      eps0    0.008     0.001
      eps1    0.001     0.000
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;plot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fit_kk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figure&gt;&lt;img src=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/04/13/reviser/kk-nowcast-example-1.svg&#34;
    alt=&#34;Diagnostic plot from a Kishor-Koenig nowcast model for euro area GDP revisions, summarizing the fitted revision dynamics.&#34; width=&#34;100%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Diagnostic plot from the Kishor-Koenig nowcast example.&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The fitted object contains estimated parameters, filtered and smoothed latent states, and plotting methods for the implied efficient-release path.
That gives you a direct route from descriptive revision analysis to a state-space nowcast of future revisions.
For a broader audience, the main takeaway is not the individual coefficients.
It is that the model converges cleanly on this sample, summarizes the revision process in a compact latent-state form, and provides a practical way to judge whether a new release is likely to be revised materially later on.
Substantively, the model separates persistent signal from transitory revision noise, so the output is useful when you want to judge whether new releases are likely to be revised materially.&lt;/p&gt;
&lt;h2&gt;
What reviser adds
&lt;/h2&gt;&lt;p&gt;What stands out in &lt;code&gt;reviser&lt;/code&gt; is not a single function, but the coherence of the workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the package has explicit conventions for vintage data;&lt;/li&gt;
&lt;li&gt;descriptive revision analysis and formal testing sit in the same API;&lt;/li&gt;
&lt;li&gt;efficient-release analysis connects directly to applied questions about which release to trust;&lt;/li&gt;
&lt;li&gt;nowcasting tools extend the same workflow rather than forcing a separate modeling stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you work with real-time macroeconomic data, that combination is useful because revision analysis is usually fragmented across custom scripts, one-off spreadsheets, and package combinations that do not share a common data structure.&lt;/p&gt;
&lt;h2&gt;
Try it and push it further
&lt;/h2&gt;&lt;p&gt;You can install the package from the rOpenSci R-universe:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;install.packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;reviser&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&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;repos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://ropensci.r-universe.dev&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://cloud.r-project.org&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then start with the package site and vignettes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;docs: &lt;a href=&#34;https://docs.ropensci.org/reviser&#34;&gt;https://docs.ropensci.org/reviser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source: &lt;a href=&#34;https://github.com/ropensci/reviser&#34;&gt;https://github.com/ropensci/reviser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We would be happy to hear feedback from those of you trying out the package with different datasets.
If you have a real-time dataset with a different release structure, that would be a good stress test for the package.
If you find gaps in the workflow or have a use case to share, open an issue or contribute an example.
Revision analysis gets more useful as it becomes easier to compare workflows across datasets rather than rebuilding them from scratch each time.&lt;/p&gt;

      
      
      
      </description>
    </item>
    
    <item>
      <title>rOpenSci News Digest, March 2026</title>
      <link>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/30/news-mars-2026/</link>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
      <author>rOpenSci</author>
      <guid>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/30/news-mars-2026/</guid>
      <description>
         
        
        
         &lt;!-- Before sending DELETE THE INDEX_CACHE and re-knit! --&gt;
&lt;p&gt;Dear rOpenSci friends, it&amp;rsquo;s time for our monthly news roundup! &lt;!-- blabla --&gt; You can read this post &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/30/news-mars-2026&#34;&gt;on our blog&lt;/a&gt;. Now let&amp;rsquo;s dive into the activity at and around rOpenSci!&lt;/p&gt;
&lt;h2&gt;
rOpenSci HQ
&lt;/h2&gt;&lt;h3&gt;
rOpenSci Dev Guide 1.0.0: Trilingual and Improved
&lt;/h3&gt;&lt;p&gt;rOpenSci Software Peer Review&amp;rsquo;s guidance is gathered in an online book that keeps improving! It is now available in &lt;a href=&#34;https://devguide.ropensci.org/&#34;&gt;English&lt;/a&gt;, &lt;a href=&#34;https://devguide.ropensci.org/es/index.es.html&#34;&gt;Spanish&lt;/a&gt; and &lt;a href=&#34;https://devguide.ropensci.org/pt/index.pt.html&#34;&gt;Portuguese&lt;/a&gt;. Read more in the &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/02/devguide-1.0.0/&#34;&gt;release announcement&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Champions Program Update
&lt;/h3&gt;&lt;p&gt;We are still going through the Champions selection process, and we&amp;rsquo;re excited to share that the new group of mentors has already been selected and is now actively reviewing Champions applications.&lt;/p&gt;
&lt;p&gt;This cohort brings together a wonderful mix of returning Champions stepping into mentorship roles, mentors continuing their contributions, and new members joining the program. The 2026 mentors are Andrea Gómez Vargas, Pablo Paccioretti, Alber Hamersson Sánchez Ipia, Erick Isaac Navarro Delgado, Francisco Cardozo, Luis Verde Arregoitia, Monika Ávila Márquez, Guadalupe Pascal, Pao Corrales, and Elio Campitelli. Together, they represent a diverse and vibrant community across Colombia, Mexico, Argentina, Brazil, and Bolivia, with some currently based in Switzerland, Canada, the United States, and Australia. We&amp;rsquo;re very happy to see this growing, interconnected network supporting the next cohort of Champions.&lt;/p&gt;
&lt;h3&gt;
R-Universe update
&lt;/h3&gt;&lt;p&gt;You can now download artifacts and log files from R-Universe without being logged in with a GitHub account, for example &lt;a href=&#34;https://ropensci.r-universe.dev/opencv#checktable&#34;&gt;https://ropensci.r-universe.dev/opencv#checktable&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
Software review and usage of AI tools
&lt;/h3&gt;&lt;p&gt;Authors submitting new software for &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/software-review/&#34;&gt;peer review&lt;/a&gt; are now required to explain potential usage of generative AI tools in their package development. All submission templates now include a mandatory check-box:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- [ ] Generative AI tools were used to produce some of the material in this submission.

If so, please describe usage, and include links to any relevant aspects of your repository.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the start of our updates to accommodate generative AI tools in package development, as described in our &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/02/26/ropensci-ai-policy/&#34;&gt;recent blog post&lt;/a&gt;. The next phase will involve updates to our &lt;a href=&#34;https://devguide.ropensci.org&#34;&gt;&lt;em&gt;Dev Guide&lt;/em&gt;&lt;/a&gt;, explaining requirements and recommendations for authors, reviewers, and editors. All updates are intended to permit generative AI tools to be used in any useful way, while minimising the burden on those who volunteer their own time to keep our software peer review service running.&lt;/p&gt;
&lt;h3&gt;
Software review bot updates
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;ropensci-review-bot&lt;/code&gt; now delivers an initial report to all new software pre-submissions and submissions, identifying the five most similar packages from both all rOpenSci packages, and all CRAN packages. The matches are generated by our &lt;a href=&#34;https://docs.ropensci.org/pkgmatch&#34;&gt;ropensci-review-tools/pkgmatch package&lt;/a&gt; (itself reviewed in &lt;a href=&#34;https://github.com/ropensci/software-review/issues/671&#34;&gt;this review issue&lt;/a&gt;). Matching is based on an &lt;a href=&#34;https://en.wikipedia.org/wiki/Tf%E2%80%93idf&#34;&gt;&amp;ldquo;term frequency-inverse document frequency&amp;rdquo; algorithm&lt;/a&gt;, using inverse document frequencies from all rOpenSci and CRAN packages. Similar package reports can also be manually triggered (by editors only) with &lt;code&gt;@ropensci-review-bot similar packages&lt;/code&gt;, like in &lt;a href=&#34;https://github.com/ropensci/software-review/issues/671#issuecomment-4117805740&#34;&gt;this example for the pkgmatch package itself&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
Coworking
&lt;/h3&gt;&lt;p&gt;Read &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2023/06/21/coworking/&#34;&gt;all about coworking&lt;/a&gt;!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tuesday April 7th 2026, 9:00 Americas Pacific (16:00 UTC) &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/events/coworking-2026-04/&#34;&gt;&amp;ldquo;Getting to know the CSID Network&amp;rdquo;&lt;/a&gt; with &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/author/steffi-lazerte/&#34;&gt;Steffi LaZerte&lt;/a&gt; and cohosts &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/author/irene-ramos/&#34;&gt;Irene Ramos&lt;/a&gt; and &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/author/adamu-saleh-saidu&#34;&gt;Adamu Saleh Saidu&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Learn more about the &lt;a href=&#34;https://csidnet.org/&#34;&gt;CSID Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Meet cohosts, Irene Ramos and Adamu Saleh Saidu, and learn more about the CSID Network and how you might get involved.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tuesday May 5th 2026, 9:00 Australia Western (01:00 UTC) &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/events/coworking-2026-05/&#34;&gt;&amp;ldquo;Code Review with rOpenSci&amp;rdquo;&lt;/a&gt; with &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/author/steffi-lazerte/&#34;&gt;Steffi LaZerte&lt;/a&gt; and cohost &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/author/liz-hare/&#34;&gt;Liz Hare&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Explore resources for Code Review&lt;/li&gt;
&lt;li&gt;Sign up to volunteer to do &lt;a href=&#34;https://airtable.com/app8dssb6a7PG6Vwj/shrnfDI2S9uuyxtDw&#34;&gt;software peer-review&lt;/a&gt; at rOpenSci&lt;/li&gt;
&lt;li&gt;Meet cohost, Liz Hare, and discuss resources for Code Review with rOpenSci.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And remember, you can always cowork independently on work related to R, work on packages that tend to be neglected, or work on what ever you need to get done!&lt;/p&gt;
&lt;h2&gt;
Software &amp;#x1f4e6;
&lt;/h2&gt;&lt;h3&gt;
New packages
&lt;/h3&gt;&lt;p&gt;The following package recently became a part of our software suite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/suwo&#34;&gt;suwo&lt;/a&gt;, developed by Marcelo Araya-Salas together with Jorge Elizondo-Calvo and Alejandro Rico-Guevara: Streamline searching/downloading of nature media files (e.g. audios, photos) from online repositories. The package offers functions for obtaining media metadata from online repositories, downloading associated media files and updating data sets with new records. It has been &lt;a href=&#34;https://github.com/ropensci/software-review/issues/729&#34;&gt;reviewed&lt;/a&gt; by Eric R. Scott and Hugo Gruson.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Discover &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/packages&#34;&gt;more packages&lt;/a&gt;, read more about &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/software-review&#34;&gt;Software Peer Review&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
New versions
&lt;/h3&gt;&lt;p&gt;The following eleven packages have had an update since the last newsletter: &lt;a href=&#34;https://docs.ropensci.org/cffr&#34; title=&#34;Generate Citation File Format (cff) Metadata for R Packages&#34;&gt;cffr&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/cffr/releases/tag/v1.3.0&#34;&gt;&lt;code&gt;v1.3.0&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/pkgmatch&#34; title=&#34;Find R Packages Matching Either Descriptions or Other R Packages&#34;&gt;pkgmatch&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci-review-tools/pkgmatch/releases/tag/v0.5.2&#34;&gt;&lt;code&gt;v0.5.2&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/tarchetypes&#34; title=&#34;Archetypes for Targets&#34;&gt;tarchetypes&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/tarchetypes/releases/tag/0.14.1&#34;&gt;&lt;code&gt;0.14.1&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/rgbif&#34; title=&#34;Interface to the Global Biodiversity Information Facility API&#34;&gt;rgbif&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/rgbif/releases/tag/v3.8.5&#34;&gt;&lt;code&gt;v3.8.5&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/saperlipopette&#34; title=&#34;Create Example Git Messes&#34;&gt;saperlipopette&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci-training/saperlipopette/releases/tag/v0.1.1&#34;&gt;&lt;code&gt;v0.1.1&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/gutenbergr&#34; title=&#34;Download and Process Public Domain Works from Project Gutenberg&#34;&gt;gutenbergr&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/gutenbergr/releases/tag/v0.5.0&#34;&gt;&lt;code&gt;v0.5.0&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/trud&#34; title=&#34;Query the NHS TRUD API&#34;&gt;trud&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/trud/releases/tag/v0.2.1&#34;&gt;&lt;code&gt;v0.2.1&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/naijR&#34; title=&#34;Operations to Ease Data Analyses Specific to Nigeria&#34;&gt;naijR&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/naijR/releases/tag/v0.7.0&#34;&gt;&lt;code&gt;v0.7.0&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/sasquatch&#34; title=&#34;Use SAS, R, and quarto Together&#34;&gt;sasquatch&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/sasquatch/releases/tag/v0.1.3&#34;&gt;&lt;code&gt;v0.1.3&lt;/code&gt;&lt;/a&gt;), &lt;a href=&#34;https://docs.ropensci.org/lingtypology&#34; title=&#34;Linguistic Typology and Mapping&#34;&gt;lingtypology&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/lingtypology/releases/tag/v1.1.25&#34;&gt;&lt;code&gt;v1.1.25&lt;/code&gt;&lt;/a&gt;), and &lt;a href=&#34;https://docs.ropensci.org/rerddap&#34; title=&#34;General Purpose Client for ERDDAP™ Servers&#34;&gt;rerddap&lt;/a&gt; (&lt;a href=&#34;https://github.com/ropensci/rerddap/releases/tag/v1.2.3&#34;&gt;&lt;code&gt;v1.2.3&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Post on dfms release: &lt;a href=&#34;https://sebkrantz.github.io/Rblog/2026/01/29/releasing-dfms-1-0-fast-and-feature-rich-estimation-of-dynamic-factor-models-in-r/&#34;&gt;Releasing dfms 1.0: Fast and Feature-Rich Estimation of Dynamic Factor Models in R&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Software Peer Review
&lt;/h2&gt;&lt;p&gt;There are fifteen recently closed and active submissions and 5 submissions on hold. Issues are at different stages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;One at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%226/approved%22&#34;&gt;&amp;lsquo;6/approved&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/729&#34;&gt;suwo&lt;/a&gt;, Access Nature Media Repositories Through R. Submitted by &lt;a href=&#34;https://marce10.github.io/&#34;&gt;Marcelo Araya-Salas&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%225/awaiting-reviewer(s)-response%22&#34;&gt;&amp;lsquo;5/awaiting-reviewer(s)-response&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/671&#34;&gt;pkgmatch&lt;/a&gt;, Find R Packages Matching Either Descriptions or Other R Packages. Submitted by &lt;a href=&#34;https://mpadge.github.io&#34;&gt;mark padgham&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%224/review(s)-in-awaiting-changes%22&#34;&gt;&amp;lsquo;4/review(s)-in-awaiting-changes&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/741&#34;&gt;logolink&lt;/a&gt;, An Interface for Running NetLogo Simulations. Submitted by &lt;a href=&#34;http://danielvartan.com&#34;&gt;Daniel Vartanian&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/615&#34;&gt;galamm&lt;/a&gt;, Generalized Additive Latent and Mixed Models. Submitted by &lt;a href=&#34;https://osorensen.github.io/&#34;&gt;Øystein Sørensen&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Six at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%223/reviewer(s)-assigned%22&#34;&gt;&amp;lsquo;3/reviewer(s)-assigned&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/760&#34;&gt;pvEBayes&lt;/a&gt;, Empirical Bayes Methods for Pharmacovigilance. Submitted by &lt;a href=&#34;https://github.com/YihaoTancn&#34;&gt;Yihao Tan&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/754&#34;&gt;saperlipopette&lt;/a&gt;, Create Example Git Messes. Submitted by &lt;a href=&#34;https://masalmon.eu/&#34;&gt;Maëlle Salmon&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/730&#34;&gt;ernest&lt;/a&gt;, A Toolkit for Nested Sampling. Submitted by &lt;a href=&#34;https://github.com/kylesnap&#34;&gt;Kyle Dewsnap&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/718&#34;&gt;rcrisp&lt;/a&gt;, Automate the Delineation of Urban River Spaces. Submitted by &lt;a href=&#34;https://github.com/cforgaci&#34;&gt;Claudiu Forgaci&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/709&#34;&gt;reviser&lt;/a&gt;, Tools for Studying Revision Properties in Real-Time Time Series Vintages. Submitted by &lt;a href=&#34;https://marcburri.github.io/&#34;&gt;Marc Burri&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/704&#34;&gt;priorsense&lt;/a&gt;, Prior Diagnostics and Sensitivity Analysis. Submitted by &lt;a href=&#34;https://github.com/n-kall&#34;&gt;Noa Kallioinen&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%222/seeking-reviewer(s)%22&#34;&gt;&amp;lsquo;2/seeking-reviewer(s)&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/750&#34;&gt;nycOpenData&lt;/a&gt;, Convenient Access to NYC Open Data API Endpoints. Submitted by &lt;a href=&#34;https://github.com/martinezc1&#34;&gt;Christian Martinez&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/743&#34;&gt;RAMEN&lt;/a&gt;, RAMEN: Regional Association of Methylome variability with the Exposome and geNome. Submitted by &lt;a href=&#34;https://erick-navarrodelgado.netlify.app&#34;&gt;Erick Navarro-Delgado&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Three at &lt;a href=&#34;https://github.com/ropensci/software-review/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%221/editor-checks%22&#34;&gt;&amp;lsquo;1/editor-checks&amp;rsquo;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/744&#34;&gt;RAQSAPI&lt;/a&gt;, A Simple Interface to the US EPA Air Quality System Data Mart API. Submitted by &lt;a href=&#34;https://github.com/mccroweyclinton-EPA&#34;&gt;mccroweyclinton-EPA&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/740&#34;&gt;fcmconfr&lt;/a&gt;, Fuzzy Cognitive Map Analysis in R. Submitted by &lt;a href=&#34;https://github.com/bhroston&#34;&gt;benroston&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ropensci/software-review/issues/717&#34;&gt;coevolve&lt;/a&gt;, Fit Bayesian Generalized Dynamic Phylogenetic Models using Stan. Submitted by &lt;a href=&#34;https://scottclaessens.github.io/&#34;&gt;Scott Claessens&lt;/a&gt;. (Stats).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Find out more about &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/software-review&#34;&gt;Software Peer Review&lt;/a&gt; and how to get involved.&lt;/p&gt;
&lt;h2&gt;
On the blog
&lt;/h2&gt;&lt;!-- Do not forget to rebase your branch! --&gt;
&lt;h3&gt;
Software Review
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/02/26/ropensci-ai-policy&#34;&gt;Software Review in the Era of AI: What We Are Testing at rOpenSci&lt;/a&gt; by Mark Padgham, Noam Ross, Maëlle Salmon, Yanina Bellini Saibene, Mauro Lepore, Emily Riederer, Jouni Helske, and Francisco Rodriguez-Sanchez. rOpenSci is testing preliminary policies on the use of generative AI tools, with proposed updates to documentation and procedures for authors submitting software for review, for editors, and for reviewers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/02/devguide-1.0.0&#34;&gt;rOpenSci Dev Guide 1.0.0: Trilingual and Improved&lt;/a&gt; by Maëlle Salmon, Mark Padgham, and Noam Ross. Updates in version 1.0.0 of the online book &amp;lsquo;rOpenSci Packages: Development, Maintenance, and Peer Review&amp;rsquo;. Other languages: &lt;a href=&#39;https://deploy-preview-1283--ropensci.netlify.app/es/blog/2026/03/02/r_open_sci_dev_guide_1_0_0_trilingüe_y_mejorada&#39; lang=&#39;es&#39;&gt;rOpenSci Dev Guide 1.0.0: Trilingüe y mejorada (es)&lt;/a&gt;, &lt;a href=&#39;https://deploy-preview-1283--ropensci.netlify.app/pt/blog/2026/03/02/guia_de_desenvolvimento_da_r_open_sci_1_0_0_trilíngue_e_aprimorado&#39; lang=&#39;pt&#39;&gt;Guia de desenvolvimento da rOpenSci 1.0.0: trilíngue e aprimorado (pt)&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;center&#34;&gt;&lt;img src=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/30/news-mars-2026/cover.png&#34;
    alt=&#34;cover of rOpenSci dev guide, showing a package production line with small humans discussing, examining and promoting packages&#34; width=&#34;400&#34;&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/10/patentsview-breaking-release&#34;&gt;Breaking Release of the patentsview R Package&lt;/a&gt; by Russ Allen and Chris Baker. Breaking Release of the patentsview R Package.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Calls for contributions
&lt;/h2&gt;&lt;h3&gt;
Calls for maintainers
&lt;/h3&gt;&lt;p&gt;If you&amp;rsquo;re interested in maintaining any of the R packages below, you might enjoy reading our blog post &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2023/02/07/what-does-it-mean-to-maintain-a-package/&#34;&gt;What Does It Mean to Maintain a Package?&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.ropensci.org/NLMR&#34;&gt;NLMR&lt;/a&gt;, R package to simulate neutral landscape models. &lt;a href=&#34;https://github.com/ropensci/NLMR/issues/116&#34;&gt;Issue for volunteering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.ropensci.org/landscapetools&#34;&gt;landscapetools&lt;/a&gt;, R package for some of the less-glamorous tasks involved in landscape analysis. &lt;a href=&#34;https://github.com/ropensci/landscapetools/issues/48&#34;&gt;Issue for volunteering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.ropensci.org/hddtools&#34;&gt;hddtools&lt;/a&gt;, Tools to discover hydrological data, accessing catalogues and databases from various data providers. &lt;a href=&#34;https://github.com/ropensci/hddtools/issues/36&#34;&gt;Issue for volunteering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.ropensci.org/qualtRics/&#34;&gt;qualtRics&lt;/a&gt;, download Qualtrics survey data. &lt;a href=&#34;https://github.com/ropensci/qualtRics/issues/383&#34;&gt;Issue for volunteering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Calls for contributions
&lt;/h3&gt;&lt;p&gt;Refer to our &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/help-wanted/&#34;&gt;help wanted page&lt;/a&gt; &amp;ndash; before opening a PR, we recommend asking in the issue whether help is still needed.&lt;/p&gt;
&lt;h2&gt;
Package development corner
&lt;/h2&gt;&lt;p&gt;Some useful tips for R package developers. &amp;#x1f440;&lt;/p&gt;
&lt;h3&gt;
A new R core member!
&lt;/h3&gt;&lt;p&gt;The R Foundation announced that &lt;a href=&#34;https://uk.linkedin.com/in/heathrturnr&#34;&gt;Heather Turner&lt;/a&gt; has joined the &lt;a href=&#34;https://www.r-project.org/contributors.html&#34;&gt;R Core Team&lt;/a&gt;! &amp;#x1f389;&lt;/p&gt;
&lt;h3&gt;
How to browse the R mailing lists
&lt;/h3&gt;&lt;p&gt;The &lt;a href=&#34;https://www.r-project.org/mail.html&#34;&gt;official mailing lists of the R project&lt;/a&gt; like &lt;a href=&#34;https://blog.r-hub.io/2019/04/11/r-package-devel/&#34;&gt;R-package-devel&lt;/a&gt; are full of important and useful information. How to browse them, given that the default website is not easy to search? You can use the &lt;a href=&#34;https://mail-archive.com/r-devel@r-project.org/&#34;&gt;mail-archive&lt;/a&gt; website (thanks to Hugo Gruson for the reminder!) or a new project by James Balamuta: the &lt;a href=&#34;https://r-mailing-lists.thecoatlessprofessor.com/&#34;&gt;R Mailing Lists Archive&lt;/a&gt;!&lt;/p&gt;
&lt;h3&gt;
&amp;ldquo;Claude Code: Setting up ast-grep with R support&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;Thanks to Mauro Lepore for sharing this blog post by Emil Hvitfeldt: &lt;a href=&#34;https://emilhvitfeldt.com/post/ast-grep-r-claude-code/&#34;&gt;&amp;ldquo;Claude Code: Setting up ast-grep with R support&amp;rdquo;&lt;/a&gt;. ast-grep is a tool for querying code by syntax rather than brittle regular expressions. The blog post describes how to add R support to this tool, and how to take advantage of it when using Claude.&lt;/p&gt;
&lt;h3&gt;
On muffling messages from packages
&lt;/h3&gt;&lt;p&gt;A follow-up on our post &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2024/02/06/verbosity-control-packages/&#34;&gt;&amp;ldquo;Please Shut Up! Verbosity Control in Packages&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With the {cli} R package you can change the default handler for messages. See the &lt;a href=&#34;https://cli.r-lib.org/articles/semantic-cli.html#cli-messages&#34;&gt;docs&lt;/a&gt;. It seems mostly used to muffle messages, e.g. in &lt;a href=&#34;https://github.com/etiennebacher/flir/blob/9254cd01d258d0bafcee41a44e5caa7104fed832/R/lint.R#L104&#34;&gt;flir&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Here&amp;rsquo;s how the usethis R package &lt;a href=&#34;https://github.com/r-lib/usethis/commit/f0f3f91494a1b15c1b08ee78dc73ab7d1cf8b6a8&#34;&gt;muffles gert message selectively&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Last words
&lt;/h2&gt;&lt;p&gt;Thanks for reading! If you want to get involved with rOpenSci, check out our &lt;a href=&#34;https://contributing.ropensci.org&#34;&gt;Contributing Guide&lt;/a&gt; that can help direct you to the right place, whether you want to make code contributions, non-code contributions, or contribute in other ways like sharing use cases. You can also support our work through &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/donate&#34;&gt;donations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t subscribed to our newsletter yet, you can &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/news/&#34;&gt;do so via a form&lt;/a&gt;. Until it&amp;rsquo;s time for our next newsletter, you can keep in touch with us via our &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/&#34;&gt;website&lt;/a&gt; and &lt;a href=&#34;https://hachyderm.io/@rOpenSci&#34;&gt;Mastodon account&lt;/a&gt;.&lt;/p&gt;

      
      
      
      </description>
    </item>
    
    <item>
      <title>Breaking Release of the patentsview R Package</title>
      <link>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/10/patentsview-breaking-release/</link>
      <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
      <author>rOpenSci</author>
      <guid>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/10/patentsview-breaking-release/</guid>
      <description>
         
        
        
         &lt;p&gt;The &lt;a href=&#34;http://docs.ropensci.org/patentsview/&#34;&gt;patentsview&lt;/a&gt; R package was created by Chris Baker to simplify interactions with the
PatentsView API as announced in Chris&amp;rsquo;
&lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2017/09/19/patentsview/&#34;&gt;blog post&lt;/a&gt;
in 2017.  The API can be queried for data from US patents granted since 1976 as well as
patent applications since 2001 (not all going on to become granted patents).&lt;br&gt;
As shown in the package&amp;rsquo;s vignettes, location data can be mapped, charts of
assignees can be created etc. using other R packages, only limited by the
developer&amp;rsquo;s imagination.&lt;/p&gt;
&lt;p&gt;Fast-forwarding to today finds us in a precarious
position as the PatentsView API team had made breaking changes and obsoleted
the original API (all calls to the original endpoints return 410 Gone).
As such we have spent some time now updating patentsview to work with these API changes.
The updated patentsview package is now on CRAN but, unfortunately, as this Tech Note was being prepared
the PatentsView API team made troubling changes.&lt;/p&gt;
&lt;p&gt;In late February they replaced their
&lt;a href=&#34;https://patentsview.org/forum&#34;&gt;forum&lt;/a&gt; with a message saying the page was temporarily
unavailable.  Further, they have also removed the link to request an API key, so it&amp;rsquo;s unclear
whether they&amp;rsquo;d honor requests for API keys using the link below.  Nothing has been officially
announced but the long term viability of the API seems uncertain.&lt;/p&gt;
&lt;p&gt;&amp;#x1f374; Here you&amp;rsquo;ve come to a fork (and knife) in the road, continue reading
if you are/were using the original version of the patentsview package, and we&amp;rsquo;ll guide
you through the necessary changes.  If you have an interest in US patent data but haven&amp;rsquo;t
used the patentsview package yet (and are willing to take the risk!), check out the &lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/ropensci-blog-post.html&#34;&gt;vignette&lt;/a&gt; reworked from Chris&amp;rsquo; original blog post to use the new version of the R package and API.&lt;/p&gt;
&lt;h2&gt;
New changes to the API:
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Users will need to &lt;a href=&#34;https://patentsview-support.atlassian.net/servicedesk/customer/portals&#34;&gt;request an API key&lt;/a&gt; and set an environmental variable PATENTSVIEW_API_KEY to this value.&lt;/li&gt;
&lt;li&gt;Endpoint changes:
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;nber_subcategories&lt;/code&gt;, one of the original seven endpoints, was removed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cpc_subsections&lt;/code&gt; is now &lt;code&gt;cpc_group&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The remaining five original endpoints went from plural to singular, &lt;code&gt;patents&lt;/code&gt; is now &lt;code&gt;patent&lt;/code&gt;, for example.
Interestingly, the returned data structures are still plural for the most part.&lt;/li&gt;
&lt;li&gt;There are now 27 endpoints, and more than one may need to be called to retrieve fields that were
available from a single call to one of the original endpoints&lt;/li&gt;
&lt;li&gt;Some of the endpoints now return HATEOAS (Hypermedia as the Engine of Application State) links that can be called to retrieve additional data&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Some fields are now nested and need to be fully qualified when used in a query,
for instance, &lt;code&gt;search_pv(&#39;{&amp;quot;cpc_current.cpc_group_id&amp;quot;:&amp;quot;A01B1/00&amp;quot;}&#39;)&lt;/code&gt; when using the patent endpoint.
In the fields parameter, nested fields can be fully qualified or a new API shorthand can be used,
which allows you to specify group names. When group names are used, all of the group&amp;rsquo;s nested fields will be returned.
For example, defining &lt;code&gt;fields = c(&amp;quot;assignees&amp;quot;)&lt;/code&gt; when
using the patent endpoint means that all nested assignees&amp;rsquo; fields will be returned by the API.&lt;/li&gt;
&lt;li&gt;Some field names have changed, most significantly, &lt;code&gt;patent_number&lt;/code&gt; is now &lt;code&gt;patent_id&lt;/code&gt;,
and some fields were removed entirely, for instance, &lt;code&gt;rawinventor_first_name&lt;/code&gt; and &lt;code&gt;rawinventor_last_name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The original version of the API had queryable fields and additional fields which could be
retrieved but couldn&amp;rsquo;t be part of a conditional query.  That notion does not apply to the
new version of the API as all fields are now queryable.  You may be able
to simplify your code if you found yourself doing post processing on returned data
because a field you were interested in was not queryable.&lt;/li&gt;
&lt;li&gt;Now there isn&amp;rsquo;t supposed to be a difference between
operators used on strings vs full text fields, as there was in the original
version of the API.  See the tip below the &lt;a href=&#34;https://search.patentsview.org/docs/docs/Search%20API/SearchAPIReference/#syntax&#34;&gt;Syntax section&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Result set paging has changed significantly.  This only matter to users implementing their own
paging, as the package continues to handle result set paging with &lt;code&gt;search_pv()&lt;/code&gt;&amp;rsquo;s &lt;code&gt;all_pages = TRUE&lt;/code&gt;.
There is a new &lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/result-set-paging.html&#34;&gt;Result set paging&lt;/a&gt; vignette to explain the API&amp;rsquo;s paging,
using the &lt;code&gt;size&lt;/code&gt; and &lt;code&gt;after&lt;/code&gt; parameters rather than &lt;code&gt;page&lt;/code&gt; and &lt;code&gt;per_page&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Result set sizes are seemingly unbounded now.  The original version of the API capped result sets at
100,000 rows.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The API team also &lt;a href=&#34;https://search.patentsview.org/docs/#naming-update&#34;&gt;renamed the API&lt;/a&gt;,
PatentsView&amp;rsquo;s Search API is now the PatentSearch API.
Note that the R package will retain its name, continue to use &lt;code&gt;library(patentsview)&lt;/code&gt; to load the package.&lt;/p&gt;
&lt;h2&gt;
New changes to the R package:
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Throttling is now enforced by the API and handled by the R package (sleep as specified by the throttle response before a retry)&lt;/li&gt;
&lt;li&gt;There are five new vignettes
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/api-changes.html&#34;&gt;API Changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/converting-an-existing-script.html&#34;&gt;Converting an existing script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/result-set-paging.html&#34;&gt;Result set paging&lt;/a&gt;, should custom paging be needed&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/understanding-the-api.html&#34;&gt;Understanding the API&lt;/a&gt;, the API team&amp;rsquo;s jupyter notebook converted to R and enhanced&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2017/09/19/patentsview/&#34;&gt;Accessing patent data with the patentsview package&lt;/a&gt;, the blog post that announced the original version of the R package has been updated to work with the new version of the API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The R package changed internally from using httr to httr2.  This only affects users if
they passed additional arguments (&lt;code&gt;...&lt;/code&gt;) to &lt;code&gt;search_pv()&lt;/code&gt;.  Previously if they passed &lt;code&gt;config = httr::timeout(40)&lt;/code&gt;
they&amp;rsquo;d now pass &lt;code&gt;timeout = 40&lt;/code&gt; (name-value pairs of valid curl options, as found in &lt;code&gt;curl::curl_options()&lt;/code&gt; see &lt;a href=&#34;https://httr2.r-lib.org/reference/req_options.html&#34;&gt;req_options&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Now that the R package is using httr2, users can make use of its &lt;code&gt;last_request()&lt;/code&gt; method to see what was sent to the API.  This could be useful when trying to fix an invalid request.  Also fun would be seeing the raw API response.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;httr2::last_request()
httr2::last_response()
httr2::last_response() |&amp;gt; httr2::resp_body_json() 
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;A new function was added
&lt;code&gt;retrieve_linked_data()&lt;/code&gt; to retrieve data from a HATEOAS link the API sent back, retrying if throttled&lt;/li&gt;
&lt;li&gt;An existing function was removed.  With the API changes, there is less of a need for
&lt;code&gt;cast_pv_data()&lt;/code&gt; which was previously part of the R package.  The API now returns most fields as appropriate
types, boolean, numeric etc., instead of always returning strings.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Online API documentation
&lt;/h2&gt;&lt;p&gt;The PatentsView API team has thoughtfully provided a Swagger UI page for the new version of the API at &lt;a href=&#34;https://search.patentsview.org/swagger-ui/&#34;&gt;https://search.patentsview.org/swagger-ui/&lt;/a&gt;.
Think of it as an online version of Postman already loaded with the API&amp;rsquo;s new endpoints and returns.
The Swagger UI page documents what fields are returned by each endpoint on a successful call
(http response code 200).
You can even send in requests and see actual API responses if you enter your API key and press
an endpoint&amp;rsquo;s &amp;ldquo;Try it out&amp;rdquo; and &amp;ldquo;Execute&amp;rdquo; buttons.  Even error responses can be informative, the API&amp;rsquo;s X-Status-Reason response header
usually points out what went wrong.&lt;/p&gt;
&lt;p&gt;In a similar format, the &lt;a href=&#34;https://search.patentsview.org/docs/docs/Search%20API/EndpointDictionary/&#34;&gt;updated API documentation&lt;/a&gt;
lists what each endpoint does.  Additionally, the R package&amp;rsquo;s &lt;code&gt;fieldsdf&lt;/code&gt; data frame has been updated,
now listing the new set of endpoints and fields that can be queried and/or returned.  The R package&amp;rsquo;s
reference pages have also been updated.&lt;/p&gt;
&lt;h2&gt;
Final thoughts
&lt;/h2&gt;&lt;p&gt;As shown in the updated &lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/top-assignees.html&#34;&gt;Top Assignees&lt;/a&gt; vignette, there will be occasions now where multiple API calls are needed to retrieve the same data as in a single API call in the original version of the API and R package.
Additionally, the &lt;a href=&#34;https://docs.ropensci.org/patentsview/articles/ropensci-blog-post.html&#34;&gt;reworked rOpenSci post&lt;/a&gt; explains what changes had to be made since assignee latitude
and longitude are no longer available from the patent endpoint.&lt;/p&gt;
&lt;p&gt;Issues for the R package can be raised in the &lt;a href=&#34;https://github.com/ropensci/patentsview/issues&#34;&gt;patentsview repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As we mentioned at the start, the future of the PatentsView API is a bit uncertain. PatentsView is funded by the &lt;a href=&#34;https://www.uspto.gov/&#34;&gt;USPTO&lt;/a&gt;, who may be looking to cut costs. However, until we know for certain, we hope patentsview serves you well. If nothing else,
it&amp;rsquo;s been a great run, starting in 2015 for the API and 2017 for the R package!&lt;/p&gt;

      
      
      
      </description>
    </item>
    
    <item>
      <title>rOpenSci Dev Guide 1.0.0: Trilingual and Improved</title>
      <link>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/02/devguide-1.0.0/</link>
      <pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate>
      <author>rOpenSci</author>
      <guid>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/03/02/devguide-1.0.0/</guid>
      <description>
         
        
        
        
        
         
        
        
         
        
        
        &lt;p&gt;&lt;a href=&#39;https://deploy-preview-1283--ropensci.netlify.app/es/blog/2026/03/02/r_open_sci_dev_guide_1_0_0_triling%C3%BCe_y_mejorada/&#39;&gt;Read it in: Español&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&#39;https://deploy-preview-1283--ropensci.netlify.app/pt/blog/2026/03/02/guia_de_desenvolvimento_da_r_open_sci_1_0_0_tril%C3%ADngue_e_aprimorado/&#39;&gt;Read it in: Português&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;rOpenSci Software Peer Review&amp;rsquo;s guidance is gathered in an &lt;a href=&#34;https://devguide.ropensci.org/booknews&#34;&gt;online book&lt;/a&gt; that keeps improving!
This blog post summarises what&amp;rsquo;s new in our Dev Guide 1.0.0, with all changes listed in the &lt;a href=&#34;https://devguide.ropensci.org/booknews.html&#34;&gt;changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Now available in Portuguese!
&lt;/h2&gt;&lt;p&gt;Our guide is now trilingual (&lt;a href=&#34;https://devguide.ropensci.org/index.html&#34;&gt;English&lt;/a&gt;, &lt;a href=&#34;https://devguide.ropensci.org/es/index.es.html&#34;&gt;Spanish&lt;/a&gt;, &lt;a href=&#34;https://devguide.ropensci.org/pt/index.pt&#34;&gt;Portuguese&lt;/a&gt;)!&lt;/p&gt;
&lt;p&gt;Find more about the awesome Portuguese translation project, initiated and powered by our Lusophone members in our &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2025/11/25/translation-devguide-pt/&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The translation project and ongoing multilingual maintenance uses our &lt;a href=&#34;https://docs.ropensci.org/babelquarto/&#34;&gt;babelquarto package&lt;/a&gt; to render multilingual Quarto books and websites.
It was recently &lt;a href=&#34;https://github.com/ropensci/software-review/issues/720&#34;&gt;peer-reviewed&lt;/a&gt; by Ella Kaye and João Granja-Correia.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re actively working on our &lt;a href=&#34;https://docs.ropensci.org/babeldown/&#34;&gt;babeldown package&lt;/a&gt; to create and update translations using the DeepL API.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&#34;https://github.com/ropensci/dev_guide/pull/940/files&#34;&gt;dev guide&lt;/a&gt; itself, tools useful for internationalizing &lt;em&gt;packages&lt;/em&gt; are mentioned: &lt;a href=&#34;https://michaelchirico.github.io/potools/&#34;&gt;potools&lt;/a&gt;, the experimental &lt;a href=&#34;https://eliocamp.github.io/rhelpi18n/&#34;&gt;rhelpi18n&lt;/a&gt; package, selecting a &lt;a href=&#34;https://pkgdown.r-lib.org/articles/translations.html&#34;&gt;language&lt;/a&gt; for a pkgdown website.&lt;/p&gt;
&lt;h2&gt;
Policy Updates
&lt;/h2&gt;&lt;p&gt;We made some changes to rOpenSci policies and scope:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New category for &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_policies#package-categories#:~:text=rOpenSci%20internal%20tools&#34;&gt;rOpenSci internal and peer-review tools&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updates to the &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_policies#package-categories#:~:text=data%20retrieval&#34;&gt;data retrieval category&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New explicit rule to only &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_author#lifecycle#:~:text=do%20not%20submit%20several&#34;&gt;submit one package at a time&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New requirement to not call the &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#version-control#:~:text=not%20be%20master&#34;&gt;default branch &amp;ldquo;master&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Removed requirement to use a &lt;code&gt;codemeta.json&lt;/code&gt; file, now deprecated. Codemeta continues to be &lt;a href=&#34;https://codemeta.github.io/&#34;&gt;actively used and developed&lt;/a&gt;, but we have found it redundant with other metadata and Codemeta can generate these data as-needed from DESCRIPTION files.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Editor Guide, Author Guide &amp;amp; Reviewer Guide
&lt;/h2&gt;&lt;p&gt;The guides that live in our guide. &amp;#x1f638;&lt;/p&gt;
&lt;p&gt;The whole &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_editor&#34;&gt;editor guide&lt;/a&gt; was has been restructured to follow the typical flow of submissions,
and to better explain how to use the &lt;a href=&#34;https://dashboard.ropensci.org/&#34;&gt;software-review dashboard&lt;/a&gt;.
We added a section on challenges, and documented how to put the system on vacation (which we generally do over the new year period).&lt;/p&gt;
&lt;p&gt;Likewise, we improved the organization and content of the &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_author&#34;&gt;author guide&lt;/a&gt; (thanks to &lt;a href=&#34;https://github.com/robitalec&#34;&gt;Alec Robitaille&lt;/a&gt; and &lt;a href=&#34;https://github.com/jmaspons&#34;&gt;Joan Maspons&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_reviewer&#34;&gt;reviewer guide&lt;/a&gt;, we removed the external link to the no-longer maintained Mozilla Review guide (one of our early design sources for peer-review) in favor of explicit enumerated items.&lt;/p&gt;
&lt;h2&gt;
Packaging Best Practices
&lt;/h2&gt;&lt;p&gt;In the packaging guide (another guide within the guide!), we added guidance for choosing &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#example-datasets&#34;&gt;example datasets&lt;/a&gt;.
Furthermore, we created a section for &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#external-software&#34;&gt;Packages wrapping external software&lt;/a&gt;.
The &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#licence&#34;&gt;licencing section&lt;/a&gt; now explicitly requires acknowledging authors of bundled code.
Last but not least, the &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#pkgdependencies&#34;&gt;section about dependencies&lt;/a&gt; recommends checking the development status of dependencies.&lt;/p&gt;
&lt;p&gt;The whole book now mentions the &lt;a href=&#34;https://posit-dev.github.io/air/&#34;&gt;Air CLI&lt;/a&gt; every time it mentions the styler package, as Air can be viewed as styler&amp;rsquo;s successor.&lt;/p&gt;
&lt;p&gt;In the chapter about Package evolution, we added guidance on &lt;a href=&#34;https://devguide.ropensci.org/maintenance_evolution#data-deprecate&#34;&gt;deprecating &lt;em&gt;data&lt;/em&gt;&lt;/a&gt;, and explained the &lt;a href=&#34;https://devguide.ropensci.org/maintenance_evolution#renaming-packages&#34;&gt;drawbacks of renaming a widely-used package&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Testing guidance
&lt;/h2&gt;&lt;p&gt;We updated our &lt;a href=&#34;https://devguide.ropensci.org/pkg_building.html#testing&#34;&gt;testing guidance&lt;/a&gt; with&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;a href=&#34;https://devguide.ropensci.org/pkg_building.html#testing#:~:text=tinytest&#34;&gt;mention of tinytest&lt;/a&gt; as an alternative to testthat;&lt;/li&gt;
&lt;li&gt;a note on keeping tests written with testthat &lt;a href=&#34;https://devguide.ropensci.org/pkg_building.html#testing#:~:text=self-contained&#34;&gt;self-contained&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Package Documentation
&lt;/h2&gt;&lt;p&gt;With particular thanks to &lt;a href=&#34;https://github.com/rmgpanw&#34;&gt;Alasdair Warwick &lt;/a&gt;, we improved the documentation &amp;#x1f609; of our documentation building system, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More details on the &lt;a href=&#34;https://devguide.ropensci.org/pkg_ci#rodocsci&#34;&gt;technical aspects&lt;/a&gt; of docs building for rOpenSci packages;&lt;/li&gt;
&lt;li&gt;Updated &lt;a href=&#34;https://devguide.ropensci.org/pkg_building.html#mathjax&#34;&gt;math guidance&lt;/a&gt; following pkgdown&amp;rsquo;s update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also clarified different strategies to &lt;a href=&#34;https://devguide.ropensci.org/pkg_building#:~:text=nord&#34;&gt;document internal functions&lt;/a&gt;, thanks to &lt;a href=&#34;https://github.com/cforgaci&#34;&gt;Claudiu Forgaci&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Metadata &amp;amp; Package Information
&lt;/h2&gt;&lt;p&gt;We documented more ways to acknowledge contributors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;in the &lt;a href=&#34;https://devguide.ropensci.org/pkg_building.html#authorship&#34;&gt;authorship&lt;/a&gt; section of the packaging guide, with &lt;a href=&#34;https://deploy-preview-1283--ropensci.netlify.app/blog/2025/05/09/ror/&#34;&gt;Research Organization Registry (ROR) IDs&lt;/a&gt;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;in the chapter about &lt;a href=&#34;https://devguide.ropensci.org/maintenance_collaboration.html#attributions&#34;&gt;collaboration&lt;/a&gt;, the &lt;a href=&#34;https://docs.ropensci.org/allcontributors/&#34;&gt;allcontributors R package&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Conclusion
&lt;/h2&gt;&lt;p&gt;In this post we summarized the changes in the latest version of our book &lt;a href=&#34;https://devguide.ropensci.org&#34;&gt;“rOpenSci Packages: Development, Maintenance, and Peer Review”&lt;/a&gt;.
We are thankful for all contributions that created this release.
We are already working on the next version.
Don&amp;rsquo;t hesitate to help us shape it by opening an &lt;a href=&#34;https://github.com/ropensci/dev_guide/issues&#34;&gt;issue&lt;/a&gt;!&lt;/p&gt;

      
      
      
      </description>
    </item>
    
    <item>
      <title>Software Review in the Era of AI: What We Are Testing at rOpenSci</title>
      <link>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/02/26/ropensci-ai-policy/</link>
      <pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate>
      <author>rOpenSci</author>
      <guid>https://deploy-preview-1283--ropensci.netlify.app/blog/2026/02/26/ropensci-ai-policy/</guid>
      <description>
         
        
        
         &lt;p&gt;The advent of large language models (LLMs) and generative AI tools has changed the nature of software development and of software review.
These developments are complex, challenging, and controversial, but require action to maintain and grow rOpenSci&amp;rsquo;s programs and community.
In response, we are starting with a preliminary set of policies to clarify our expectations for use of generative AI tools by authors, reviewers, and editors in software peer-review.
This blog post describes the challenges ahead and initial changes we are making.&lt;/p&gt;
&lt;h2&gt;
Challenge: Maintaining our core values
&lt;/h2&gt;&lt;p&gt;Our top challenge is maintaining our core values.&lt;/p&gt;
&lt;p&gt;A central value for rOpenSci is fostering a welcoming community, in particular through supporting and encouraging people who might otherwise feel excluded. Generative AI tools can help with that.
Large language models and generative AI tools may make many coding tasks easier and quicker, and can expand the community of people able to contribute to open source software and the OSS community.&lt;/p&gt;
&lt;p&gt;Yet there are many downsides to generative AI tools which challenge our core values. pyOpenSci has done an excellent job &lt;a href=&#34;https://www.pyopensci.org/blog/generative-ai-peer-review-policy.html&#34;&gt;exploring these in this blog post&lt;/a&gt;.
They fall into two broad areas.&lt;/p&gt;
&lt;p&gt;First, use of AI can in many cases degrade the quality of both open-source scientific code and the process by which we create it.
LLMs can in many cases produce incorrect outputs, fail to generate time or efficiency benefits, or degrade the process of learning to code or the social cohesion of the community.
A core design of our software peer-review is to drive community building through healthy interactions between authors, reviewers, and contributors.
We aim to improve and promote the quality of research software, to facilitate good development practices among researchers, to foster collaboration, and to curate a community of practice.
Any use of AI must be compatible with that goal.&lt;/p&gt;
&lt;p&gt;Second, AI has the potential for tremendous broader impacts or externalities: environmental impacts, amplification of bias, infringement of creative and intellectual rights, or even driving increases in &lt;a href=&#34;https://pluralistic.net/2025/12/05/pop-that-bubble/#u-washington&#34;&gt;social and economic inequality&lt;/a&gt;.
We have both collective and individual responsibilities to address these impacts, which include the right to opt out of uses of AI.&lt;/p&gt;
&lt;h2&gt;
Challenge: Changing the focus of software reviews
&lt;/h2&gt;&lt;p&gt;Editors and reviewers at rOpenSci are volunteers who devote their own time to help others improve the quality of their software.
Our review system works because they have always been able to assume that all aspects of code submitted for review have reflected decisions made by the human authors of software.
That, in turn, has ensured that the efforts of editors and reviewers are proportional to the primary efforts of software authors.&lt;/p&gt;
&lt;p&gt;Generative AI tools potentially change both of these situations.
They enable software to be produced with relatively little human input or oversight, which means editors and reviewers may put more consideration into software design, structure, and function than submitting authors.
We do not want software review to become a service in which our human volunteers validate largely AI-generated software.
That would put at risk the equal and constructive interaction of review, and likely reduce the motivation of editors and reviewers.
We need to ensure that our software review process remains focused on the decisions, designs, and implementations of the submitting authors.&lt;/p&gt;
&lt;p&gt;One option is requesting authors to outline the areas that have been AI generated, and specifying the scope of their own work.
However, this could result in our previously holistic process becoming one where only defined aspects or sections of software end up being reviewed.
Authors declaring that a certain tool was used to generate all tests may lead one reviewer to completely ignore those tests, while another reviewer may be passionately engaged in the ways by which exactly that tool writes tests.&lt;/p&gt;
&lt;p&gt;In any case, this will require everybody to be as open as possible about what, where, and how generative AI tools may have been used.&lt;/p&gt;
&lt;h2&gt;
Response: Preliminary policies
&lt;/h2&gt;&lt;p&gt;Our initial policy updates are not intended to restrict use of generative AI tools, but to encourage the rOpenSci community to approach these tools in ways that encourage, rather than diminish, healthy community interactions.&lt;/p&gt;
&lt;p&gt;Similar updates have already been implemented by both the &lt;a href=&#34;https://blog.joss.theoj.org/2026/01/preparing-joss-for-a-generative-ai-future&#34;&gt;Journal of Open Source Software&lt;/a&gt; and &lt;a href=&#34;https://www.pyopensci.org/blog/generative-ai-peer-review-policy.html&#34;&gt;pyOpenSci&lt;/a&gt;, and we are indebted to the work of all those who contributed to these policy statements.&lt;/p&gt;
&lt;p&gt;Importantly, our software review policies and practices have evolved over many years in response to community engagement and feedback.
The introduction of policies addressing generative AI tools is a part of that evolution, and these policies will also evolve further in responses to community engagement, and changing community practices.&lt;/p&gt;
&lt;h3&gt;
No change in scope
&lt;/h3&gt;&lt;p&gt;One potential response would be a change in the scope of packages we review.
JOSS has updated their &lt;a href=&#34;https://joss.theoj.org/about#ai-policy&#34;&gt;scope definition&lt;/a&gt; to, among other things, require a longer record of continuous development, along with other criteria, such as evidence of impact and design.
At rOpenSci, authors often seek feedback on early-stage software.
Our review process commonly involves deep and broad consideration through extensive exchanges between authors, reviewers, and editors.
We are confident that this extends to many of the areas emphasized by JOSS&amp;rsquo;s updated criteria, and we therefore see no need to explicitly change either the scope or focus of review.&lt;/p&gt;
&lt;h3&gt;
Requiring openness of AI usage
&lt;/h3&gt;&lt;p&gt;Our policy updates aim to retain the same degree of openness and transparency we have always practiced, while extending to the new area of generative AI tools and practices.
We cannot know the eventual impact that generative AI tools may have on software review processes and practices at rOpenSci, and can ask only for an utmost degree of transparency from all involved.&lt;/p&gt;
&lt;p&gt;We now describe specific updates to both our practices and policies for authors, for editors, and for reviewers.
Software review aims to provide authors with feedback on their practices and choices, and not just on the lines of code they or an AI generated.
We also value the time and effort of editors and reviewers, and want them to be able to focus on the practices and choices of authors.&lt;/p&gt;
&lt;h3&gt;
Practical application: for authors
&lt;/h3&gt;&lt;p&gt;Authors who do not use generative AI tools will submit as always, with no extra requirements.
Those who do use such tools will be asked to describe their use, and to affirm that all generated material has been carefully reviewed by the authors.
We want these descriptions to help reviewers and editors to understand how they can best review code and provide useful feedback.&lt;/p&gt;
&lt;p&gt;We will be modifying our submission template to include this required section, and will be updating the &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_author.html&#34;&gt;Guide for Authors&lt;/a&gt; with additional guidance.&lt;/p&gt;
&lt;p&gt;A minimal example might be a statement that “we’re not very proficient in C, so we used an LLM to generate most of the code for the C algorithm.”
This might guide reviewers to pay particular attention to the tests for that part of the package.
A more extensive description might be that, “We used &amp;lt;tool-of-choice&amp;gt; to generate all tests, but have read, edited, and manually stepped through each test ourselves.”
This can help reviewers decide whether to pay more or less attention to the tests depending on their interests.
Either way, knowing that tests were generated by AI tools is useful and important to the review process.&lt;/p&gt;
&lt;p&gt;Descriptions may refer to relevant documentation in the repository, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Design documents which highlight key components and explain their design;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;agents.md&amp;rdquo; or equivalent files, along with explanations of how these have been used, along with clear description of the roles of the submitting authors;&lt;/li&gt;
&lt;li&gt;Overviews of developmental histories, for example in &amp;ldquo;NEWS.md&amp;rdquo; or equivalent files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We intend to maintain our requirement for “CONTRIBUTING.md” files, as any generative AI tools can also be directed to treat that as an “agents.md” file.&lt;/p&gt;
&lt;p&gt;This is our intended addition to the templates for authors submitting software for review:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;## Use of Generative AI

- [ ] Generative AI tools were used to produce some of the material in this submission.

If so, please describe: &amp;lt;!-- refer to our AI policies at http:// ... --&amp;gt;
If your repository includes an &amp;#34;agents.md&amp;#34; file or equivalent, please provide a link, and describe how this has been used in the development of your package.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;An example of such a description can be found in this &lt;a href=&#34;https://github.com/ropensci/software-review/issues/752#issuecomment-3938097125&#34;&gt;recent software review submission&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
Practical application: for editors
&lt;/h3&gt;&lt;p&gt;Editors are the first to view software submitted to rOpenSci, and generally complete an initial &lt;a href=&#34;https://devguide.ropensci.org/editortemplate.html&#34;&gt;Editors checklist&lt;/a&gt; indicating whether they think a package may proceed to review.
This checklist will also include an additional item:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- [ ] **Use of generative AI tools**: If the authors have used generative AI tools, have they sufficiently described their usage?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This item will also require no additional action by editors unless authors have used generative AI tools.&lt;/p&gt;
&lt;p&gt;Initial editorial considerations have until now been largely technical, including many of the aspects now automated by &lt;a href=&#34;https://docs.ropensci.org/pkgcheck/&#34;&gt;our &lt;code&gt;pkgcheck&lt;/code&gt; system&lt;/a&gt;.
In response to this new checklist item, editors may broaden their consideration to whether a package has had sufficient human contribution to be worth reviewing, alongside considerations of additional factors such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clear statements of package motivation and importance.&lt;/li&gt;
&lt;li&gt;Package development history.&lt;/li&gt;
&lt;li&gt;Evidence of design decisions motivating the software.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When recruiting reviewers for a package, editors may describe authors’ AI usage where relevant to help them understand the nature of the package and demands of review.&lt;/p&gt;
&lt;h3&gt;
Practical application: for reviewers
&lt;/h3&gt;&lt;p&gt;Review processes at rOpenSci frequently involve reviewers recommending potential improvements, and authors then implementing those.
In adapting to use of generative AI tools, we will strive to maintain the same culture of constructive feedback.
We hope that authors will provide sufficient information on any use of generative AI tools to guide reviewers towards aspects of their software requiring particular attention.&lt;/p&gt;
&lt;p&gt;Reviewers are permitted to use generative AI tools in preparing reviews for rOpenSci, but their use must meet the same criteria of supporting the goals of review.
Our &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_reviewer.html&#34;&gt;Guide for Reviewers&lt;/a&gt; will be updated to note the following points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generative AI tools may be used to aid the review process, but all review text must reflect the judgement of the reviewer.&lt;/li&gt;
&lt;li&gt;Typical and acceptable use of generative AI tools in software review includes getting an overview of software design, structure, and function.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updates to the &lt;a href=&#34;https://devguide.ropensci.org/softwarereview_reviewer.html&#34;&gt;Guide for Reviewers&lt;/a&gt; will also include examples of productive use of generative AI tools in the review process.
We aim to run pilots over the course of this year to test where in the review process AI can best be used to improve everyone&amp;rsquo;s experience, and to provide more robust guidelines and custom tools.&lt;/p&gt;
&lt;p&gt;Reviewers may also consider AI use in choosing whether to volunteer as a reviewer of a package, and authors should be aware that extensive AI use could increase the time to find reviewers.&lt;/p&gt;
&lt;h2&gt;
Moving forward
&lt;/h2&gt;&lt;p&gt;This is our first pass at providing guidelines governing the use of generative AI to ensure rOpenSci software review continues to improve while retaining its essential values.&lt;/p&gt;
&lt;p&gt;With more package submissions having some component of AI contribution, the editorial board thought it essential to provide these updates to manage the process as we learn more about what works and what does not.&lt;/p&gt;
&lt;p&gt;We invite you to further discuss the evolving role of AI in software review in &lt;a href=&#34;https://github.com/ropensci/software-review-meta/issues/107&#34;&gt;this issue&lt;/a&gt;, and more importantly to join us as an author or reviewer in peer review, so we can learn together!&lt;/p&gt;

      
      
      
      </description>
    </item>
    
  </channel>
</rss>
