Building a long lasting company around open-source

Dgraph started with the idea that every startup should be able to have the same level of technology as run by big giants. We designed Dgraph from ground-up to allow data sharding, horizontal scalability, consistent replication, and a fast and distributed architecture.

Update (Apr 2018): Dgraph has switched back to Apache 2.0, with a Commons clause restriction. See new post here.

We also dream that graph database would no longer run as a secondary database. By building a truly robust piece of technology, we can have our users run only one database, which allows arbitrarily complex queries while providing rock solid performance.

We have always thought of Dgraph as a company, where we can work for the next ten years. So, instead of hacking our way to market, we invest in good design, aggressive refactoring and a culture of logic and reasoning based decisions. But, running a company takes more than clean code and good culture. It requires a functioning business model, which can make a profit.

Profit allows providing highly competitive salaries. Competitive salaries make the company attractive to great engineers. Great engineers build and enhance great products.

To that extent, we’ve started working towards a closed-source enterprise version of Dgraph. This version would contain many features useful to companies, namely:

  • Cluster management and monitoring
  • User authentication
  • Access control lists
  • Data encryption, and more

Selling enterprise version and support would lead us to the path of revenue.

But, what about competition? How do we deal with the threat many big companies provide on a daily basis? The threat of duplicate commercial services and enterprise features built by them and others without paying anything back towards the development of the open source version. There is also the looming cautionary tale of RethinkDB ceasing to develop their database, due to lack of revenue.

We need to balance the benefits of open source to the community, against making the company building Dgraph profitable, while also keeping future competition at bay.

The change

One of the ideas was to move the distributed aspect of Dgraph to the enterprise version; like many others are doing. The argument goes that by making distributed aspect closed-source, the open source offering would have restricted usage for companies growing fast; and they’ll be forced to pay.

    *But, it doesn't feel right!*
Many users love Dgraph because of it provides scalability without question. This goes against our inception idea that every startup should have the same level of technology run by big giants.

The “D” in Dgraph stands for distributed; we want to make sure that everyone gets it: big company, small company, pre-revenue, post-revenue, or one guy in a garage.

We don’t want companies to have to pay us just to deal with more query traffic. That should be free. Instead, we want to build features which are so useful to enterprises that they feel they can save a lot of expensive developer time by using our services. So, after talking to other open source vendors and top open source lawyers, we came to this solution:

Relicense the open-source version to GNU AGPLv3 (from Apache 2.0), while keeping the client libraries under Apache 2.0.

Known as the GPL of the web, GNU Affero General Public License mandates that any modifications made to the source code must be released under the same license. This applies not just to downloadable binaries, but also to code run in the cloud. You can read more about it here.

What does this mean for you?

Largely no change.

Most users of Dgraph would never need to modify the server code themselves anyway. We are going to keep the client libraries under Apache 2.0; which would allow users to continue using Dgraph (via client libraries) without any restrictions or mandates on their own codebase. In general terms, any work built on top of Dgraph wouldn’t be considered derivative work, as long as Dgraph server code wasn’t modified.

So, if you’re a user of Dgraph, nothing changes. If you modify Dgraph server code, you will have to release that modification back to the community under GNU AGPLv3. Thus, the entire Dgraph community would benefit from the contributions made to the server code by other individuals or companies.

This simple change ensures that only Dgraph Labs owns the rights to add proprietary features within Dgraph server code, which in turn allows us to charge for our services and make revenue.

Users of MongoDB would instantly recognize this licensing system. In fact, we were heavily influenced by them. MongoDB is one of the most successful databases and provided a great validation for this new direction we’re taking.

Living, breathing Open-source

While there is a talk of money, Dgraph still lives and breathes like an open-source company. In fact, by relicensing our code base under GNU AGPLv3, we can continue providing the distributed aspect of Dgraph under open source license; which gives us great pleasure.

Graph market is heating up. Every other day, we hear about products ranging from a graph plugin to a graph layer to a graph engine to a graph database. Given the desire to not only serve data but also understand it, there’s a need for graphs in companies; and people realize that.

With Dgraph, we think we’re in the right spot at the right time, ready to provide a graph database that scales with your business. And we’ll continue to do it in a way that benefits the entire community.

If you have any questions or concerns about this switch, please feel free to reach out to me at [email protected].