My Response to Dgraph Core Values
First, I want to say that I love this document! This is a great thing to see for a project and a community. I see too many projects with great promise that don’t define the vision. This document is the vision of the Dgraph company and the way that you develop software, and all of these concepts will directly affect Dgraph and any other products you deliver. I love the points that you make here.
This is far to often sacrificed for the fact that a tool “technically works”. “Works” is not good enough! If a tool “does the job” but no user can manage to make it do the job then that doesn’t count. User experience is crucial.
Exactly! I have seen a project where new features were what took priority and the issue was that users were constantly running into “this one bug” that rendered all the bells and whistles useless. It is essential for users to actually be able to use your product, and beyond that, enjoy using your product. That attitude will create devoted users out of people that may have otherwise used your project just because they had to or because it “did the job”.
Thank you! I think that, as engineers, we often get lost in the engineering when what really matters is creating solutions to real problems. A simple solution is leaps and bounds better than a complicated solution that solves the same problem. Don’t engineer for the sake of engineering. Keeping things simple will give you more time to actually make a difference, and that is what brings user value.
Yes. Freedom to experiment and try new things helps people be creative and you never know when someone might come up with something great.
This is important. Not being clear about you think or wasting time on unproductive discussion will not be a benefit to anybody. Honesty is important to being able to efficiently collaborate and get stuff done.
Dgraph Enterprise-only Features
You guys are totally saying alot the things that me and my company have been talking about for a while now and it is really cool to see. Now I want to make an appeal to the number 1 point in your core values: Be Open Source.
Before I start I want to say that I completely respect your business model decisions. You have to maintain your business and decide how you want to do that. Still, it appears that this is a place where the community has a voice and so I want to make a case for the Open Sourcing of the current enterprise-only features, knowing that if the Dgraph Core Values are diligently upheld, I will get a fair hearing.
Hindrence to Inclusion in Other Open Source Projects
One thing that prevents me from wanting to use Dgraph is the fact that I want to include it as a part of the stack in other Open Source projects that target enterprises. The particular project in my case is an enterprise orchestration GUI. Having a database, though, that requires a commercial license to access features such as database backups and ACL would really be detrimental to that tool.
Another inhibitor is that the other tools in the ecosystem don’t require commercial licenses to access any features, so adding a new tool to the ecosystem that requires an enterprise license would not fit very well with the rest of the ecosystem which otherwise allowed for any scale deployments without commercial licenses.
Even if I were comfortable with purchasing a commercial Dgraph license for a single use-case in my own company, I would not want to force users of an Open Source application that I develop to purchase licenses, regardless of their scale.
Extra Difficulty When Selling to Legacy Enterprises
I have a colleague with lots of experience working in big, legacy enterprises, and there is a lot of red tape that you have to go through to get anything changed, especially when that change costs money. If I can take an Open Source tool, create a solution with it, and start using it without having to tell the enterprise that I need money to do it, it will be much easier to get the clearance to do so. If I can get that solution stood up and working, the enterprise can then decide that they want to pay for support for the tool because they have it deployed and running at large scale and they want to make sure it keeps working.
This is a bigger deal the more components that make up the application stack. Modern applications can require many different components and if every component needed an enterprise license that would add up drastically. Can big businesses afford it? Maybe. But it is barrier to adoption when a cost is required just to use the tool. If the business can adopt it without cost and they love it, then I believe that most will come back for support once they are using it.
Poisoning Future Development At the User’s Expense
A very relevant quote from the CockroachDB License Change Announcement:
Another option we considered was adopting a three-tier model: open source core, enterprise components, and a middle ground of features that are not open source but available at no cost. This is a popular model, and more or less the model we have had up until today.
However, this creates bad incentives for our company. It creates pressure to avoid creating new features in the core and do as much work as possible in the non-open-source components. Basically, we would be tempted to sell our core users short by permanently putting our most exciting features behind an enterprise license. If you squint towards the horizon, this model does not bode well for the open source ecosystem.
This is what I’m afraid of for Dgraph. For instance, database backups seem like a pretty core feature to me. Yes maybe the Export feature is a fine enough stand-in, but it still feels wrong to me. This is just my impression and you do not have an invalid business strategy in any respect, but I think that it has a negative impact on users.
CockroachDB went with a license that permitted full use of the database for anything except hosting the database commercially as a service. I think this is a great model. It allows you to build your business by offering your product as a service and you can still offer professional support for enterprises. Everyone has access to use and improve all of the features, but large and small businesses can get support and/or hosting to make the Dgraph business sustainable.
My Background
I am the Chief Technology Lead at Katharos Technology and at KatharosTech we build pretty much our entire company’s technology on Open Source software. We don’t have support for any of it because we are starting out and we know how to manage our software ourselves. We want to be able to use tools and deploy them highly available if necessary without having to get licenses for all of the software we use.
Even if we don’t want to pay for support now, to keep costs down in an environment where we can manage things ourselves, that doesn’t mean that we won’t one day scale to a point where having support would be worth the cost. And if we implement a tool for one of our Digital Transformation consulting clients it would be easier to tell them that they can do anything with the tool without paying for it, but that they can get enterprise support if they want to pay for it.
Closing Thoughts
If you got this far, thanks for reading! Regardless of what you guys decide on, I respect your decision. I’m extremely interested in Dgraph after looking into it just for one day, but at this point I don’t know that I would deploy it for the Open Source projects I’m working because of the license. I hope that this feedback is useful even if you guys don’t change anything. Keep up the good work! I think you’re doing an amazing job.