Hi, I'm Peter π
I have authored and/or currently maintain hundreds of open source libraries, including many you might use (as a developer or a consumer of the internet). Around half a percent of the RubyGems downloaded every day are ones I maintain.
GitHub's dependabot-core test runner has been migrated to use my re-architected turbo_tests2. If you use rspec you owe it to yourself to try it out! Parallelized tests with buffered, clean, safe, configurable test output.
π I recently worked on the Go project for dependency license scanning Apache SkyWalking Eyes, where I integrated Bundler and gemspec (Ruby) compatibility, added ASF Category A and B license checks, FSF Free/Libre checks, and OSI Approved checks (all configurable). Learn how to use it as a GitHub Action in your project.
Most of my open source work happens in these organizations:
π£ How will my projects approach the September 2025 hostile takeover of RubyGems? ποΈ
I've summarized my thoughts in this blog post.
I maintain the following RubyGems:
- appraisal-rb / appraisal2 -
- Dynamoid / dynamoid -
- galtzo-floss / flag_shih_tzu -
- galtzo-floss / sanitize_email -
- galtzo-floss / turbo_tests2 -
- kettle-dev / kettle-dev -
- structuredmerge / ruby / tree_haver -
- structuredmerge / ruby / ast-merge -
- omniauth / omniauth-jwt -
- omniauth / omniauth-jwt2 -
- omniauth / omniauth-identity -
- omniauth / omniauth-ldap -
- rdp / os -
- ruby-oauth / anonymous_loader -
- ruby-oauth / auth-sanitizer -
- ruby-oauth / oauth -
- ruby-oauth / oauth2 -
- ruby-oauth / oauth2-mcp -
- ruby-oauth / oauth-tty -
- ruby-oauth / snaky_hash -
- ruby-oauth / version_gem -
- ruby-oauth / warden_oauth -
- ruby-openid / omniauth-openid -
- ruby-openid / rack-openid -
- ruby-openid / ruby-openid -
- many ast-parsing, benchmarking, rails, resque, rspec, rubocop plugins & more... (in details below)
StructuredMerge Ruby
StructuredMerge Ruby is the Ruby implementation of the StructuredMerge contract. The actively maintained package family is developed and released from that monorepo; its package inventory and backend notes are the authoritative source for supported formats and runtimes.
- Foundation: tree_haver, ast-merge, and ast-crispr.
- Format families: Ruby, Markdown, YAML, TOML, JSON, and RBS.
- Source-language formats: Bash, Go, Rust, and TypeScript.
- Parser providers: Prism, Psych, and the Markdown/TOML provider gems.
- Workflow tooling: ast-merge-git, smorg-rb, and kettle-jem.
benchmarking libraries
rails plugins
- galtzo-floss / active_security -
- galtzo-floss / activerecord-transactionable -
- galtzo-floss / activesupport-broadcast_logger -
- galtzo-floss / activesupport-logger -
- galtzo-floss / activesupport-tagged_logging -
- galtzo-floss / debug_logging -
- galtzo-floss / destination_errors -
- galtzo-floss / include_with_respect -
- galtzo-floss / seed_migration -
- galtzo-floss / shiftable -
- galtzo-floss / simple_column-scopes -
- galtzo-floss / spyke-connection_lambda -
- galtzo-floss / status_tag -
gem-development tooling
- appraisal-rb / appraisal2-rubocop -
- appraisal-rb / kettle-jem-appraisals -
- galtzo-floss / gitmoji-regex -
- galtzo-floss / stone_checksums -
- kettle-dev / kettle-dev -
- kettle-dev / kettle-family -
- kettle-dev / kettle-test -
- kettle-dev / kettle-changelog -
- kettle-dev / kettle-drift -
- kettle-dev / kettle-gha-pins -
- kettle-dev / kettle-ndjson -
- kettle-dev / kettle-rb -
- kettle-dev / kettle-wash -
- kettle-dev / nomono -
- kettle-dev / token-resolver -
documentation and YAML tools
resque & queue plugins
testing and development tools
- galtzo-floss / activerecord-tablefree -
- galtzo-floss / anonymous_active_record -
- galtzo-floss / json_schemer-fuzz -
- galtzo-floss / rspec-block_is_expected -
- galtzo-floss / rspec-pending_for -
- galtzo-floss / rspec-stubbed_env -
- galtzo-floss / silent_stream -
- galtzo-floss / timecop-rspec -
- kettle-dev / kettle-soup-cover -
rubocop plugins
Want RuboCop to have its rules explicitly configured for compatibility with the oldest version of Ruby that your library officially supports in two lines of code?
inherit_gem:
rubocop-lts: rubocop-lts.yml # for ruby + rspecMore examples for rails-specific, or non-rspec projects are at rubocop-lts.gitlab.io
If you think this is whatTargetRubyVersiondoes, you've misunderstood its purpose, which is to turn off rules that are incompatible with older versions of Ruby, not to make your rules configuration compatible with a specific version of Ruby, nor to turn on rules that would help with compatibility.
- rubocop-lts / rubocop-lts -
- rubocop-lts / rubocop-lts-rspec -
- rubocop-lts / rubocop-lts-ruby -
- rubocop-lts / rubocop-ruby1_8 -
- rubocop-lts / rubocop-ruby1_9 -
- rubocop-lts / rubocop-ruby2_0 -
- rubocop-lts / rubocop-ruby2_1 -
- rubocop-lts / rubocop-ruby2_2 -
- rubocop-lts / rubocop-ruby2_3 -
- rubocop-lts / rubocop-ruby2_4 -
- rubocop-lts / rubocop-ruby2_5 -
- rubocop-lts / rubocop-ruby2_6 -
- rubocop-lts / rubocop-ruby2_7 -
- rubocop-lts / rubocop-ruby3_0 -
- rubocop-lts / rubocop-ruby3_1 -
- rubocop-lts / rubocop-ruby3_2 -
- rubocop-lts / standard-rubocop-lts -
I'm attempting to document all of the logos for the FLOSS/FOSS/OSS projects I'm either involved in, or have need to render somewhere, with their attendant licenses and copyrights, here: logos.galtzo.com. It has been a multi-year effort hunting down the original creators for some of these logos, and documenting the conditions under which they can be used. I'd love to hear if this is useful in your projects!
I was laid off in a March 2025 RIF, and am looking for my next sponsor and my next role.
Want to chat about open source, or any of my projects? Join my FLOSS discord.
Or join the Ruby Friends Squad on Daily.dev
Want to pay me for work? I'm available!
Thanks to all my sponsors across any of the donation platforms! Special thanks to my biggest sponsor HealthSherpa!
- List is updated frequently by my pet robot: @autobolt
-
ποΈ 2026-09-09T05:21:27Z | rubocop-ruby3_1 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 3.1 code
-
ποΈ 2026-09-09T05:20:45Z | rubocop-ruby3_2 (3.0.8) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 3.2 code
-
ποΈ 2026-09-09T05:02:23Z | rubocop-ruby1_9 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 1.9 code
-
ποΈ 2026-09-09T05:02:20Z | rubocop-ruby2_5 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.5 code
-
ποΈ 2026-09-09T05:02:19Z | rubocop-ruby2_2 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.2 code
-
ποΈ 2026-09-09T05:02:18Z | rubocop-ruby2_0 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.0 code
-
ποΈ 2026-09-09T05:02:16Z | rubocop-ruby2_4 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.4 code
-
ποΈ 2026-09-09T05:02:15Z | rubocop-ruby2_1 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.1 code
-
ποΈ 2026-09-09T05:02:14Z | rubocop-ruby2_7 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.7 code
-
ποΈ 2026-09-09T05:02:11Z | rubocop-ruby1_8 (2.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 1.8 code
-
ποΈ 2026-09-09T05:02:09Z | rubocop-ruby2_3 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.3 code
-
ποΈ 2026-09-09T05:02:07Z | rubocop-ruby3_0 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 3.0 code
-
ποΈ 2026-09-09T05:02:05Z | rubocop-ruby2_6 (3.0.7) | π¦Ύ Configure RuboCop + a bevy of friends to gradually lint Ruby 2.6 code
-
ποΈ 2026-09-09T04:36:56Z | standard-rubocop-lts (2.0.13) | Enables Ruby projects to more confidently support even the most finely-aged Rubies. Part of the rubocop-lts family.
-
ποΈ 2026-09-08T03:20:51Z | standard-rubocop-lts (2.0.12) | Enables Ruby projects to more confidently support even the most finely-aged Rubies. Part of the rubocop-lts family.
- List is updated frequently by my pet robot: @autobolt
- ποΈ 2026-05-26T22:22:00Z | Why flag_shih_tzu is changing its default SQL for bit flags | π·οΈ ruby, rails, activerecord, bitfield
- ποΈ 2026-05-25T04:24:26Z | yard-yaml 0.1.1: safer UTF-8 handling for YAML documentation | π·οΈ ruby, rubygems, yard, yaml
- ποΈ 2026-05-24T06:29:36Z | yard-fence 0.9.0: cleaner YARD docs when Markdown braces get in the way | π·οΈ ruby, rubygems, yard, opensource
- ποΈ 2026-05-24T00:35:28Z | yard-timekeeper: Stop YARD Timestamp Churn in Checked-In Docs | π·οΈ ruby, rubygem, yard, opensource
- ποΈ 2026-04-01T05:59:42Z | πREL: oauth2 v2.0.18 | π·οΈ ruby, oauth, security, github
- ποΈ 2026-02-18T06:20:33Z | π ANN: appraisal2 v3.0.6 - support frozen appraisal lockfiles | π·οΈ news, ruby, testing, tooling
- ποΈ 2026-02-06T01:00:32Z | Hostile Takeover of RubyGems: My Thoughts | π·οΈ opensource, ruby, rails, governance
- ποΈ 2026-01-19T03:03:27Z | β‘οΈ setup-ruby-flash | π·οΈ ruby, gha, ore, rv
- ποΈ 2025-11-06T23:39:10Z | π²FLOSS Funding | π·οΈ career, discuss, opensource
- ποΈ 2025-10-14T00:49:55Z | π ANN: omniauth-identity v3.1.5 (Hanami/ROM Support) | π·οΈ webdev, ruby, rom, authentication
- ποΈ 2025-09-18T06:30:38Z | π ANN: oauth2 v2.0.17 | π·οΈ ruby, oauth, webdev, instagram
- ποΈ 2025-09-15T11:53:14Z | π ANN: kettle-dev v1.1.20 w/ improved CHANGELOG handling | π·οΈ devtools, ruby, packaging, automation
- π¦· I'm putting more of my focus on FLOSS/FOSS/OSS efforts (of myself and others)!
and
from
- π· I build big things and small things out of tiny bits.
- β¨ Recently created
rubocop-ltsfor library maintainer happiness π©ββ€οΈβπ©. - π Iβm working on finishing the migration away from TravisCI to modern CI tools.
- π± Iβm learning Svelte & SvelteKit, with Lucia, Drizzle, Zod, Inlang Paraglide, Skeleton, Tailwind, Typescript, and so many more cool tools.
- π― Preparing next release of
seed_migrationsandoauthgems! - π€ Iβve moved my suite of Resque plugins to the Resque org!
- π« How to reach me
- π Pronouns: He/Him
- π¨οΈ I speak 3 languages fluently, and for a 4th I'm learning Bahasa Indonesia!
- π·ββοΈ I help refugees and ex-refugees in Ghanaπ¬π and Liberiaπ±π·, respectively, through Hope For Tomorrow, a Liberian NGO. DM me if interested in knowing more.
- The list is long, even in summary, see my LinkedIn.
- Open Source Contributor, OWASP | πͺοΈ OWASP CycloneDX
- Open Source Contributor, ASF | π Apache SkyWalking Eyes
- FLOSS Blogger | RailsBling
- FLOSS Author | RubyGems
- FLOSS Maintainer | Tidelift Enterprise OSS
- Researcher | WordTree Foundation









