Garrett Dimon: Howdy. We’re here today with Mike Perham of Contributed Systems. Also, you’re probably more familiar with Sidekiq and Inspeqtor, his main projects. We wanted to talk about some of things that he’s done to get started, starting out with an open source project and actually making a living off of it, a pretty healthy living, no less.
Welcome, Mike. Thanks for being here.
Mike Perham: Thank you for having me.
Garrett: Real quick, just to get some background, history, and context, can you talk a little bit about…Summarize your career in 30 seconds, and then how that translated into what you’re doing now.
Mike: Sure. I’ve been a developer, an engineer for almost 20 years now. I’ve done open source for almost all that time, also. I just naturally gravitated toward it. Open sources is great because it allows engineers to scratch their own itch. If they’ve got a problem they can just find some code that solves that problem.
As part of my job in building various businesses, I naturally started contributing to open source, and found myself really enjoying it. As I moved into the Ruby community and the Rails community, I naturally picked up some Ruby projects, and worked on those, and then started creating my own projects. That led me to where I am today.
Garrett: Sidekiq didn’t start out with the intention of being a business. It was just a project and then you realized that there was opportunity there. What kind of timeline did that have? How long were you working on it before you started to think that, “Oh, hey, this could be a business.”?
Mike: As a long time open-source developer, I knew that it was quite frequent. I knew that Sidekiq was going to be on the large side of single-person projects. I knew that I was going to have dedicate a lot of time to it to make it work.
I said, “I don’t want to dedicate thousands of hours to build something that meets my vision only to make zero dollars off it.” That doesn’t make any sense. I’m an altruistic, nice person, but I’m not that altruistic.
Garrett: Yeah, we all have to make a living.
Mike: Exactly. I started the project trying to solve this problem of building a better background job framework. At the same time, I also wanted to solve the problem of how can I make a little money of this project also.
That’s where I started the idea of selling licenses, and then later move to an open core model where I’m giving away the core Sidekiq job engine, and then selling expansion packs that add more features on to it.
Garrett: Even when you created a business, did you anticipate it ever getting where it is now? Or was it more, “Hey, this would be cool if it pays the rent,” and it took off from there.
Mike: I had a couple of dreams, a couple of goals when I first started that if I achieve this, then I have achieved exactly what I wanted. One of those was to get three major Ruby companies as customers. Companies like GitHub, or Basecamp, or New Relic.
I’ve achieved that. I’ve got Heroku as a customer, I’ve got New Relic as a customer, and then hundreds of other startups to Fortune 100 companies as customers. I also wanted to make a million dollars over the course of five years. I thought that doesn’t seem like that big of an ask, considering how much value I’m assuming is going to be in this project. I’ve passed that also now.
The third one was to become the number one background job framework. To pass Resque, to pass Delayed Job, and becomes the choice of the ecosystem.
Garrett: You feel pretty good then about where you’re at relative to where you hope to get?
Mike: Yeah, I’ve achieved what I wanted. Now, it’s just a question of how much further can I take it. I have no idea at this point, but it will be a fun ride while it lasts. we’ll see how long it goes for…
Garrett: How aspirational were those goals when you originally set them? Did you feel pretty good about them or were you kind of, “Ah, there’s a 50–50 shot here.”?
Mike: I knew that there was going to be a lot of value. Within a month of releasing Sidekiq, I had people coming to me and telling me that they were saving thousands of dollars a month in server hosting costs. I knew there’s a lot of value in this then.
As companies start to jump on to Sidekiq, I knew that they would want additional functionality, that they would want access to the expert at the system if they needed support. Think about insurance, big businesses are willing to pay for insurance, so that if they have a production problem, they can email me and get help within an hour or two.
I knew that there was going to be some amount of business here. I just didn’t know how much, whether it was going to be full-time, whether it’s going to make me rich, or whether I was just going to make a decent job out of it. I’ve been pleasantly surprised at the uptake.
Garrett: it’s clear that by…you keep saying value. For so many developers it’s so hard to think that way. It’s what can I build, not what can provide value to companies. A lot of people who I’ve talked to, too, that have been struggling to get their business off the ground, they haven’t thought in terms of what value they’re providing.
It makes a big, big, difference because if you solve a problem for somebody, they’re willing to pay to make that pain go away. Until you’ve created the business and you’ve been successful and you start thinking about problems that way, it’s hard to think about it that way as the seller of the product.
Mike: Right. Baremetrics, the Stripe Metrics stuffs, they have a nice build versus buy calculator on their site. You can almost point people at and say, “Listen, what I sell through Sidekiq, you can piece together yourself from a dozen different open source-libraries. It’s going to take you maybe two, three, four weeks to do it. Now the alternative is you pay me $1,000 a year.”
Garrett: And it goes away.
Mike: If you keep paying your developer $10,000 dollars a month, for a senior developer, it makes perfect sense just to simply buy my thing instead, it’s literally cheaper to do that. The value is easy to see when you express it in those terms.
Garrett: I think the hard part is so many of us have a consumer mentality, where spending $1,000 dollars on something is just spending $1,000 dollars. Whereas from a business standpoint, spending a $1,000 dollars to save $10,000 or more is a no-brainer. That’s a really good thing for people to catch on to.
On that note, one of the other things I think a lot of people struggle with is spanning the chasm between open source and for profit. From a cash flow standpoint, making a profit is how things stay sustainable.
Did you ever struggle with that? If not, do you have advice, or even if you did struggle with it and now you’re past it, do you have advice on how people can help reframe that? So they understand, and they don’t feel guilty trying to make money off of open source or things like that.
Mike: The first six months to a year that I was selling Sidekiq Pro, I was terrified. It’s like trying to sell ice to Eskimos. You’re trying to sell software to open-source developers, that’s a terrifying thing. Thankfully, this was a side project, and there wasn’t a lot of risk to me. I can only imagine the terror of someone trying to make it their full-time job immediately.
One of the beauties of open source is you can work on it as a side project and sell it as a side gig. Certainly, I recommend people do that if possible, but yes, it was terrifying and what I had to do was—you get a small amount of negative people—but there were so many more people who were very positive.
I went out of my way to explain, listen, here’s the symptoms, and look at every other open source project, they’re a ghost town after two years. The project maintainers just can’t, they burn out because it’s not a sustainable thing and so I have to charge money to make this sustainable, it’s as simple as that. 90 percent of people realized that, understood that, were very positive about that. You do get the 10 percent who are just simply entitled, they want everything to be open source and that’s it.
Otherwise they’re just going to nag you constantly, but thankfully over time that’s died off. People have realized, “This is really working. He has been here for the long haul.” I’ve been working on this for almost five years now and with no plans to stop.
Garrett: I think so many successful open source projects end up collapsing under their own weight if they don’t have a company behind them. Rails has obviously been successful because they have Basecamp behind them.
There’s things like that that work, but for a smaller project that doesn’t have that backing, without something to sustain it long term it’s just inevitable. Everybody’s life changes, even if you want to stay involved in it, things change.
Mike: The project reaches a stability point where no one wants to change anything anymore. Everyone is terrified because then that requires extra work. You look at a project like Resque, and it just doesn’t change much anymore because it’s reached its point of stability.
Everybody knows what it is, everybody knows how to do things with it, no one wants to add anymore features or functionality that might require more of their time. It’s it is what it is. It probably won’t change anymore.
Garrett: Absolutely. An extension of that, what’s your rule of thumb on deciding what belongs in the core version versus what belongs in the paid version?
Mike: This is always a struggle. There’s certainly a tension here. People are constantly asking, “Hey, why isn’t this feature in the open source version?” My rule of thumb is if a hundred percent of people need it then it should go into Sidekiq, the core.
If it’s an integration piece that’s going to be used by tons of people like Rails 5, Rails 5 introduces this new way of code loading so that it’s thread safe. That’s always been a limitation of Sidekiq. In general, you have to kill it and restart it to load worker changes.
That is an example of a feature where that’s going to go into the open source version because everyone uses that. For more specialized features and harder features, to implement and to support, those generally go into more of the paid tiers. Let me give you an example of one that I started working on yesterday.
The Sidekiq’s Web UI is nice to look at, but it has no authorization at all. If you can log into it, there’s no way the company running the UI can say, “This user is or is not allowed to perform this particular action.” I can just go and I can delete a cue.
If I can log in to the Sidekiq UI, I can delete a queue. Some companies don’t want to do that. They want to present a read-only view.
That’s an example where I’m pushing that into the Enterprise version. That’s something that only really…startups generally aren’t going to care about. They want to give access to everybody because time is money and they want to get stuff done. Something like a big enterprise where security is more of the concern, that’s the perfect example where adding an authorization rule to the Web UI is something that they’re very interested in and the money is almost secondary.
Garrett: Totally. From a maintenance standpoint, does that drastically complicate things or is that something where as long as you know and planned for that you’ve got, the whole project is designed to specifically accommodate those scenarios?
Mike: That’s a great question also. Certainly, ease of implementation also very much controls which layer it’s going to go into. If a feature really can’t be pushed into a paid tier, that the code simply has to reside in Sidekiq proper, then it is what it is, I’ve got to put it in Sidekiq proper. All these implementation details also affect which layer am I going to put it in.
Garrett: That makes sense. Support. Everybody…I feel this is another one of those questions that comes up a lot. When I first started Sifter, I was scared of it too.
One of the original reasons I didn’t even want to create a paid app because I didn’t want to be obligated to do support. How much time do you spend on support everyday? What’s your process?
Especially the bigger context is I hear people are thinking, “If I’m starting something as a side project, but I have a full-time job, am I going to have a the bandwidth to manage support?”
My experience and what I’ve heard talking everybody has been generally either support will be, “All right, manageable,” or it will be overwhelming because there’s something wrong with the tool, in which case you have justification to fix it, or it will be overwhelming because it’s taking off and you can afford to spend time on it. Does that correlate pretty closely?
Mike: You’ve got a couple of advantages when you’re starting a project. One, it is open source, which means you have no guarantees to anybody about any level support. Support with open source and free project is always best effort. If you don’t want to put any time into it, you don’t have to.
Number two is you can always give trusted lieutenants access to your project and they will shoulder some amount of the support also.
When I have GitHub issues opened, 75 percent of the time, I‘m the one who’s answering them. I would have, occasionally, other people dive in it and say, “Oh, this is just…you need to do this,” or “This is a known issue,” or something like that. They are helping take a little bit of that burden off you by virtue of being a collaborator on the project.
The third thing is once you start selling a commercial version, then you’ve got money that is paying for you to support your customers. You can use support as a leverage to get people to pay for your product now. I tell people that, “If you are just using the free version, there’s absolutely no guarantee of support.”
I might be on vacation for the next two weeks. I always encourage people to go to Stack Overflow, open a public GitHub Issue so that other people will see your issue and might jump in and help you also. The only people I guarantee support to are people that are paying.
Garrett: On that level, support nicely—with open source at least—scales with the transition upwards from open source project to paid project. There’s not any kind of terrible tension where it’s this awkward phase of making enough money but not making enough money and having to juggle it.
Mike: There’s a point where you’re making a little bit of money, but not enough to work full-time on it. You need to use some of your spare time, after hours, weekends maybe. If you’re making $10,000 a year, $20,000 a year, that’s enough for a nice vacation.
The nice vacation in return, you spend a few hours every weekend providing support. It also depends on what support contract are people buying when they pay for your stuff. Are they paying for 24 hours turnaround? Are they paying for three business days?
it’s up to you to set expectations. If you do set expectations to your customers, they appreciate that kind of notice, so they know what to expect. If you say, “I’ll respond within 72 hours,” then they know, “Hey, I probably shouldn’t expect a response within 30 minutes.”
Garrett: That gets back to value. You can create…Do you have different tiers or is it once you’re paid, you get a week or a day?
Mike: I don’t have different support tiers, it’s just email. Pro and Enterprise both get the same level of support, essentially. The tiers are differentiated based on features.
Garrett: There’s certainly a point too where people could say they could offer 72 hours, or 24 hours, or whatever it is, and just simply charge more and understand that it’s exchanging a value. Yeah, you’re on the hook for better support, but you’re getting paid well, so it’s a judgment call. It’s nice to have that level of control.
Mike: There’s many different dimensions by which you can price, and I certainly encourage people to think about their own situation and how can they differentiate different pricing tiers.
Garrett: That was one of the things just talking to Pat Allan about Flying Sphinx. He actually got a second little burner cellphone that was the phone that gets paged so that he could turn off his other phone when he wanted to turn it off and not feel guilty like he was going to miss a call.
Still, you have to carry two phones, but throw it in your laptop bag. I think there’s a lot of interesting things there to control your lifestyle and help stay sane.
Mike: Yeah, I specifically don’t offer phone support, because I don’t want to have that. All my support is asynchronous only, but I do differentiate in that my customers can email me, whereas I don’t allow my open source users to email me. It’s public forums only.
Garrett: With it being something that’s a tool that self-hosted, self-installed, one of the nicest things about SaaS in general is being able to fix a bug, deploy to everybody in minutes. Do you find that that’s made support or troubleshooting much more difficult or just marginally more difficult? Have you done a lot to help make that easier on you?
Mike: Most of my customers stay relatively current. I’d say the majority of them. I do hear occasionally from customers that are running two years behind. They’re still running Sidekiq 2 from two or three years ago on Ruby 1.9 or something like that. My first response to them is simply, “Hey, you’re running a really old version.”
I’m not going to be able to support you very well here, simply because I haven’t even thought about that version in years. For the most part, people do stay relatively current, and they do understand, if they run into what they think is a Sidekiq bug, maybe they should do a bundle update to make sure that they’ve got the latest version.
Yeah, for the most part, it’s not that big of a deal. The tradeoff I’m more than willing to make is I’m not running a SaaS that has 24/7 uptime anymore. I do have a gem server that does have to run 24/7, but it’s so absurdly simple that it’s very easy to have several several 9’s of uptime.
Garrett: I think that’s one of the things I didn’t think about it until long after I was running Sifter, but there’s certainly a tradeoff there between having it be distributed and self-hosted versus you’re on the hook for everybody all the time.
They both have their advantages and disadvantages, but I think if you, again, optimize it for the life you want and you figure it out, then either option can work. Speaking of lifestyle, your revenue to employee ratio is off the charts.
Do you feel like that the growth is getting to the point where it’s a strain, or have you been optimizing the business as you go along so that you can continue to manage a bigger, heavier load? It is just you, right, besides the other open-source contributors? How’s that been working as the company’s been getting bigger?
Mike: You’re absolutely right. Contributed Systems is a one-man shop, and I have no plans to change that right now. What I have done over the last few years is I’ve tried to optimize my business so that it is automated as much as possible, but it will scale, ideally, sublinearly, so my workload does not scale linearly with my customers.
Part of that is support. Support is my main cost that I’m paying every single day. That’s my main workload every day. Part of what I’ve tried to do in building the product is make the product as foolproof as possible, make the errors that it gives as simple to understand as possible.
I’ve tried to make the code just as intelligent and as self-healing as I could get so that to minimize people emailing me support questions. Also along those lines, my wiki documentation, I try to make as extensive as possible. One nice thing about selling to open-source developers is even though they’re not used to paying for software, they are used to solving their own problem.
Open-source developers are very used to just going to Google and saying, “I’m seeing this error message. What does it mean?” Then they’ll get a Stackoverflow answer or they’ll get my wiki page that talks about it. That way, that’s one less touch via email for me.
Yeah, I’ve tried to minimize my support burden as much as possible, and automate my business so all my customer onboarding is automated. My customer churn is also automated, so if they don’t re-up their subscription, they automatically are removed.
Their access is removed from the gem server. All that’s automated, which is nice. All that’s done through Stripe, so all the billing is all automated also. I don’t have to pay an AR person, accounts receivable, and contact them saying, “Hey, you gotta pay your bill,” that sort of thing. I don’t do any of that sort of stuff.
Garrett: If nothing else, even if you want to grow, automation is going to help make it easier to hire, and to scale, and to teach new people because you’re not going to have to train them on a 20-step process on how to log in and do a refund or whatever it is.
Garrett: Outside of the software itself, have you done a lot to automate the business side, your accounting, your bookkeeping? Have you outsourced all of that? Did you start trying to do it yourself, or did you outsource it right away?
Mike: That was actually one of the harder things when I first started the business. I needed to do bookkeeping, and I had no idea how to do that. I had a friend who was a controller at my old company. He actually came over a couple of days and walked me through QuickBooks and just how to use it.
He set up my accounts. He showed me how to import bank transactions and do all that reconciliation. I actually learned how to do that over the course of the first month of the business.
Now, that’s one of those daily tasks that I do, I get up, I do my accounting, I answer support emails, I keep track of sales, and payments, and that sort of thing. That’s just part of my daily process now that has nothing to do with the actual technical stuff. It has nothing to do with Sidekiq.
Garrett: It still takes time.
Mike: Yeah, that’s part of running a business, and everybody has to do that kind of thing. That was one of the most daunting things, just because I was an engineer. I had never run a business before. It took a month or so to become comfortable with that kind of thing, but now it’s second nature and I’m used to it.
Garrett: I think that blindsides a lot of people as well, when they’re getting started, is, “You mean, I don’t just have to hit release and ship software? There’s more to it?”
Mike: You can. It just depends on how serious you want to make the business. You can always sell the softwares yourself. You don’t have the limited liability. It depends on how easy or how hard people want to make it for themselves.
Garrett: Yeah, for sure. Now it’s the touchy-feely questions. What has been the most difficult, stressful single event or period through all of this that, looking back on, you don’t know how you made it through, but now you look back, and smile, and you’re like, “Wow. OK, I got this.”?
Mike: My other product is called Inspeqtor. It is designed to be a newer, more modern version of Monit, a monitor utility that, if you’re a server-side person, a lot of people are familiar with that tool. I wrote a more modern version of it that I really wanted myself. This is a tool that I wanted for many years.
When I released it, within a day the Monit people hit me with a DMCA Takedown Notice and actually shut down my open-source project. They had said that I’d copied their source code. Now, never mind the fact that Monit is C and Inspeqtor is Go, or that I had written Inspeqtor from scratch, and I’d never actually looked at the Monit source code.
I tweeted that, “Hey, Inspeqtor’s been shut down by the Monit people accusing me of this copyright infringement,” and it blew up. It was the front page of Hacker News for hours, hundreds of comments, and people who knew me were supporting me. Evan Phoenix, the guy who does Puma and Rubinius, he had been there from day one.
I had given him access to the private repo from day one. He had seen me dribble and commit every single day just changing the code and learning Go and that sort of thing. He knew that I had written all this and hadn’t copied anything. He supported me on Hacker News and a bunch of other people said, “We know this guy.”
Some other, just haters, came and said, “Oh, he probably did steal it.” That was a hard day because I had spent three months building this thing and almost immediately this project was threatened to be shut down and something I had to simply throw away. I would have lost the last three months of my life.
Garrett: Yeah, with no validity whatsoever.
Mike: Yeah, there was nothing to it. What happened was they were in Norway and I’m in Oregon, on the west coast. By the time that I heard about it and told people about it, Norway was basically shutting down.
The next day, when Norway’s day started, they saw all this brouhaha, they read all the stuff, and the CEO emailed me immediately and basically said, “We apologize. We were mistaken. The fellow who told us this was wrong and so we asked GitHub to reinstate everything.” It all went away overnight, but let me tell you, I didn’t sleep very well that night.
Garrett: Terrible 24 hours, yeah.
Mike: Yeah, and so I would imagine that that is going to be the case for any sort of legal action people go through. The law is so unpredictable. Having a third party who doesn’t know anything about you or the other party, you have to impartially judge things. You never know how that’s going to turn out. Any sort of legal issue can be terrifying to contemplate.
Garrett: Absolutely. Wow. That’s a big one. If you could do anything all over again, would you do what you’ve done the same way you did it, or what would you change?
Mike: The only big mistake that I made on day one was I didn’t sell the software as a subscription.
Garrett: You waited too long.
Mike: I originally sold Sidekiq Pro for a one-time fee.
Garrett: Oh, OK, so subscription versus one-time.
Mike: Exactly. What I found was that after two, or three, or four years, you’re still putting in features, you’re still putting in bug fixes, you’re still giving them support, but they’re not paying you anything anymore. After about a year-and-a-half of this, I switched to a subscription model.
Once I realized I actually wanted to make a business out of it, I realized, “I’m gonna have to go to subscription. There’s just not enough…I’m not making enough sales one-time to justify it, I wouldn’t be able to make this a full-time business.”
When I switched to subscription after year-and-a-half, then things got a lot better. Then I had much more predictable revenue. I had those annual resubscriptions coming in. That’s some amount of revenue that you can predict and you know is going to be there.
Whereas with a one-time pay, you just don’t know. Everybody that bought over the last four years, is anybody going to buy next month? I don’t know. That was my big mistake. Software is never done. Software always needs support, always needs bug fixes. So does a subscription.
Garrett: One, businesses don’t mind. I think two is consumers were, “Well, subscription software. No, we don’t want to do that.” From a business standpoint, if you’re selling value, it’s there. It’s going to be lot more sustainable. In a way, too, it’s better for them, it’s healthier.
We’ve all had those apps we loved. We paid for one time and they shut down. They got acqui-hired by Google because they weren’t making any money.
In your case, too, I’m assuming all of your first customers really came from the fact that you had the open source. They were already using it or familiar with it. So it was almost its own built in sales tool.
Mike: I don’t bother with other channels. I’m not taking out ads in InfoWorld or trying to talk to CIOs or CTOs. My customers are the developers, the open-source developers who want the best tool for this problem. They will go to their bosses or they will pull out their company card and buy it.
it’s going to be hard selling, making six figure deals if you’re talking to developers and not CTOs. As a one-person company, I don’t need those six figure deals. I don’t want to be Oracle. I can keep my expenses down and low, and keep my cost down so that individual developers can justify this to their boss.
Garrett: Absolutely. The last question is, of everything that you’ve learned and that you’re doing, what is it everyday that brings you the most joy, the most fun part about what you’re doing that helps keep you renewed in the face of the never-ending march of improving software?
Mike: There’s two things that I love about what I’ve done over the last four years. One is that I built a system that hundreds and thousands of companies around the world depend on and love. People email me and say, “Thank you for Sidekiq. It’s amazing! it’s awesome! We love it. We depend on it so much at our job.”
That’s really fulfilling. Of course, the fact that I’m making a great living at it is all the more fulfilling. The other thing is that I don’t have to spend 40 hours a week building somebody else’s dream.
I can take time out of my day to do podcast and interviews like this. I don’t have to worry about spending eight hours a day working on coding some random little feature that a product manager wanted.
I don’t have to do that feature treadmill as part of my job anymore. That gives me the chance to take my kid to school, pick him up from school. I can work whatever hours I want. Having the lifestyle of flexibility is amazing, it’s awesome.
Garrett: Fantastic. That’s really all I’ve got, question-wise. Is there anything else that came to mind through the course of this that would be good to chat about or you feel like got pretty good coverage here?
Mike: My overall business, what I’ve tried to do with my business over the last few years is minimize my risk. I think that’s a theme that maybe your readers and your listeners could benefit from. I started this business with a very little risk.
I didn’t invest any money. It was just a few hours, night and evenings, and weekends. So many people take this big leap where they think, “I’m gonna make a killing, I’m gonna make this leap, I’ll make a killing, and be successful.”
it’s so much easier and so much nicer when you don’t have to take that risk, when you don’t have to take that leap, when you don’t have to take funding, and find investors and split your attention that way.
I kept my expenses really low. Doing all that, minimize my risk and really allowed me to build the business slowly over several years. Ultimately, that’s the way to assure yourself of the best chance of building a successful business, is giving yourself plenty of runway.
Garrett: There’s so many news, TechCrunch, you hear all these stories. The things that rise to the top of Hacker News, “I did this big dramatic, I quit my job.” Then it perpetuates that myth that that’s how it works rather than that’s one of those times it happened to work because nobody is uprooting, all the times that it didn’t work, right?
Mike: It can happen.
Garrett: Slow and steady wins the race, the deal is really the story.
Mike: Yeah. You always hear about the overnight success span that’s been playing together for 10 years, right?
Mike: My business, I’ve been doing this for four years, grinding every single day. I’m on my email, answering support emails every single day for last four years. It wasn’t overnight. I’ve been building this for many years now.
it’s not going to be a matter of we’re going to go from zero to a hundred thousand dollars a month in revenue in six months. You’re much more likely to build that over four or five years. If you minimize your risk, if you keep your expenses way down, then you’ve got so much more runway, so much more likelihood of making that work.
Garrett: I’ve literally got a chapter in the book about that, just trying to minimize your personal cost and you give yourself a lot more runway, a lot more time.
Garrett: All right. This is awesome. I really appreciate it. Thanks for taking the time to do this.
Garrett: I’ll include all the links in the show notes, interview notes, and have it up here once we get it transcribed. All right. Thanks.
Mike: Perfect. Nice chatting with you.