Open Source Update
2025-03-08, originally sent directly to open-source sponsors
Hello!
I'm trying something new! I'm going to start writing a periodic post about the open source work I'm doing.
Because this post is trying to cover three months, it's a bit long, and if I'm honest it feels a bit overwhelming to present you with this list. I apologize if it's not-so-interesting! I'm hoping the next one will be a bit more conversational and quite a bit shorter. Please let me know if this is helpful and informational, or if you'd like to see more info (or less!) in the next one.
So far in 2025, here's an overview of the work I've done in the Ruby open-source community …
Nokogiri
Releases
- Release v1.18.2 / 2024-01-19 · sparklemotion/nokogiri
- Release v1.18.3 / 2025-02-18 · sparklemotion/nokogiri
Contributions
- Worked a bit with the upstream libxml2 maintainer, Nick Wellnhofer, to reproduce xpath issues in XPath optimizations (!293) · Merge requests · GNOME / libxml2 · GitLab
- Working on XPath performance improvements · Issue #3403 · sparklemotion/nokogiri, which will land once libxml 2.14 is released.
- These changes, when combined with the upstream libxml2 improvements, show a stunning speedup of ~12x on XPath queries in my benchmarks. 🚀
- Investigated Nokogiri::XML::Document#css no longer matches namespaced XML attributes · Issue #3411 · sparklemotion/nokogiri
- Did another round of html5lib error-message-correcting in Update tests for relaxed select parser by josepharhar · Pull Request #178 · html5lib/html5lib-tests
- Created Deprecate
Nokogiri::HTML4::ElementDescription
· Issue #3443 · sparklemotion/nokogiri, which will be deprecated in an upcoming release. - Wrote up an issue Update parse options to reflect modern libxml usage · Issue #3439 · sparklemotion/nokogiri
- Closed RFC: Increase
Nokogiri::Gumbo::DEFAULT_MAX_ERRORS
to a positive number · sparklemotion/nokogiri · Discussion #3248 after much consideration.
Reviews and user help
So far this year, Nokogiri is getting some documentation love and attention from Burdette Lamar! ❤️
- Reviewed and merged Parse options doc by BurdetteLamar · Pull Request #3360 · sparklemotion/nokogiri
- Reviewed and merged New doc for modernized call-seqs (kwargs) by BurdetteLamar · Pull Request #3362 · sparklemotion/nokogiri
- Reviewed and merged Parse options doc by BurdetteLamar · Pull Request #3360 · sparklemotion/nokogiri
- Reviewed Revision for XML::Node.add_child by BurdetteLamar · Pull Request #3431 · sparklemotion/nokogiri
- Reviewed and merged In XML::ParseOptions.rb put :nodoc: onto constants SAX1 and NODICT by BurdetteLamar · Pull Request #3447 · sparklemotion/nokogiri
- Reviewed and merged Add links to local pages in README.md by BurdetteLamar · Pull Request #3449 · sparklemotion/nokogiri
- Commented on the proposed format in Method documentation summary · Issue #3450 · sparklemotion/nokogiri
The user help queue was lighter than usual:
- Wrote up an example solution at How to find all matches of a link in a document using Nokogiri · sparklemotion/nokogiri · Discussion #3420
- Answered questions at Partial script tag not being sanitized · Issue #3444 · sparklemotion/nokogiri
And Nokogiri has a new contributor!
rake-compiler-dock
Releases
- Release v1.7.1 / 2025-01-03 · rake-compiler/rake-compiler-dock
- Release v1.8.0 / 2025-01-05 · rake-compiler/rake-compiler-dock
- Release v1.9.0 / 2025-01-19 · rake-compiler/rake-compiler-dock
- Release v1.9.1 / 2025-01-20 · rake-compiler/rake-compiler-dock
Contributions
The big improvement this cycle was for all the build images to contain updated Ruby versions and dependencies, and some features to help gem maintainers work with those images.
- Created dep: update images to rake-compiler v1.2.9 by flavorjones · Pull Request #139 · rake-compiler/rake-compiler-dock
- Created an Actions pipeline to automatically ship container images for releases
- Bumped all the Ruby versions in dep: bump all rubies' patch level by flavorjones · Pull Request #135 · rake-compiler/rake-compiler-dock
- Wrote Allow gems to set
required_ruby_version = '>= 3.2.0'
by flavorjones · Pull Request #146 · rake-compiler/rake-compiler-dock - Proposed RFC: Provide easy access to the cross-rubies from the build process · Issue #149 · rake-compiler/rake-compiler-dock
I'm also preparing for the next release:
- Reviewed and expanded Drop support for Ruby 2.4, 2.5, and 2.6 by ianks · Pull Request #153 · rake-compiler/rake-compiler-dock
- Briefly investigated the build problem in Set RUBY_CC_VERSION using RakeCompilerDock.set_ruby_cc_version by stanhu · Pull Request #167 · mudge/re2 which seems to be due to rake-compiler's fake.rb rbconfig. 🤷
- And wrote a workaround in feat: allow easier selection of the ruby run in the container by flavorjones · Pull Request #151 · rake-compiler/rake-compiler-dock, which I'm not sure is needed, so I haven't merged yet.
tailwindcss-rails
Releases
- Release v3.2.0 / 2025-01-10 · rails/tailwindcss-rails
- Release v3.3.0 / 2025-01-19 · rails/tailwindcss-rails
- Release v3.3.1 · rails/tailwindcss-rails
- Release v4.0.0 / 2025-02-01 · rails/tailwindcss-rails
- Release v4.1.0 / 2025-02-19 · rails/tailwindcss-rails
- Release v4.2.0 / 2025-03-02 · rails/tailwindcss-rails
Contributions
TailwindCSS v4 was released, and so I spent quite a bit of time making sure the upgrade experience was as good as it could be. 😅
- Opened an epic to track progress: Improve support for Tailwind CSS v4 · Issue #462 · rails/tailwindcss-rails
- Wrote dep: pin tailwindcss-ruby to
~> 3.0
by flavorjones · Pull Request #468 · rails/tailwindcss-rails - Wrote Introduce proper v4 support by flavorjones · Pull Request #464 · rails/tailwindcss-rails
- Wrote Introduce a 'tailwindcss:upgrade' task by flavorjones · Pull Request #466 · rails/tailwindcss-rails
- Wrote doc: add upgrade notes to the README by flavorjones · Pull Request #467 · rails/tailwindcss-rails
- Wrote test: restore the ability to inject tailwindcss-ruby bundler opts by flavorjones · Pull Request #472 · rails/tailwindcss-rails
- Wrote fix: unnecessary stylesheet_link_tag for tailwind by flavorjones · Pull Request #473 · rails/tailwindcss-rails
- Wrote Move application.tailwind.css to a dir ignored by propshaft by flavorjones · Pull Request #474 · rails/tailwindcss-rails
- Wrote Properly invoke the initializer to have Propshaft ignore tailwind by flavorjones · Pull Request #479 · rails/tailwindcss-rails
- Wrote Rename application.tailwind.css to application.css by flavorjones · Pull Request #481 · rails/tailwindcss-rails
- Wrote Prep docs and post-install message for final release by flavorjones · Pull Request #485 · rails/tailwindcss-rails
- Investigated Default config should not watch
log
directory (and probably others) · Issue #491 · rails/tailwindcss-rails - Investigated v4 not building in x86_64 container built on arm64 mac · Issue #497 · rails/tailwindcss-rails
Unrelated to the v4 upgrade:
Reviews
I had lots of help with the v4 upgrade:
- Reviewed and merged Update README for postcss configuration for v4 by EricGusmao · Pull Request #476 · rails/tailwindcss-rails
- Reviewed and merged doc: update README with TailwindCSS v4 upgrade instructions by EricGusmao · Pull Request #480 · rails/tailwindcss-rails, tweaked and merged
- Reviewed and merged Fix: update postcss config path to match new structure by EricGusmao · Pull Request #482 · rails/tailwindcss-rails
- Reviewed and merged doc: Add to v3-v4 upgrade guide about custom css files by frayzil · Pull Request #486 · rails/tailwindcss-rails
- Reviewed and merged Update Readme link for fingerprinting by hachi8833 · Pull Request #500 · rails/tailwindcss-rails
But also Patricio Mac Adden spent some time cleaning up the view templates!
- Reviewed and merged Improve scaffold views by patriciomacadden · Pull Request #452 · Rails/tailwindcss-rails
- Reviewed and merged improve partial: correct use of tags + attachment links styling by patriciomacadden · Pull Request #460 · rails/tailwindcss-rails
- Reviewed and merged Improve boolean fields by patriciomacadden · Pull Request #454 · rails/tailwindcss-rails
- Reviewed and merged index: show the actions to the right of the partial and add a division by patriciomacadden · Pull Request #461 · rails/tailwindcss-rails
- Reviewed and merged Add confirm prompt if turbo is available by patriciomacadden · Pull Request #498 · rails/tailwindcss-rails
- merged Improve views for mobile devices by patriciomacadden · Pull Request #503 · rails/tailwindcss-rails
And a small improvement:
- Reviewed and merged Tailwindcss debug environment variable by r-sierra · Pull Request #504 · rails/tailwindcss-rails
Also, I've been collaborating on some proposed features to better support Rails engines:
tailwindcss-ruby
Release
- Release v4.0.1 · flavorjones/tailwindcss-ruby
- Release v4.0.2 · flavorjones/tailwindcss-ruby
- Release v4.0.3 · flavorjones/tailwindcss-ruby
- Release v4.0.4 · flavorjones/tailwindcss-ruby
- Release v4.0.5 · flavorjones/tailwindcss-ruby
- Release v4.0.6 · flavorjones/tailwindcss-ruby
- Release v4.0.7 · flavorjones/tailwindcss-ruby
- Release v4.0.8 · flavorjones/tailwindcss-ruby
- Release v4.0.9 · flavorjones/tailwindcss-ruby
- Release v4.0.12 · flavorjones/tailwindcss-ruby
Contributions
Again, the TailwindCSS v4 release resulted in a bit of work:
- Added support for separate Musl and GNU executables in dep: update to Tailwind CSS v4.0.0-beta.9, ship separate gnu and musl gems by flavorjones · Pull Request #43 · flavorjones/tailwindcss-ruby
- Wrote ci: add a downstream integration test with rails for upgrades by flavorjones · Pull Request #48 · flavorjones/tailwindcss-ruby
- Investigating Tailwind 4: Can't compile on Docker linux/amd64 · Issue #49 · flavorjones/tailwindcss-ruby
- Investigating Notice: users report
SIGILL
orIllegal instruction
when running tailwindcss in x86_64 docker containers · Issue #55 · flavorjones/tailwindcss-ruby - Helping a user investigate deploying to linux ubuntu server (x86_64-linux) Gem::RemoteFetcher::FetchError · flavorjones/tailwindcss-ruby · Discussion #62
sqlite3-ruby
Upstream sqlite re-implemented their "autoconf" scripts, which broke the gem's build process on windows and made it challenging to cut a release.
Releases
- Release v2.6.0 · sparklemotion/sqlite3-ruby with an update to sqlite3 3.49.1
Contributions
- Asking the community for help in
Database#load_extensions
is not enabled on Windows when using native gems or compiling vendored source code (sqlite 3.48.0+) · Issue #618 · sparklemotion/sqlite3-ruby after banging my head against the build scripts. - Investigated
SQLite3::TestDatabaseURI
test failures with system sqlite · sparklemotion/sqlite3-ruby · Discussion #612 - Investigated Encoding error on s390x · Issue #615 · sparklemotion/sqlite3-ruby
Reviews
Aaron Patterson has started exploring improving Ractor support:
- Reviewed and merged Freeze strings and constants in pragmas by tenderlove · Pull Request #620 · sparklemotion/sqlite3-ruby
- Reviewed and merged Try to simplify pragma related constants by tenderlove · Pull Request #621 · sparklemotion/sqlite3-ruby
Mechanize
Releases
- Release 2.13.0 / 2025-01-02 · sparklemotion/mechanize
- Release 2.14.0 / 2025-01-05 · sparklemotion/mechanize
Contributions
- Reviewed and merged Fix frozen string warning for Ruby 3.4 by simpl1g · Pull Request #661 · sparklemotion/mechanize
- Wrote quash Ruby 3.4 URI::Parser warnings by flavorjones · Pull Request #662 · sparklemotion/mechanize
- Co-authored Support Net::HTTP::Persistent.write_timeout by flavorjones · Pull Request #663 · sparklemotion/mechanize
RDoc
- Was invited to become a committer! 🙇
- Opened PR to improve docs.ruby-lang.org rdoc: Enable the "embed mixins" feature by flavorjones · Pull Request #12858 · ruby/ruby
Rails
- Investigated ActionView: Rendering a template with strict locals should not rewrite ArgumentErrors · Issue #52227 · rails/rails
- Wrote Action View: fix local variable access in layouts by flavorjones · Pull Request #54020 · rails/rails which has been merged
- Wrote feat: Authentication generator's
SessionsController
clears browser cache at logout by flavorjones · Pull Request #54230 · rails/rails which was merged but then later reverted because browser support is sketchy for this feature - Investigated PoolConfig caches the connection_class, which breaks if it is reloaded · Issue #54343 · rails/rails
- Wrote Clear AR connections in tests before forking for parallelization by flavorjones · Pull Request #54376 · rails/rails with Donal McBreen, which was merged
- Working on improving ActionText::ContentHelper.allowed_tags (and attributes) are no longer easily added to · Issue #54478 · rails/rails
- Trying to recruit a new open-source contributor in
assert_dom
should ignore whitespace just likeassert_dom_equal
· Issue #121 · rails/rails-dom-testing 😉
Active Hash
- Drafted Update CI with Ruby 3.4, fix Rails Logger constant resolution issue by flavorjones · Pull Request #328 · active-hash/active_hash, but still waiting for a co-maintainer to approve 🫤
Loofah
- Drafted Introduce an
acts_as_loofah
method by flavorjones · Pull Request #293 · flavorjones/loofah- … Which would close this 15-year-old issue! feature: allow Loofah-ization of an existing Nokogiri document or fragment · Issue #13 · flavorjones/loofah
- (I haven't merged this yet, I think it needs a bit more polishing)
Rubocop
- Wrote Introduce EnforcedStyleForMultiline "diff_comma" by flavorjones · Pull Request #13806 · rubocop/rubocop
- … Which was merged and released in v1.7.3
hoe-markdown
- Released Release v1.7.0 / 2025-01-02 · flavorjones/hoe-markdown
- Reviewed and merged Ignore link refs and link ref definitions by halostatue · Pull Request #5 · flavorjones/hoe-markdown
- Invited Austin Ziegler to be a collaborator
If you got this far, thank you for reading and thank you for your support!
❤️❤️❤️,
-mike