Even though TOOL-60 is not 100% done yet, this a start of a "Generation 2" plan for SDE.
Now that the first instance of the SDE is ready and working, I'd like to document the goals for a rewrite/refactor based on lessons learned.
I can see that when the Qt AS fork of SDE was made it was (as expected) not that easy. I had not anticipated forks of the SDE until a discussion with EBoto, so the design is not at all optimized for it.
It's also clear that a cleaner structure would be worthwhile anyway for future maintenance.
- Clearer structure in git and easier to understand division of responsibility between Go.CD tasks vs Git-repo (scripts).
- Easier to build the SDE locally by anyone
- This relates to forking (below) and possibly also some other aspects, such as cases when it's difficult to distribute a particular version from license perspective. E.g. versions with license-encumbered binaries. In such cases it's sometimes required by the end-user to build the product locally, after taking some of the responsibility for licensing its content.
- Easier forking
- Create an ecosystem - get more users and contributed patches/improvements.
- May encourage privatized forks, but "making it difficult" is typically not a good strategy to address that problem.
- I think a net positive is expected.
- Move some of the work out of Go.CD tasks to plain scripts.
- Keep the advantages of Go.CD chained pipelines (each part is built separately, and then assembled). For example, only rebuild parts that change, and only trigger downstream pipelines after something significant changed.
- Efficient rebuilds - don't rebuild what is not needed
- Higher efficiency overall, if possible