---
title: This Week in Open Source (October 13, 2023)
teaser: Recent thoughtbot open source updates (October 13, 2023).
tags: news,open source,this week in open source
author: Sara Jackson
published_on: 2023-10-26
---

I like to think the charm of these posts is the moving target of how much time
will be covered. In this edition of "This Week In Open Source," we cover the
last month of updates to thoughtbot's open source repos. And there was a lot.
Grab a snack and something nice to drink while we cover all the details.

Commits were merged to the following, comically long list of repos (now with
links to navigate to their section):

- [Administrate](#administrate)
- [CapybaraAccessibilityAudit](#capybaraaccessibilityaudit)
- [thoughtbot design system](#thoughtbot-design-system)
- [Form Props](#form-props)
- [GoldMiner](#goldminer)
- thoughtbot's [guides](#guides)
- [Humid](#humid)
- thoughtbot's [laptop](#laptop) script
- [PropsTemplate](#propstemplate)
- [Ruby Science](#ruby-science)
- [Select Your Own Seat (Superglue)](#select-your-own-seat-superglue)
- [Shoulda Context](#shoulda-context)
- [Shoulda Matchers](#shoulda-matchers)
- [Superglue](#superglue)
- [Suspenders](#suspenders)
- [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.

Jordan Brough ([jordan-brough](https://github.com/jordan-brough)) added
`Administrate::Punditize` methods as module methods
([84badf2](https://github.com/thoughtbot/administrate/commit/84badf2515db578b79555caec5df44f3be59e2aa)).

## [CapybaraAccessibilityAudit](https://github.com/thoughtbot/capybara_accessibility_audit)

[CapybaraAccessibilityAudit](https://github.com/thoughtbot/capybara_accessibility_audit)
is a tool to extend your Capybara-powered System Tests to automatically audit
the page for WCAG Stardards-based accessibility violations.

Sean Doyle ([seanpdoyle](https://github.com/seanpdoyle)) added support for
Capybara's modal block helpers like `accept_alert`
([3d12b85](https://github.com/thoughtbot/capybara_accessibility_audit/commit/3d12b85577c8162abbd0541f1bfad679c4e3bb39)),
specified minimum Ruby and Rails versions
([2be23bc](https://github.com/thoughtbot/capybara_accessibility_audit/commit/2be23bcdd0891a8c3b9928bf98a6e64f02825a9e)),
and released version 0.1.1 🎉
([76d4544](https://github.com/thoughtbot/capybara_accessibility_audit/commit/76d4544e096a32aa1b564d3986b1c673d3d37eb3)).

## [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 the version of sass
from 1.66.1 to 1.69.0
([bdcda71](https://github.com/thoughtbot/design-system/commit/bdcda7195e870b0cbda1f3cc41a5845570fd5b37),
[0bb14e7](https://github.com/thoughtbot/design-system/commit/0bb14e78065a5199ff6ab815293d8f8c30185cb3),
[f694a64](https://github.com/thoughtbot/design-system/commit/f694a6426130de344499c39ca75a28a04a5cb981)),
and bumped the version of postcss
([0c925fe](https://github.com/thoughtbot/design-system/commit/0c925fe9cb0fae3240e48c048ce10eeba2fadfda)).

## [Form Props](https://github.com/thoughtbot/form_props)

It's a Rails form builder that outputs input attributes (in JSON) instead of
tags. Now you can enjoy the conviences of Rails helpers in other view libraries
like React and React Native.

Johny Ho ([jho406](https://github.com/jho406)) increased the minimum required
Ruby version to 2.7
([d632fab](https://github.com/thoughtbot/form_props/commit/d632fab17e7a052b9a63a7e7976cb8dc7ac3b49e)).

## [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))
bumped the versions of zeitwerk
([35f6c9b](https://github.com/thoughtbot/gold_miner/commit/35f6c9bbf73895693e08af0dc3859a216e9e77c7)),
timecop
([736a29c](https://github.com/thoughtbot/gold_miner/commit/736a29c9fdf073d11f679a3e103bdf1fa3b79a80)),
standard
([bb9aec4](https://github.com/thoughtbot/gold_miner/commit/bb9aec43e9667286e1836670fc3f2673398dfc94)),
and slack-ruby-client
([7afb1a7](https://github.com/thoughtbot/gold_miner/commit/7afb1a70990c59ae61bd2eeb71d5c280b899164f)).

He also introduced a `GoldContainer` data value to wrap gold nuggets and include
some metadata
([ff2efa2](https://github.com/thoughtbot/gold_miner/commit/ff2efa26341da55cab18dae7ef0d1c87cdbe95b4))
and fixed an `id` typo
([9f2b0ba](https://github.com/thoughtbot/gold_miner/commit/9f2b0bab873b60416eb49d1428560b53eb138443)).

## [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.

Dorian Marié ([dorianmarie](https://github.com/dorianmarie)) updated the
formatting of Code Review guidelines for better readability
([5f957c0](https://github.com/thoughtbot/guides/commit/5f957c06873e1dcf744f9e912f28ae33e444dbc9)).

## [Humid](https://github.com/thoughtbot/humid)

[Humid](https://github.com/thoughtbot/humid) is a lightweight wrapper around
[mini\_racer](https://github.com/rubyjs/mini_racer) used to generate Server Side
Rendered (SSR) pages from your js-bundling builds.

Johny Ho ([jho406](https://github.com/jho406))
updated the puma config in the README
([c1d0e3d](https://github.com/thoughtbot/humid/commit/c1d0e3dfbc2dfc0ec42175b6615002d0b713da38)).

## [Laptop](https://github.com/thoughtbot/laptop)

[Laptop](https://github.com/thoughtbot/laptop) is a shell script to set up a
macOS laptop for web and mobile development.

Chad Pytel ([cpytel](https://github.com/cpytel)) validated and documented
support for macOS Sonoma
([6e51157](https://github.com/thoughtbot/laptop/commit/6e51157061f512a2273f2eaf5eec4ba2ea5b47d0)).

## [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.

Johny Ho ([jho406](https://github.com/jho406)) added Rails 7.1 to the test matrix
([509b34d](https://github.com/thoughtbot/props_template/commit/509b34db96b4cb78b2765151e4418a096639063e)).

## [Ruby Science](https://github.com/thoughtbot/ruby-science)

This repo contains our book, [Ruby Science](https://github.com/thoughtbot/ruby-science),
the reference for writing fantastic Rails applications.

Chad Pytel ([cpytel](https://github.com/cpytel)) has been updating the content
and examples in preparation for a 2023 version. He made some minor content
updates for 2023
([47a2747](https://github.com/thoughtbot/ruby-science/commit/47a2747fb7cdd7e39e3dd24f2ca8fdeac5059ff4)),
removed the out of date product directory
([3d7750a](https://github.com/thoughtbot/ruby-science/commit/3d7750a864d45777b935c0f6117e867b0701d145)),
and regenerated the website with minor updates
([2f0f752](https://github.com/thoughtbot/ruby-science/commit/2f0f752aa378afaca8f8646a026923250b4ba75f)).

## [Select Your Own Seat (Superglue)](https://github.com/thoughtbot/select-your-own-seat-superglue)

[Select Your Own Seat (Superglue)](https://github.com/thoughtbot/select-your-own-seat-superglue)
is an example of how to develop an interactive web page using: Rails, Superglue,
Superglue's Unobtrustive JavaScript, React, and Redux.  
The commit history is intentionally meticulous and verbose, and serves to
compare and contrast with equivalent
[commits](https://github.com/seanpdoyle/select-your-own-seat/commits/main) built
in [Stimulus and Turbo](https://github.com/seanpdoyle/select-your-own-seat).

Johny Ho ([jho406](https://github.com/jho406)) was busy this month, keeping the
app in lockstep with its Stimulus/Turbo counterpart.

He added full height for the Superglue app
([9bdbf86](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/9bdbf86c711ffae90ea7d032c7771b95db5392e2)),
rendering of the application's layout `Start here`
([db39dd4](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/db39dd444b2294964fd458594050ce385e34575a)),
rendering of seats for a venue with SVG elements
([2216708](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/22167084520ae7a215c6b12b3d3ebd317a900c20)),
a system test for viewing a seat's details
([138eee0](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/138eee079847e99449c53febb80fa96ab63c7450)),
the `seats#show` route and action
([f547d22](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/f547d2202b615de9670bdf274d3f8e63c3509572)),
and inline SVG
([2067cd6](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/2067cd60d0e791176ee0dcd6394273c45bc92846)).

Updates to seat selection include functionality to add a seat selection to the
shopping cart
([918fd12](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/918fd1285be9a3bbb847df27437193d2218f0bf0)),
unselecting a seat removes it from a visitor's cart
([428af14](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/428af141a171114c42ae975c73868254d5297233)),
unselecting a seat from a dialog
([4bcbac1](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/4bcbac1ba3600613373443e7943879fdbbf5da74)),
replacing the seat `<svg>` elements with `<use>`
([f35b288](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/f35b288de3cf9d7275c8587cb4c46c40bdef1411)),
and adding `<symbol>` for a selected seat
([a2f6723](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/a2f67235d85dd7573d8d4dbf7173fbaa609f30e9)).

Improvements to the map include adding a legend for the map's symbols
([393e8db](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/393e8dbbdf505b8843b2d52b278ee35657ccf636)),
functionality to switch floors from the map
([6eda487](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/6eda487673ed9e73a826385866aa48eb594cc3d5)),
filtering seats by price
([a01f87f](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/a01f87f2cb9d275a35e5f3091586f048c2db251c)),
panning and zooming to the SVG map element
([ca516c3](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/ca516c3895b302cdb29d2916bf970c6024f0d601)),
map zoom controls to `seats/index`
([b6e8ef1](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/b6e8ef1c4405325014c891cec4bee5b77bd14750)),
behavior to zoom in and zoom out buttons
([965e9c2](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/965e9c2530ec9b131f52870d4ebbdbf203387872)),
persisting the map across page loads
([9fe1972](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/9fe1972c478e9185df11fbbf68c646d3a5c17a4c)),
and refactoring SeatingMap into its own component
([8397aa2](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/8397aa2d6ce2ec2825026e9e02a0452a6c198ae7)).

Johny also introduced a loading indicator
([183663e](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/183663e5c91a32f3b1bc81a0066b8a25f2d5c2b6)),
and added dynamic hiding/showing of the loading spinner
([8917239](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/89172397ac950ba4ca11d8533e322e2cd72b4ba2)).

He made some enhancements in navigation to `seats#show`
([016c142](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/016c1429212bfa7f3fe69aa827b1963b0be01814)),
the seat selection state
([97903bd](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/97903bd7b78bc58e155a81436382bc45bf867f52)),
and price filtering
([0638417](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/0638417d803e2d7fb0951e39ccb3fafbc8889aa5)).

He also added handling price filtering `<form>` reset events
([0aee530](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/0aee530aa9bf1d7b73bbd84d900aca646b7b1366)),
functionality to manage filter query parameters with push state
([6aad18d](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/6aad18d58764a2b4746879643cac559906dd8dfc)),
and the ability to navigate when the `<dialog>` element closes
([7d0cb9a](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/7d0cb9a8c7d1259685a5ba5347a9c0aa66706727)).

Last, but not least, Johny enabled server side rendering of HTML
([cd931af](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/cd931afb4e1a74729fa8962f1ca708fd50616df1)),
set system tests to execute _without_ JavaScript
([22eac68](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/22eac68f9063385ba4a69ce929d0c447d851cc34)),
and updated the README
([a3504f6](https://github.com/thoughtbot/select-your-own-seat-superglue/commit/a3504f69cca0ff03b19d01539293a8d678e06332)).

## [Shoulda Context](https://github.com/thoughtbot/shoulda-context)

[Shoulda Context](https://github.com/thoughtbot/shoulda-context) makes it easy
to write understandable and maintainable tests under Minitest and Test::Unit
within Rails projects or plain Ruby projects.

Samuel Giddins ([segiddins](https://github.com/segiddins)) refactored how test
methods are calculated to reduce intermediary allocations
([9c4a523](https://github.com/thoughtbot/shoulda-context/commit/9c4a5231ad083abda81603a99fe9d61fe95753e4)).

## [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.

[y-yagi](https://github.com/y-yagi) bumped the version of appraisal
([c17bac4](https://github.com/thoughtbot/shoulda-matchers/commit/c17bac468c5c5e4ca6808f7232abaca090f71e26)).

## [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))
transitioned superglue to use redux toolkit
([4218841](https://github.com/thoughtbot/superglue/commit/42188411d5a3678094aff6d93e777460ac16234a)),
added Rails 7.1 to tests
([ef7cb15](https://github.com/thoughtbot/superglue/commit/ef7cb158e94a4eb1be2201ddc229a81ac3807c3e)),
removed support for older `actionpack` and `activerecord`
([5a7fb0f](https://github.com/thoughtbot/superglue/commit/5a7fb0fe660a222548684084d456904cc1306564)).

He also updated the documentation
([1664d9d](https://github.com/thoughtbot/superglue/commit/1664d9d07b7172f2721743c498484b36612e3572)),
released version 0.50.0 🎉
([17490eb](https://github.com/thoughtbot/superglue/commit/17490ebae3a2ef4bc2795c51268f2e3529f289fb)),
and clarified  hydration instructions in the docs
([83ef72c](https://github.com/thoughtbot/superglue/commit/83ef72c9bcdafa46e86615ab312c6eb89e5217ad)).

## [Suspenders](https://github.com/thoughtbot/suspenders)

[Suspenders](https://github.com/thoughtbot/suspenders) is a
<abbr title="Command Line Interface">CLI</abbr> for creating Rails apps with
thoughtbot defaults.

Sean Doyle ([seanpdoyle](https://github.com/seanpdoyle))
configured Standard to use Ruby 3.0
([813fc9e](https://github.com/thoughtbot/suspenders/commit/813fc9ee8fb55391aed7839d60d85ce5a474afb4)),
and removed `timecop` in favor of `travel_to`
([55cb5c2](https://github.com/thoughtbot/suspenders/commit/55cb5c246fe53aea4cf53436c7c208b40ad13e85)).

## [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.

Chad Pytel ([cpytel](https://github.com/cpytel)) removed Skylight
([7a61544](https://github.com/thoughtbot/upcase/commit/7a61544fcc8d8ee5d7f29b7590ddcd0e9f593bb0)).

---

✨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.
