Chris Salzberg

148 Followers
60 Following
23 Posts
Japan-based developer, writer and speaker. Member of the Ruby and Rails Infrastructure team at Shopify.
Twitterhttps://twitter.com/shioyama
Websitehttps://chrissalzberg.com
Githubhttps://github.com/shioyama

@exterm

The semantics of this go beyond the use of "components" at Shopify.

Everyone knows that "modular" implies the thing can be taken out and used in a different context. That's basically verbatim from the dictionary definition. You don't need to be a software developer to know that.

And yet for years the word has been thrown around in discussions of Packwerk as if it's some weaker thing. It's not. Things that are not isolated are not modular. Anything less is something totally different.

@exterm @flavorjones You're right, you said isolation was not "a primary focus". But my response is the same.

Isolation is what gets you to modularity, so if that's what you're after than isolation must be your goal. It's really that simple. And if you're not after modularity, then I don't know what you're doing.

You reduce cognitive load by reducing the things you need to think about. Only isolation does that. I reject the idea that there is a meaningful alternative.

"Always ask yourself if the Packwerk violation is an error at the developer level, or at the dependency graph level. If it is at the graph level, consider adjusting your package layout to better match the dependencies of your code."
"In truth, though, the exercise was not really about Packwerk. It was about isolation, and whether such a thing was even possible in a codebase of this size, built on assumptions of global access to everything. And on this question, the exercise had been a resounding success. We did something that had never been done before in a timespan that had a concrete completion date."
@exterm @flavorjones So to say that isolation was not the goal is to say that true modularization was not the goal.
@exterm @flavorjones I appreciate that hindsight is 20/20, but even so, I don't accept this particular take. The goal was explicitly "modularization" of some kind, as signified by the word "component". And the problem is that *a module that can never be used in isolation from its original usage context is not a module*. Isolation is simply a validation that something that says it is a module is, in fact, a module.
Slides for my talk "Multiverse Ruby" presented (in Japanese) at RubyKaigi 2023 #rubykaigi https://speakerdeck.com/shioyama/multiverse-ruby
Multiverse Ruby

Slides from my <a href="https://rubykaigi.org/2023/presentations/shioyama.html#day2">talk by the same name</a> at RubyKaigi 2023, given in Japanese. <ul> <li><a href="https://github.com/shioyama/im">shioyama/im</a></li> <li><a href="https://github.com/shioyama/rails_on_im">shioyama/rails_on_im</a></li> </ul>

Speaker Deck
@shioyama AppFolio was good to me in 2016-2019, and is hiring remote now. Any Shopifolk looking for new opportunities: let me know, I'd love to connect you.
Shopify laid off many people yesterday, including several very talented members of the Ruby and Rails Infra team (of which I am a member.) It's a very sad day for our team, but the silver lining is that these folks will not be lacking in opportunities. Companies out there looking for new talent: these are really smart people.
I'll be speaking about my work to implement an isolated module autoloader @ RubyKaigi 2023, check it out!: https://rubykaigi.org/2023/presentations/shioyama.html#may12 #ruby #rubykaigi
Schedule

RubyKaigi 2023, #rubykaigi

RubyKaigi 2023