Every day, major projects use Mergify to automate their GitHub workflow. Whether they have a core team of 3 or 50 people, the one thing they all have in common is that the project leads are willing to let their developers focus on what’s really important—code. So we decided to meet with some of them to learn more about the challenges they face and discover how Mergify helps their teams be more efficient when it comes to pull requests. This time, we talked to Ankush Menat, a software developer/engineer at Frappe.
Please, could you explain what the project is?
The aim is to help companies from tiny startups to large enterprises, and public bodies manage their operations from financial accounting, and inventory management to payroll. Along with ERPNext we have built several other products on top of our framework, and we continue to build more. Like discussion forum tools, etc..
In case you are wondering, FRAPPE = FRamework + APPs :-)
How many people are currently working on the project?
Totally, they are 30 developers working on the project, but they are not everybody using Mergify. Indeed the largest project that we have has 4 to 6 developers working on it. Others are done by individual developers who don’t really use Mergify. On the core project that uses Mergify, there are 6 developers working on ERPNext. The product I work on, which is the framework, has 4 developers using Mergify, so yes, this is not very large, but we are separated between the 2 products.
Please, describe your GitHub workflow.
We use GitHub for all of our products. Our two products mentioned before have like 100 to 400 contributors.
Our workflow is like any other workflow on GitHub.What we build is enterprise software, it means that we have to keep supporting it for long time. We have two paralallel stable versions running - v13 and v14, while the development version for the upcoming major version is under constant development. Whatever fixes we do, we need to basically backport the changes back to every stable version.
What are the main challenges with this workflow?
The problem before was an automation problem in 3 points;
1. Backport automation
2. Auto merges on pass
3. Auto closing PRs on incorrect branches.
Because it’s manual work, like, someone needs to copy fixes to different branches and could choose to ignore it, forget about it or do it incorrectly. It can break the code. So we developed our own tool, but it wasn't as feature-rich as mergify and would miss some cases.
So how Mergify helps with this workflow?
It’s helping us with automation and simplifying the work for community contributors. For example, for someone who wants to contribute some fix, they don’t have to set up 3 or 4 different versions just to send some fix, it was a requirement a long time ago, but we stopped because not everyone can do that. So they just have to send the fix to the developed version.
We also do CI a lot, that has to be done. We do many CI tests and UI tests, for clients’ functionalities, so when mergify backports something, we are easily informed that everything passes and that Merigfy did the correct job.
How many PRs do you manage on the project?
On the Frappe project, we managed 216 pull requests last month (October 2022).
About ERPNext, there were 204.
What is your favorite Mergify feature?
Backport is definitely the favorite feature for everyone on the team because it solves automation problems.
Mergify is also helping us with losing PRs because we have stable branches that we don’t want PRs from anyone. That’s weird, yes :) . Because some new contributors are arriving on the project and opening the wrong branch, this happens surprisingly often, at least several times a week. So Mergify indicates to them that ‘’here's the documentation for contributing’’.
We also set up Mergify with checks. What we have is we set up Mergify, and if tests pass and someone has approved, Mergify will merge the PR. They don’t have to go in, go back, to see if everything has passed or not. They just have to wait and see Mergify do the job.
What has been the most significant impact of using Mergify on your team’s performance so far?
Mostly about time with backport automation. We don’t forget about doing things because it’s done by Mergify. Like, if you forget to backport a fix, for example, someone will have to report and fix that problem again., so because it’s simple and automated, developers just have to label one thing, and their lives are easier. I’d say we backport a lot more now than we used to because it was more painful to backport manually in the past.
What would be your #1 tip for someone new to Mergify?
To be honest, I don’t know, but if I had one thing to say, it would be to read the documentation and take a look at the features.
How would you improve Mergify if you could?
For now it solves most of our problems except that Conflict resolution on backports is a pain sometimes, but we have tried to solve it ourselves also and there isn't a better solution that we can think of.