A couple of weeks ago, I presented at QCon SF. My topic was on Building an Ecosystem for Hackers. It was a talk about how we empower our users (yes, users – who mostly happen to be developers) to hack on our products for fun and profit. The sentiment of the talk focused on the fact that having a platform that empowers its users and developers is a great thing. Hackers in the context of my talk are developers and users. Not all “hackers” have bad intentions.
While working on this talk, it dawned on me on how unique Atlassian is as a software company. We’ve built our products to be truly extendable and customizable. We’ve built an amazing plugin framework that allow developers to build whatever they want inside our products. Our plugin framework is so useful that we use it ourselves to build new features into our products. At the same time, we also give developers REST APIs so they extend our products externally.
There are two ways to turn your product into a platform. The first way is to do what everyone else is doing… build REST APIs and call it a day. REST APIs are great and definitely a way forward for us. However, REST APIs only solve one part of the equation. You see, there are only a couple of ways to build software. You can build opinionated software where you basically decide the features yourself and shut others out. It’s a perfectly good strategy and for the amount of haters you’ll get, you’ll have equally as many fans. But building software this way means that you’ve built a fence around your products and are telling your customers that you inevitably control their destiny, not them.
Another way to build software is to do what we’ve done. You start with an opinionated approach to build out what you think are the best possible features for your customers. Then you allow your users to contribute and inject themselves into the process through an extension framework. Building software this way inspires a culture of openness and community.
Back to REST APIs… like I said, they’re only one part of the solution. Our products will always have something lacking for a set of users. And as agile as we are, we’ll still never be able to build everything ourselves in the time users want them. In the end, the only way to scale our development is by adding more developers. And since there are always resource constraints, getting our users to help us is an excellent solution to that problem. So, because of our plugin framework, users (developers, hackers, customers, etc.) are empowered to enhance the products themselves. If you’re a developer in the Atlassian ecosystem, “Thank you!”
Here are the slides I presented: