Welcome to Once a Maintainer, where each week we interview an open source maintainer and tell their story.
This week we’re talking to Brendon Muir, a New Zealand-based Ruby developer and open source maintainer. Brendon is the owner and developer of Spike@School, a CMS for New Zealand primary schools. He also maintains the acts_as_list and ranked_model gems.
Once a Maintainer is written by the team at Infield, an app that helps engineering teams tackle complex dependency upgrades.
How did you get into programming?
I guess probably late high school. I started doing web design for a couple of local companies here in Hamilton (New Zealand), this was around 1999-2000. It was pretty rudimentary stuff back then. And then I went to university and did a degree that they called Electronic Commerce, which ran the gamut of web development, management skills, marketing, all that sort of stuff.
While I was there, I was working at a local primary school, just doing their tech support, and I ended up doing their website as well. I got into PHP and sort of the more server-driven web stuff, full stack process and then left university and just started a company straight away doing general web design. Eventually we settled into that school market where we still are. Our main product is a CMS for schools here in New Zealand, originally PHP and then around 2007 I discovered Rails. So we rewrote the whole thing in Rails and haven't looked back really.
Wow. Your story is so straightforward in a way. Very nice and tidy.
Yeah, it's gone pretty smoothly. I'm always a little surprised. I did do an internship at New Zealand Steel, it's a steel mill here. I got a taste for the corporate environment, which didn’t really suit me. I still do a little bit of work for them. I've got a Rails app I wrote for them. I used to go up there once a week and and just maintain what I'd done as a student. But yeah, it’s definitely cool being your own boss and making all the calls. If it works out well, it’s pretty fun.
What led to your involvement in open source, and in some ruby gems in particular?
Originally I got involved in acts_as_list and ranked-model because both previous maintainers and authors didn't want to do the job anymore and weren't working in fields that used those gems (as far as I remember). So I didn't author the gems but I did have a hand in fixing various issues with them and currently facilitate any community attempts to enhance them via pull requests. Neither are under active development anymore but are still useful bits of software. I use both in various projects and have recently written a cut-down version of something based on the core concepts of ActsAsList in the form of a simple Rails Concern which is also in use in my own software and working well. I'm kind of on the fence as to where to go next, whether we bring those ideas into ActsAsList.
Now that you've started dipping your toe into writing your own thing from scratch for the community, how do you think about the people side of it? Do you get much interaction with other maintainers?
I've published it as a gist in GitHub currently and I tell people about it, just get them to look at it. Not much feedback to be honest. For me it's probably to integrate the code into ActsAsList, it would just be a time thing.
There’s another gem that I have some interaction with called ancestry. It's all related to this. It'll let you do parent trees, you know, model a tree in the database. There's a guy, the maintainer of it (Keenan Brock) who will copy me in on stuff just as a sanity check because it's the same deal. So there's a bit of camaraderie there. I'd say people in ActsAsList and and RankModel just sort of come and go as their need arises and they do their pull request and then they move on again. So you're right. It can be quite lonely.
Do you have any thoughts on how to get more people into open source in general? It's a tough thing, especially given that it is free labor.
Yeah. I've certainly benefited from the free labor of others in my company. I don't think I'm probably up there in terms of how much time I do give back. I think everyone wishes they could do more.
The sad reality is you gotta get paid as well, right? So the sponsorship thing in GitHub, that's pretty cool. I just turned it on, not expecting much and there's two or three people giving 10 bucks a month something. I've never met them. And then some of them I don't even know, like why are they giving money to me? That's a bit of a motivator to just keep going.
In my business, responsive support and and top quality support is number one for me. So if I can do that for the gems, then I'm happy that I'm doing enough.
In a bigger company, I like the idea where they allocate like a day or half a day a week to work on open source. Just allowing someone paid time to to work on a side project that benefits more people would probably be the best way forward, as soon as a company can afford it.
Are there any tools that you're using right now that you think are interesting or something cool that you want people to know about?
For sure, I'm a huge fan of Stimulus. I’ve dabbled a lot in Vue. Vue’s pretty cool but heavily overkill for a lot of Rails stuff, and also Turbo. We built a newsletter editor for schools and that was a good opportunity to use some new new tech because it was separate to the main product. We made it so that multiple people could be working on the newsletter at the same time and it all updates for everyone at the same time. And the amount of code required to do that was minimal.
And the thing I'm working on right now, we've always resisted having an app. There's a marketplace in New Zealand where most schools have an app for communicating as well as a website, but we just steered clear. But now Safari on mobile supports push notifications in the browser. So I'm working on integrating that into our website system so parents can subscribe to, say, the notifications on the website or the newsletter feed and then we can just notify them via the browser instead of having to get them to install an app.
Do you use a gem for that?
Yeah, it’s called web-push. I came about it through Ruby Weekly, the newsletter. I'm slowly getting my head around it. I've given myself a week to kind of suss it out and get something working for appearance. But yeah, it's always good to have something new to sort of work on.
To suggest a maintainer, write to hello@infield.ai or find us on Twitter.