My company are using an open source software project heavily. We’re a large org and we’ve had to hack the code base to fix up bugs, extend functionality and add new features.
Our internal fork breaks down into three categories:
1. The base software.
2. Generic improvements to the software that could be used by other people.
3. Specific extensions to the software that are only value to our own organisation (e.g integration with our legacy systems, our change management systems)
I’m encouraging our team to contribute the generic improvements (item 2) back to the upstream to minimise any maintenance overhead, and this is working well.
However for Item 3, I’m finding it particularly difficult to confidently pull in upstream changes where we have heavily modified the original implementation. Ideally I’d like to be able to pull in upstream changes quickly, easily and safely.
Does anyone have any suggestions, references or patterns to consider for this type of software project?
The software is primarily Python, with some Java for good measure.