---
title: This Week in Open Source
teaser: Recent thoughtbot open source updates.
tags: news,open source,this week in open source
author: Sara Jackson
published_on: 2024-10-02
---

If you're in the northern hemisphere, it's likely things are starting to get a
little cooler than before. 🍁 Fall is on full display in shops and our hearts
even if not in the weather.

My southern hemisphere friends will see things heating up as spring has sprung
with the equinox recently passing! 🌱 I'm told it's always warm in Brazil. ☀️

Wherever you are, I hope these updates find you and find you well. Today we're
going over the updates to thoughtbot's open source projects for the month of
July.

Some updates have been consolidated into their own sections at the bottom
including our [dynamic security.md work](#dynamic-security) and
Clarissa Borges's ([clarissalimab](https://github.com/clarissalimab))
[updates to our infra project CODEOWNERS files](#codifying-codeowners-for-infra-repos).

The following projects received updates:

- [Administrate](#administrate)
- [Art Vandelay](#art-vandelay)
- [thoughtbot design system](#thoughtbot-design-system)
- [Flightdeck](#flightdeck)
- [GoldMiner](#goldminer)
- thoughtbot's [Guides](#guides)
- [PropsTemplate](#propstemplate)
- [Shoulda Matchers](#shoulda-matchers)
- [Superglue](#superglue)
- thoughtbot's documentation [templates](#templates)
- [Upcase](#upcase)

## [Administrate](https://github.com/thoughtbot/administrate)

[Administrate](https://github.com/thoughtbot/administrate) is a framework for
creating flexible, powerful admin dashboards in Rails.

Jeanine Soterwood ([littleforest](https://github.com/littleforest))
did some linting
([02084aa](https://github.com/thoughtbot/administrate/commit/02084aa7de72322c3adac5bb4b0731fc0433c536)).

[jubilee2](https://github.com/jubilee2)
updated the example website document to `HasOne` field type for `HasOne` section
([ffb98f0](https://github.com/thoughtbot/administrate/commit/ffb98f0d9250dc07045887f8ecfdc196bae5829a)).

Michal Cichra ([mikz](https://github.com/mikz))
fixed the ordering of HasOne fields without an explicit order
([5e2fda6](https://github.com/thoughtbot/administrate/commit/5e2fda6b1ddf375c1ec46e6d018134bf9570441e)).

[dependabot[bot]](https://github.com/apps/dependabot)
bumped the versions of `standard`
([47e23e1](https://github.com/thoughtbot/administrate/commit/47e23e196e3dc8ee481d3a97cf08e3f909ce5b47)),
`sentry-ruby`
([af4c8a3](https://github.com/thoughtbot/administrate/commit/af4c8a36cb2795ba56f93d04bc33af4e071140ae)),
and `sentry-rails`
([00e2624](https://github.com/thoughtbot/administrate/commit/00e262428ac3ab4f27fc585cb97644520a806878)).

## [Art Vandelay](https://github.com/thoughtbot/art_vandelay)

[Art Vandelay](https://github.com/thoughtbot/art_vandelay) is an
importer/exporter for Rails 6.0 and higher.

Steve Polito ([stevepolitodesign](https://github.com/stevepolitodesign))
updated the CI Matrix and bumped the local Ruby version
([21daf91](https://github.com/thoughtbot/art_vandelay/commit/21daf913ae8625024e1397534d381cbfc75f78c6))
and updated the supported Ruby and Rails versions
([97c2e96](https://github.com/thoughtbot/art_vandelay/commit/97c2e965f29d79652b78988a1b44cb0089193b2c)).

benjamin wil ([benjaminwil](https://github.com/benjaminwil))
added `Import#json`, `Export#json`, and `Export#email`. It's worth noting that
`Export#email_csv` method has been renamed to `Export#email`, as well
([468db73](https://github.com/thoughtbot/art_vandelay/commit/468db73a98e9b692e0ccbda2fc1fb2d792e67572)).

## [thoughtbot design system](https://github.com/thoughtbot/design-system)

[thoughtbot design system](https://github.com/thoughtbot/design-system) (tbds)
is the design system for thoughtbot websites.

[dependabot[bot]](https://github.com/apps/dependabot)
bumped versions of `sass`
([86be0b0](https://github.com/thoughtbot/design-system/commit/86be0b0baecfdc5d5f289389246b4ba208a9644f))
and `stylelint`
([d5ed668](https://github.com/thoughtbot/design-system/commit/d5ed668c4883f0dff724ea3d66caa0f9d779d55e)).

## [Flightdeck](https://github.com/thoughtbot/flightdeck)

[Flightdeck](https://github.com/thoughtbot/flightdeck) provides Terraform
modules for rapidly building production-grade Kubernetes clusters following SRE
practices.

Clarissa Borges ([clarissalimab](https://github.com/clarissalimab))
adjusted Terraform formatting on aws/cluster/ files
([4a6797e](https://github.com/thoughtbot/flightdeck/commit/4a6797e53cb618851126b7b81e0b10b11cfc9e13)).
and updated the CODEOWNERS and README files
([c2c37ad](https://github.com/thoughtbot/flightdeck/commit/c2c37ad6f63de0d95f49eead60926735078c1b25)).

## [GoldMiner](https://github.com/thoughtbot/gold_miner)

[GoldMiner](https://github.com/thoughtbot/gold_miner) is a tool for finding
interesting messages in a Slack channel and turning them into a blog post for
the [thoughtbot blog](https://thoughtbot.com/blog).

Matheus Richard ([MatheusRich](https://github.com/MatheusRich))
added more authors to the `author_config` file
([03f9344](https://github.com/thoughtbot/gold_miner/commit/03f934410086cf062fc1139ea3fabe008908e309))
and use `Enumerator.produce` to find last Friday
([f0fcef5](https://github.com/thoughtbot/gold_miner/commit/f0fcef5f8232408081f3576f4274c92f611dbc82)).

[dependabot[bot]](https://github.com/apps/dependabot)
bumped the versions of `rexml`
([d776d77](https://github.com/thoughtbot/gold_miner/commit/d776d77af69eeb5e09ac9a434f6305bf950a9525)),
`async`
([59db064](https://github.com/thoughtbot/gold_miner/commit/59db06477dc7cc5385262008398b0f341d56d151)),
and `standard`
([1b8905b](https://github.com/thoughtbot/gold_miner/commit/1b8905bf6698a36cee925432d2a03aa1691908b9)).

## [Guides](https://github.com/thoughtbot/guides)

thoughtbot's [Guides](https://github.com/thoughtbot/guides) for working
together, getting things done, programming well, and programming in style.

Elaina Natario ([enatario](https://github.com/enatario))
removed the terminology
([5fb1558](https://github.com/thoughtbot/guides/commit/5fb15584761b5d8555952c1bdb5ca7f40b7ad201)),
working together
([9caa4d0](https://github.com/thoughtbot/guides/commit/9caa4d05b074304ee302e39f2fe922b128293c18)),
communication
([c9a359c](https://github.com/thoughtbot/guides/commit/c9a359cd61e5f23279275568949cdfe04a2ef73d)),
and inclusive culture guides
([632b7a0](https://github.com/thoughtbot/guides/commit/632b7a0de1f2677fd9a79ce598ab1ee9ad0f7394)).

Ferdia Kenny ([Ferdia-thought](https://github.com/Ferdia-thought))
and Elaina moved these into the
[Best Practices section of our Playbook](https://thoughtbot.com/playbook#best-practices).

## [PropsTemplate](https://github.com/thoughtbot/props_template)

[PropsTemplate](https://github.com/thoughtbot/props_template) is a direct-to-Oj,
JBuilder-like DSL for building JSON. It has support for Russian-Doll caching,
layouts, and can be queried by giving the root a key path.

Bogdanov Anton ([kortirso](https://github.com/kortirso))
added a test for reproducing a bug that occures when rendering a partial with locals
([1e91b17](https://github.com/thoughtbot/props_template/commit/1e91b17c11bc529d516bee29b24d4d8ac38da4e6)),
updated `block_opts_to_render_opts` to use explicit handlers `:props` for partials rendering
([b6a6d29](https://github.com/thoughtbot/props_template/commit/b6a6d290f231cba63662ceab2e84a171cdc6866f)),
and added key formatting examples to the README
([f9e640f](https://github.com/thoughtbot/props_template/commit/f9e640ff1742a7b173eaa23234705d11d48559ca)).

Johny Ho ([jho406](https://github.com/jho406))
updated locals to be shallow cloned
([890bffb](https://github.com/thoughtbot/props_template/commit/890bffb9ec607f7245aeda5f3f1db721b5570c90))
and bumped the version to 0.35.0 🎉
([0c07dec](https://github.com/thoughtbot/props_template/commit/0c07deca94cd361c78d436393b55a2d79db56177)).

## [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers)

[Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers) provides
simple one-liner tests for common Rails functionality.

Victor Andrey ([vaot](https://github.com/vaot))
added a `without_instance_methods` qualifier to the enum matcher
([121590b](https://github.com/thoughtbot/shoulda-matchers/commit/121590b069a5ac5fa4232990e4c778f85f2bc4ea)).

[Earlopain](https://github.com/Earlopain)
removed useless `logger` require
([ede8fa3](https://github.com/thoughtbot/shoulda-matchers/commit/ede8fa3a62b5a4865cfa877398a751446e69e8c4)).

Samuel Williams ([ioquatix](https://github.com/ioquatix))
added support for deprecated status code symbols
([03b0801](https://github.com/thoughtbot/shoulda-matchers/commit/03b0801fcf31ee9b60ea6ca856273b54023766f0)).

## [Superglue](https://github.com/thoughtbot/superglue)

[Superglue](https://github.com/thoughtbot/superglue) is a tool that helps you
use classic Rails to build rich React Redux applications with NO APIs and NO
client-side routing.

Johny Ho ([jho406](https://github.com/jho406))
Typescript-ified main
([71d78fc](https://github.com/thoughtbot/superglue/commit/71d78fc4403f8bf2f9c01ac6d46a101aa775c2d4)),
added Typestrict
([400c9ae](https://github.com/thoughtbot/superglue/commit/400c9ae0290a7a3e68e7d3a198acde1410e19ebc)),
migrated from jest to vitest
([f5bc910](https://github.com/thoughtbot/superglue/commit/f5bc91035751d9f62d47365dbd83cca8cc42a9f2)),
and updated package.json
([fa3175a](https://github.com/thoughtbot/superglue/commit/fa3175a24d02188698d63730fec41004af66d477)).

## [Templates](https://github.com/thoughtbot/templates)

thoughtbot's documentation [templates](https://github.com/thoughtbot/templates)
for open source projects.

Neil Carvalho ([neilvcarvalho](https://github.com/neilvcarvalho))
added a list of all public repositories that will have their SECURITY.md file
dynamically updated
([7c03334](https://github.com/thoughtbot/templates/commit/7c033344a5b23ae1855c423a79df682c7f59f899)).

Steve Polito ([stevepolitodesign](https://github.com/stevepolitodesign))
updated `trigger-dynamic-security-update.yaml` to include
[Art Vandelay](https://github.com/thoughtbot/art_vandelay)
([443801d](https://github.com/thoughtbot/templates/commit/443801d1a078decf4606b8c8a52f1ce24fe06697)).

Stefanni Brasil ([stefannibrasil](https://github.com/stefannibrasil))
updated `security.md`
([1779e8a](https://github.com/thoughtbot/templates/commit/1779e8a16a69819db3c139b4828fde784c8d023a))
ande made improvements to workflows and the security workflow example
([4fdb46d](https://github.com/thoughtbot/templates/commit/4fdb46df064dd30f895b80e2f8d2cf6fb072e0fa)).

## [Upcase](https://github.com/thoughtbot/upcase)

[Upcase](https://github.com/thoughtbot/upcase) is a Rails application deployed
to Heroku designed to help sharpen your programming skills.

Silumesii Maboshe ([smaboshe](https://github.com/smaboshe))
updated the versions of `Bundler`
([ed640f1](https://github.com/thoughtbot/upcase/commit/ed640f1e88aab3cd71bb8f56c99ac902464ee61b)),
([bbc2860](https://github.com/thoughtbot/upcase/commit/bbc2860193e137ccf44fc02e68ac640dafb3de15)),
`Ruby` to v3.1.6
([72d3bd9](https://github.com/thoughtbot/upcase/commit/72d3bd955fbbff1680080d78cedc06f01783d9c7)),
`pg`
([4639332](https://github.com/thoughtbot/upcase/commit/4639332916f65769342ea5e4d1fa81b8e079b922)),
`Standard`
([3c915b7](https://github.com/thoughtbot/upcase/commit/3c915b7dfa154283662166544cf9d72c9fa42510)),
([5ee6a36](https://github.com/thoughtbot/upcase/commit/5ee6a361c3054a1d980467fdc0d577224a146439)),
`Pry`
([2e88ccf](https://github.com/thoughtbot/upcase/commit/2e88ccfab6ae541c8329821deeb1068c0af7bcdd)),
`Rails`
([9612ec2](https://github.com/thoughtbot/upcase/commit/9612ec21822588360bfc61cc72246740c15916e3)),
and `Node.js`
([82e881d](https://github.com/thoughtbot/upcase/commit/82e881dd2335e7cb64db58345fd0303967fac792)).

Silumesii also updated `.tool-versions`
([3ba764d](https://github.com/thoughtbot/upcase/commit/3ba764d62bbc1bcd289d2642b6ccfd66980b5b32)),
marked when Upcase was upgraded to heroku-24
([0e37e83](https://github.com/thoughtbot/upcase/commit/0e37e83361e8ab9653327f3177d81beb73ccd7f5)),
applied `Standard` formatting
([167164e](https://github.com/thoughtbot/upcase/commit/167164e9b86985538198a4aff0f342d0aefeb199)),
([ecaf176](https://github.com/thoughtbot/upcase/commit/ecaf17606300e720e0f192c32fa280a3ac4b600d)),
and added support for inverting `belongs_to` -> `has_many` Active Record associations
([7cda015](https://github.com/thoughtbot/upcase/commit/7cda01508f7918ff232ec8d173784735d7109602)).

[dependabot[bot]](https://github.com/apps/dependabot)
updated version of `rails_admin`
([15f1e0a](https://github.com/thoughtbot/upcase/commit/15f1e0af158b2d8cc45dd70516283d96c5a9dd37)),
`sentry-rails`
([536c3ff](https://github.com/thoughtbot/upcase/commit/536c3ff919f8665289187a95c07d1d083f81b4b2)),
`webmock`
([9efdf9e](https://github.com/thoughtbot/upcase/commit/9efdf9e0fc360cc432766afcd112213a53de4f83)),
`rexml`
([015701f](https://github.com/thoughtbot/upcase/commit/015701f5619ef40c980279307ebbcddecc773a39)),
`aws-sdk-s3`
([2247189](https://github.com/thoughtbot/upcase/commit/2247189a09a397673c72671d866d0a029ac0a749)),
`rails-assets-lodash`
([444155c](https://github.com/thoughtbot/upcase/commit/444155c4d246d2e8f463fc22ea1ba8ebaa452dce)),
`psych`
([eaa0b0b](https://github.com/thoughtbot/upcase/commit/eaa0b0b5c52aa2ca930a08f47ee04a33853c954f)),
`puma`
([6ace2fe](https://github.com/thoughtbot/upcase/commit/6ace2fe02cb70300eadac5058c68f3422f8c2e83)),
`active_model_serializers`
([94ac72f](https://github.com/thoughtbot/upcase/commit/94ac72f9cec0106cd76b57080c69c935b62fe704)),
`factory_bot_rails`
([d760fcb](https://github.com/thoughtbot/upcase/commit/d760fcb91c2ebfda1399bab212ef4131a193c98d)),
`sprockets-rails`
([82bc75a](https://github.com/thoughtbot/upcase/commit/82bc75a006b9d0e8c8f0f3ffc56407d95f5854d8)),
and `pg_search`
([a1dc67e](https://github.com/thoughtbot/upcase/commit/a1dc67e3c92de9bbadea427d01d00f5d57b108e6)).

## Codifying CODEOWNERS For Infra Repos

Clarissa Borges ([clarissalimab](https://github.com/clarissalimab))
added and/or updated the CODEOWNERS for the following infrastructure projects:

- [AWS Database Modules for Terraform](https://github.com/thoughtbot/terraform-aws-databases/commit/d1eecca179b2ea74d978cad796e8474c89503fc4)
- [Flightdeck](https://github.com/thoughtbot/flightdeck/commit/c2c37ad6f63de0d95f49eead60926735078c1b25))
- [Route 53 Delegated Subdomain Terraform Module](https://github.com/thoughtbot/terraform-route-53-delegated-subdomain/commit/caa5fa60366b1fab641b083bdcb33393255530f7)
- [Sentry DSN for AWS](https://github.com/thoughtbot/terraform-aws-sentry-dsn/commit/ed4cf13c1c051b9d4c013534c45a8ce09af9b0a6)
- [SES Domain Identity Terraform Module](https://github.com/thoughtbot/terraform-ses-domain-identity/commit/ee49192dcc961dfd689ba351af46d254c186c15d)
- [SES SMTP User](https://github.com/thoughtbot/terraform-aws-ses-smtp-credentials/commit/48d56c50ce6013cffce54f8f13644ec6ab4ad11d)
- [Terraform ALB Ingress](https://github.com/thoughtbot/terraform-alb-ingress/commit/04f5ad98015f50d9d744aae7672df158a832b0da)
- [Terraform AWS Secrets](https://github.com/thoughtbot/terraform-aws-secrets/commit/3dd69f00b6e526cc3439a2e68d93bbead8f139f9)
- [Terraform Modules AWS IAM Identity Center Permission Sets](https://github.com/thoughtbot/terraform-aws-iam-permission-sets/commit/55b7b77b5e1e1a69b412ae36130cff77b7f92c11)
- [Terraform Module for AWS/Google SSO Sync](https://github.com/thoughtbot/terraform-aws-google-sso/commit/3a9db388785b1b8a199236a68ae784840bcc9470)
- [Terraform S3 Bucket](https://github.com/thoughtbot/terraform-s3-bucket/commit/616a183de35e8c341c1e7ed692314017631b5e1f)

## Dynamic Security

You might remember back in a
[TWIOS issue covering March 2024 updates](https://thoughtbot.com/blog/this-week-in-open-source-march-22-2024)
where we saw Stefanni Brasil adding a workflow throughout our repos to
dynamically update their README footers.

A similar initiative took place in July to add a unified and dynamic
SECURITY.md across our repos based on our template in
[Templates](https://github.com/thoughtbot/templates).

Thank you to Rakesh Arunachalam ([rakeshpetit](https://github.com/rakeshpetit)),
Stefanni Brasil ([stefannibrasil](https://github.com/stefannibrasil)),
Neil Carvalho ([neilvcarvalho](https://github.com/neilvcarvalho)),
Sarah Lima ([sarahraqueld](https://github.com/sarahraqueld)),
Steve Polito ([stevepolitodesign](https://github.com/stevepolitodesign)),
Chad Pytel ([cpytel](https://github.com/cpytel)),
and everyone else who helped with this undertaking!

The following repos now include this dynamic SECURITY.md:

- [AlertManager Delivery Module](https://github.com/thoughtbot/aws-sns-sentry-delivery)
- [Art Vandelay](https://github.com/thoughtbot/art_vandelay)
- [Bourbon](https://github.com/thoughtbot/bourbon)
- [CapybaraAccessibilityAudit](https://github.com/thoughtbot/capybara_accessibility_audit)
- [Capybara Discoball](https://github.com/thoughtbot/capybara_discoball)
- [Clearance](https://github.com/thoughtbot/clearance)
- [ClearanceI18n](https://github.com/thoughtbot/clearance-i18n)
- [Climate Control](https://github.com/thoughtbot/climate_control)
- [Design Sprint Guide](https://github.com/thoughtbot/design-sprint-guide)
- [thoughtbot design system](https://github.com/thoughtbot/design-system)
- [ESLint Config](https://github.com/thoughtbot/eslint-config)
- [factory\_bot](https://github.com/thoughtbot/factory_bot)
- [factory\_bot\_rails](https://github.com/thoughtbot/factory_bot_rails)
- [Flightdeck](https://github.com/thoughtbot/flightdeck)
- [Form Props](https://github.com/thoughtbot/form_props)
- [GoldMiner](https://github.com/thoughtbot/gold_miner)
- [Guides](https://github.com/thoughtbot/guides)
- [Humid](https://github.com/thoughtbot/humid)
- [Laptop](https://github.com/thoughtbot/laptop)
- [Paperback](https://github.com/thoughtbot/paperback)
- [PropsTemplate](https://github.com/thoughtbot/props_template)
- [React Native On Rails](https://github.com/thoughtbot/react-native-on-rails)
- [Resolved](https://github.com/thoughtbot/resolved)
- [Select Your Own Seat](https://github.com/thoughtbot/select-your-own-seat-superglue)
- [Shoulda](https://github.com/thoughtbot/shoulda)
- [Shoulda Context](https://github.com/thoughtbot/shoulda-context)
- [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers)
- [Superglue](https://github.com/thoughtbot/superglue)
- [Suspenders](https://github.com/thoughtbot/suspenders)
- [Terraform ALB Ingress](https://github.com/thoughtbot/terraform-alb-ingress)
- [AWS Database Modules for Terraform](https://github.com/thoughtbot/terraform-aws-databases)
- [Terraform Module for AWS/Google SSO Sync](https://github.com/thoughtbot/terraform-aws-google-sso)
- [Terraform Modules AWS IAM Identity Center Permission Sets](https://github.com/thoughtbot/terraform-aws-iam-permission-sets)
- [Terraform AWS Secrets](https://github.com/thoughtbot/terraform-aws-secrets)
- [Sentry DSN for AWS](https://github.com/thoughtbot/terraform-aws-sentry-dsn)
- [SES SMTP User](https://github.com/thoughtbot/terraform-aws-ses-smtp-credentials)
- [Terraform EKS CI/CD Pipeline](https://github.com/thoughtbot/terraform-eks-cicd)
- [Route 53 Delegated Subdomain Terraform Module](https://github.com/thoughtbot/terraform-route-53-delegated-subdomain)
- [Terraform S3 Bucket](https://github.com/thoughtbot/terraform-s3-bucket)
- [SES Domain Identity Terraform Module](https://github.com/thoughtbot/terraform-ses-domain-identity)
- [Terrapin](https://github.com/thoughtbot/terrapin)
- [Upcase](https://github.com/thoughtbot/upcase)

---

✨Have you considered contributing to open source? There's a project out there for
you! Visit our [Open Source page](https://thoughtbot.com/open-source) to learn
more about our team's projects and contributions. While you're there, consider
contributing to one of our projects.

We even recently started sharing our open source maintainers sync notes
publicaly, making it easier than ever for you to find a good place to start.
You can check it out [here](https://tbot.io/contribute-to-oss-with-thoughtbot).
