There are those nights when you can’t get to sleep because of ideas that are swirling around in your head. I get more of those nights now that I’m an indie maker than I ever did as an employee. Last night was one of those nights. I lay in bed thinking through a decision that I was close to making – open-sourcing everything that I’ve been working on.
This is not to say that I’m going to stop offering it as a SaaS, or technically, Infrastructure as a Service. But rather that I’ve decided I don’t want to be one of those SaaS companies that is more about the profit and locking in a customer than it is about changing the world.
Startup wisdom would have us believe that the way to change the world is to take on a whole bunch of capital and not make a profit for 10 years while we scramble to get a network effect in our product and engineer a company designed to raise money. Eventually, somewhere in there, you change the world.
As indie makers, we’re already on a path that is different from that. The belief that it’s more about committing to building and being lean. In amongst this, I’ve been re-reading the book Rework by the team at 37signals and it is the embodiment of what a lot of indie making is about. Making something that is real and sustainable.
37signals is a company that changed the world. They’re probably a little bit large to consider themselves indie makers, but I think they do have the “Spirit of the Maker”, rather than the “Spirit of the VC”. The way they changed the world though, was their open source. Pretty much everyone on the internet has used Ruby on Rails (probably unknowingly). Certainly, if you’re a software developer then you use GitHub every day.
If you’re interested in exploring this aspect of the topic more, James Gallagher, an editor at Maker Mag, did an interview with Rob Walling about TinySeed, a Venture Capital (VC) fund crafted around supporting makers and bootstrappers rather than companies that were engineered just to exist in the VC landscape.
It’s very unlikely GitHub is completely Ruby/Rails now at the scale it’s at. But that’s the core. It wouldn’t exist without 37signals.
There is a couple of lenses that I’ve been holding up to determine whether I should go forward with open-sourcing everything. What I value. The benefits, and the downsides.
Money is one of those necessities. But beyond a certain point, it’s not actually that fulfilling and valuable to me. Beyond a comfortable lifestyle, and not worrying where the money to make the next rent payment is coming from it doesn’t mean all that much. The truth for most of the technical makers out there is that we’d be better off in a financial sense working for Google, et cetera.
I walked away from what was probably the best job in Australia when I decided to become an indie maker. A job where I had access to many of the things I would use the money to buy, VR, AR, Drones, 3D Printers, and the list goes on.
So it’s definitely not about money beyond what is necessary to survive and have a comfortable lifestyle (which is really ambiguous, but there it is).
Making and working for big companies is not mutually exclusive. Indeed, working for big companies often allows the funds to pursue passion projects.
In my case, even though I’ve chosen not to work for a big company while I’m making, much of what I’m working on would not be possible without the network and the learning that came from working in the space for several years.
If money is not the most important thing to me, then what is?
I care passionately about making the world a better place. What I’m working on currently isn’t curing cancer, but there are ways that it can make the world better. If less time is wasted looking for a house to live in, then there is more time to spend on the things that matter. If there is more transparency around the condition of properties it acts as a form of protection against problems in tenancies.
I am also passionate about building amazing communities. Brad Feld in his book Startup Communities talks a lot about what makes the Boulder Colorado startup community amazing. One part, at least, is the willingness to invest time and effort in helping other people without the expectation of a return. Mentoring and growing, welcoming and supporting. We already do this, though there are always ways to improve.
I don’t believe that we live in a zero-sum world. I don’t believe that capitalism is the solution to all problems. Certainly, I wouldn’t trade the universal health care that I am entitled to in Australia, for the profit based system that is the reality for Americans.
The benefits of open-sourcing everything
Thinking about the direct benefits of open-sourcing everything is important to ensure that I make an informed decision based on substantiated facts. For a start, open-source code, as a rule, has better code quality. Partially this is because it’s like cleaning your house before you have guests, but also because it forces you to architect the open source in a way that allows other people to approach it.
As an indie making community there are benefits to producing open source and open interfaces. One of the things we lack in being independent is the reusable resources that a thousand developers and designers all working for the same company produce. This can change, but in some ways, it has to be unilateral. Deciding to put value out into the world without the guarantee of reciprocation.
As with Ruby on Rails, and so many other projects, open-source allows other people to build amazing things that you haven’t even imagined. This is important to me. In the context of my project, graphql360.com, if I care most about fostering that ecosystem and content then this is one of the ways of being the most effective.
One of the other benefits, especially if you’re targeting enterprise customers is confidence that they won’t be left in the lurch if you decide to move onto other things. This is actually one of the things that stop a lot of big companies from dealing with indie makers (and start-ups in general).
Big companies, especially public companies, have a fiduciary duty to reduce risk to their shareholders. Dealing with small entities can be a source of risk. Both in failing to fulfill contractual obligations, but also in technical matters, like not being able to cope with traffic volumes.
What about the objections?
Despite all these benefits, open-sourcing is a gut-wrenching thing. There are numerous objections that have come up in my own mental argument about whether I should move forward.
If the product is open-source then there is nothing stopping the customer from taking it and using it and not paying a cent. While this is strictly true. When discussing my service with potential customers. They have highlighted the costs of running their own infrastructure as a reason that they’re considering my service. There are only so many hours in the day and they want to spend their time building for their customers, not getting caught up in operational problems.
In other cases, some of my potential and existing customers/partners are huge and have 100s of IT staff. They are so big, that if they decided they wanted to, they would have no trouble recreating what I’ve already done. Closed source is not a form of protection there.
However these big companies in general struggle to go after small opportunities. A subject well explored in the Innovator’s Dilemma by Clayton Christensen. If it’s under X million a year it just isn’t worth it.
Even with a copy of the software, someone has to be responsible for it. This is hard within a big company where projects must be fought for and justified. Far easier to let a smaller player exist and thrive. Snapping them up if they ever become truly interesting.
In fact, open sourcing is of potential benefit in preventing just this. The knowledge that they could spin up their own version protects developers. I’m asking my customers and partners to invest time and effort integrating, and as I discuss above, that is not without risk for them. If they know with a surety that should my business fail, that they have options, they are more likely to trust me and do business with than less.
What about competitors, both existing or new. In the case of existing competitors, I have seen examples where features, even without the code are replicated incredibly quickly. If they have a will to replicate what you’ve done, and you don’t have patents then there is a very short window before they’ve built it themselves.
In the case of new competitors. We’re all aware of how much effort goes into building a business outside the code. The absolute dedication to follow something for years if need be. You could have the code to nomadlist.com, and that wouldn’t mean that you could spin it up and be successful in the way Pieter Levels has been in that space.
If your potential new competitor is passionate about the subject and prepared to invest 3 years of their life in building a business, then lack of code is not going to stand in the way of that.
What about my ability to charge money for my product. If they can get it for free, why would they pay? My conclusion on the matter is that, as above, they could do it themselves anyway. They’re entering into a relationship with me because it’s easier and cheaper to do it using my hosted service than it is to do it themselves. The value of sharing the platform has to stand up by itself.
Actioning my decision to open source everything is not, unfortunately, an immediate thing. Because I haven’t written it as open-source from the start I now have to make sure that nothing in the code could cause security issues. I’m relatively certain that this isn’t the case, but because it wasn’t front of mind when I was writing the code originally, it’s still something that needs to be done.
Additional work is also required to prepare the project for open-sourcing in terms of documentation. Contributor agreements, and licenses. There are great examples and resources available for the supporting collateral for open source projects. None of that is new ground.
I’m also looking forward to some of the accountability that comes from having everything be open source. It will help me hold my code to a higher standard. I can hope that people will find the things that I’ve missed and help improve them over time.
My decision to open source everything is an experiment, but it’s not one without precedent. There are many companies that have been successful as open source companies. Mozilla and RedHat are examples that spring to mind.
I’m convinced my decision to open source is the right one. I’m passionate about building up the indie making community. This is one way that I can do that. I can be certain that other people will find it and learn from it.
The indie maker community is very open about things like money, and I’d like to think that this is just the next step along this journey. If more and more indie makers open source their projects, then we can exist in a community that can potentially outpace even big companies. Instead of fighting over the small corners we can start to leapfrog and tackle the really big problems.
My commitment is that by the end of June everything that I’m working on currently for graphql360.com will be open source. It will continue to grow in the open, and hopefully, it will the better for it.