The ERPNext Conference 2018 in Mumbai has just ended and most of us have arrived back home after having made journeys from all over the world to participate in the developer sprint and in the Unconference. I find it amazing that so many people are so passionate about business software and about this community.
Before I get started, I would like to thank Frappe for organizing an excellent event and what I thought was by far the best of the 3 conferences I was able to attend so far. Everyone could see and feel that this was not the work of a few individuals but the whole team at Frappe. I also want to thank all of you who came to the developer sprint in particular for your contribution to documentation and code.
Format of the Conference
I think this year’s format was a good choice. For the next conference, speaking time limits should be observed more strictly, and talks should be focused largely on community and contribution. Implementation stories and advertising presentations are not that interesting and could be discussed offline.
The developer sprint was excellent and should be the focus of every conference. I would even do 3 days code sprint in cross-functional and cross-company teams and limit the conference to one day that starts an hour earlier and cuts some of the fat to keep the conversation interesting and relevant.
I would consider the later part of the foundation discussion on the second day something that should have been streamlined by the moderators (of which I was one) and should have been more on topic. I am sorry if it got boring and repetitive.
The Role of Frappe Technologies Private Limited
I called this post “A Moment of Clarity” because I hope all of us have understood something that I will try to make very clear again. Before we get into heated discussions about this, I would like you to reflect on what I am writing here for a moment.
I don’t want there to be any confusion. I am not writing this to any one person nor am I pointing at anyone. I am addressing all of us in the community and I am also directly addressing my own team, including myself. When I write “we” I am writing this as a critique of how I perceive our collective behavior.
We all need to understand that Frappe Technologies Private Limited is not a public utility that we can use as we please. We need to understand that they not a government official or representative who we can complain to as part of a democratic system. We need a firm understanding that being part of this community and having Frappe do all this work is not an entitlement.
Frappe is a business that works for its paying customers. These are cloud customers and customers who pay for services like technology consulting or feature development. Other than that, Frappe as a company has to be a service provider and user of ERPNext in the community just like the rest of us. It has been – and is – much more than that, but what they told us during this conference is that this model of 80% charity that they have maintained for years is no longer sustainable.
Rushabh has a special role: being the founder and driving force behind the project. He has a double role as a community leader and head of the foundation that I believe he takes very seriously and pours his heart and soul into. Nabin has a special role of being the maintainer of the project when it comes to code review and merging. But I believe this is not by design, we have all been called upon to step up for years now. There has been significant improvement but we as a community are not there yet.
Ask yourself:
Are you paying Frappe? If not, why should they work for you?
Are you contributing code, are you a foundation member, are you writing documentation, are you helping users on the discussion forum and/or are you evangelizing for the project? If you are not doing at least one of those points, why should the community work for you?
I am not asking for everything in our community to be a financial transaction by any means. If that happens the community is dead. I am only asking us to have realistic expectations of what we can ask for from the community based on our contribution and what we can expect of Frappe based on what we contribute back to them. We need a moment of clarity about the economics of Frappe and about the economics of how we all behave within the ecosystem.
Contribution
We have to change our mindsets and we all need to write code for contribution first. Again to be clear, with “we” I am talking to all of you in the community and I am talking to my own team.
If you are an end user, you want maintainable, quality code. If you are a service provider, you should want to deliver quality product to your customer. This means clean code that has been tested and documented and that takes into consideration what your addition might break or influence.
If you write code like this, you can then choose to contribute it or not, but your quality should be aimed at whether or not this would pass code review. If you are saying your stuff is not good enough for contribution, why are you selling it to your customer?
Nabin summarized this nicely in his presentation, but let’s revisit the point again:
Is this something generic that everyone clearly benefits from? → This is a Core Code Contribution.
Is this specific to your company and are you sure you cannot possibly make it generic or configurable? → Please customize or make it your own App. If you do this, please remind yourself that Frappe as a company is running 700 customers (!!!) on the core product.
Is this not generic, not possible as a customization, not possible as an app? → Go ahead and make core changes in your fork and live with the fact that you will have merge conflicts and that you will have to maintain this forever at your own expense without the support of the community.
For my team, this means continuing to shift our mindset and working on getting our fork to as close to 0 as possible, as well as re-evaluating what features we have in apps that the community could benefit from. We have contributed some of what we have done and during the conference I have talked to others using and building upon every single feature we have added. I hope you understand the magic of this: something we started is being maintained and improved by others, with and for. Wow!
Foundation Governance
I am sorry I didn’t moderate this discussion more tightly. The discussion got repetitive and long and it ultimately turned into a panel discussion that it was not intended to be. If I moderate again I will try my best to do better.
I think the legal governance discussion is absolutely premature. I appreciate it having been brought up so we have clarity about the status, but the discussion got out of hand once the status was clarified.
Rushabh has the voting rights during this starting phase and the foundation needs to form leadership and relevance before we discuss legal governance. If you disagree with Rushabh here, then please don’t be a sponsor of the foundation (you are not legally a member anyways), or, alternatively, start your own foundation if you think that makes sense. I trust Rushabh here and I believe the way it is right now is the only way it can be.
The idea of a leadership council has been brought up and I think that’s a good idea to reboot with. Regarding a functional governance of the foundation, I believe we should form a leadership council of around 5 members. I should be a small enough cycle in the beginning to make sure it is functional and people who are on it must be serious about it. It should be big enough to represent a cross section of the users representing the interests of the community.
The larger conference calls we used to have got out of hand and faded into irrelevance. Bu the leadership council should have a conference once a month and publish a written summary of the decisions. During these discussions one of the members should take down the protocol of the discussion. This council would have to ensure the money is spent in a sensible and responsible way that aligns with the broad goals of the community. With us taking baby steps here, I believe the leadership council should be selected by Rushabh and that all decisions of the council can be vetoed with a single vote by Rushabh.
I am not proposing that this is the best idea to govern the foundation 5 years down the line or even 2 years, but I think this could be functional and could help make sure that we get things done. Attempts of leadership of single individuals within the foundation have failed before despite best efforts. Getting things done at this point is my primary concern.
While we then start filling the foundation with life we can tweak the governance.
Final Thought
Remind yourselves: we are getting so much for so little. (Note: Please read this sentence 5 times until it is burned into your retina and into your brain.)
Let’s stop asking Frappe for charity, let’s stop complaining and let’s get things done. The momentum is there; I could see it during the code sprint and in how great this community has gotten. The product, the community, and Frappe are stronger than we have ever been!
Thank you for your contribution,
Dominik