Hello again, open source fans! After two months, we’re overdue for an update! July and August were rather quiet months for me on the OSS front, but I’ve been steadily beavering away at two fairly large things.
Back in May (May!) I shared details of a couple of major changes we wanted to make to dry-configurable’s API before 1.0:
default:rather than a second positional argument
Those changes have long since merged, but the release didn’t immediately follow, for a couple of reasons:
Do you ever have a chore on your to-do list that you just feel… ugh about? Well this was one such thing for me, which is why it didn’t go anywhere for a little while.
But an unglamorous task like this (along with an even stronger aversion to too much open WIP) turned out to be just what I needed to ease myself back into programming in August, after a few weeks of struggling to get anything done.
So, I started by drawing up an enormous matrix (seriously, check it, it’s enormous!) of dependent gems to test against both present and future of dry-configurable, and then slowly got to work on it.
To start with, I cracked the nut that was likely to give us as-good-as-possible backwards API compatibility. This was one of those fun Ruby 2.7/3.0 keyword argument incompatibilities. Check out the diff from that PR for probably one of the longer comment blocks I’ve written in a while.
Then, I discovered and fixed a minor issue with dry-system’s delegation of keyword arguments to a dry-configurable method. Released that as dry-system 0.18.2 and 0.19.2. That in turns fixed some issues with a few other gems relying on both dry-configurable and dry-system together.
Next, I made a tiny change to dry-schema to ensure compatibility with another aspect of the upcoming dry-configurable. Released that as dry-schema 1.7.1.
Then lastly, I added some flags to allow users to manually disable the deprecation notices if they’re not yet able to upgrade their app or their dependent gems to use the latest API.
And after all of that, we’re truly just around the corner from shipping this new dry-configurable! Here’s what’s left:
I’m hoping to get this done in the next ~week or so. It’ll be a relief to have this done!
The other large thing I’ve continued to work on is the expanded support for namespaces in dry-system that I detailed in my last update. I turned to this one when I wanted something a bit more “fun” while I was avoiding the dry-configurable work back in July. It’s now at the point where I’m really quite happy with the new abstractions I was able to identify along the way.
Once the dry-configurable work is done, I plan to come back to this one, and before I spend any more time tidying it for release, I want to actually exercise the new feature from Hanami’s side to make sure it can achieve the elided source directory structure that inspired this work in the first place. All things going well, I should be able to show you it in action in next month’s post!
Thank you to Thomas Carr for joining my GitHub sponsors in July!
And of course, a continued thanks to Jason Charnes and the rest of my sponsors for your ongoing support!
If you too would like to support my work, you can sponsor me on GitHub.
See you all next month! With these two things close to done, we might just be cresting a hill.