Continuing the discussion from 1.11.4 upgrade fails due to person change to datetime:
There’s another way to handle a slow-to-release platform, with downstream projects wanting a faster timeline for new features. It’s the word-that-cannot-be-mentioned in OpenMRS-land: the fork.
One approach that would have worked here would be for the Bahmni team to implement this feature in openmrs/openmrs-core master, so that they know it will eventually show up in an OpenMRS release. Then they would create a fork at bahmni/openmrs-core (of the 1.11.x line) and backport the change there. Eventually, when Platform 2.0 is released and Bahmni is ready to upgrade to it, they would abandon their fork and go back to the main line of code.
Now, the Bahmni team is very committed to not forking openmrs-core, so I know they don’t want to do this. But I’m wondering if maybe we should be celebrating the “backport fork” approach as good behavior.
Currently we have a perverse situation: that the faster an implementation or downstream project is creating new features, the less likely its developers are to contribute these to openmrs-core. E.g. if you are doing one major system upgrade each year, then it doesn’t cost much to wait for a once-a-year release of the OpenMRS platform. But if you’re releasing monthly (or continuously!) then your only option is to implement everything in modules. My personal experience was that this caused me to stop contributing to openmrs-core, even when I was writing tons of code. (And I think the same happened for Mark and Mike.)
So, my proposal is that:
We should encourage active implementations and downstream projects to create temporary forks, and this will lead to more contributions to openmrs-core.
I had the same thought yesterday here: I have created the 1.12.x branch in openmrs-core (off of 1.11.x) - #9 by shruthidipali
Some other things we could consider that may be related:
- similar to what I’m saying above, but have a “bleeding-edge” branch/fork that is shared. E.g. multiple organizations that all want want to be running the latest release, and also want features fast, can coordinate to backport their desired features someplace shared. That way they don’t feel like they are forking alone.
- support much more frequent on-demand releases. E.g. make it so in this scenario, if Bahmni wanted to do the work, they could have gotten this feature in an unscheduled 1.12 release. (This would require more automation around the release process.)
- adopting gitflow