Day 271: Sharing Code
I started writing about the final piece that I need to complete The Ultimate Browser Extension Setup (read: get Firebase syncing with my Redux store so that all my state can be synced), but there are so many parts that I still haven’t figured out so I’ll probably save that one for when I can draw diagrams to explain what the heck I’m talking about and how I solved it (hopefully — there’s a chance this might turn into another period of weeping and gnashing of teeth like when I transitioned over to Redux).
Speaking of Redux, I’m so glad I made that switch. I checked out a very early version of Browserflow earlier today and it was clear just how much better it was to have everything stored in Redux rather than the model-based system I had developed. I do think that the model-based system I made is the next best thing to use if you’re developing an extension and not using Redux — I’d like to open source it when I decide to switch over to “sharing” mode.
I’m not sure how I feel about open-sourcing my work in general. There’s some stuff that I’m happy to share like my extension starter kit (hooking everything together to get a modern development environment is the most boring part of starting a project and I’m glad to be able to spare people the trouble), but there are many pieces of Browserflow that I wouldn’t feel comfortable sharing.
I’ve spent oodles of hours building and refining the selector generating and optimizing library that makes it easy to select a single or multiple elements on the page, regardless of whether it’s in a shadow DOM or an iframe, and it feels like one of the “secret sauces” that Browserflow has.

Even though it’d benefit from having other people use and improve the library (“many eyes make all bugs shallow”), being the maintainer of a popular open source library also just seems like a pain in the butt. Sure, you have people finding issues and fixing bugs, but you also have a ton of people making requests so that your library handles their niche problem. I’m extremely grateful for the people who do decide to open-source their work and maintain the projects because it’s a thankless job and they don’t get anywhere near the appreciation they should.
Open sourcing my work seems to compete directly with focusing on building products since I’m a team of one and time spent on one activity necessarily means time taken away from the other, but there’s a part of me that wants to share the things I’ve built and help other people build dope projects, too.
Maybe I should stop being a team of one? But even if I were working with others, would I prioritize this other work over whatever I’m working on with my team? Seems more like an attitude/perspective thing where I need to feel comfortable splitting my time between different interests and goals more so than a resources thing. But then again, working alone probably creates an additional sense of urgency and responsibility that makes it harder to take time “off” to do other things.