Bundle with core: if/when/how?
AKA how to keep RiverLea and CiviCRM core in sync.
Another big discussion at the sprint was the flipside of #43 (closed), which is how to keep RL and core in sync. The options seem to be:
- bundle as a core extension. Advantages: changes to core markup and the theme can be done together; an upgrade to Civi will upgrade all the streams people are using. Disadvantages: how to apply UI fixes, when people might be running a Civi several versions behind?
- have it as an independent extension. Advantages: UI fixes can be quickly applied by upgrading the extension. Disadvantages: core and theme can fall out of sync, fewer users/testers, it's technically being maintained out of Civi Core team.
- do both. Advantages: the advantages of both above. Disadvantages: having two versions of an extension on a single Civi is not ideal. The user extension will be loaded ahead of the core extension (apparently), so you soon picture a scenario where Core Civi and bundled RL are at version .79, while custom extension is at version .77 and that's what's being loaded, causing problems
- find a fix to this problems with doing both. A few methods were suggested: such as do something with version numbers to use the latest version of RL whether it's core/local, or lots of user-messaging to tell them they have an over-ride installed and must either upgrade or deactivate it. @totten proposed a 'water's edge' / 'shoreline' extension that could be a loader for the latest RL, to allow someone on, say, .77, who can't upgrade their core, to still update RL to .79 or .77.3 (ie whatever version is appropriate to them)
Bundling in core has long been the plan, but this process seems to have multiple possible paths, timescales each with pros/cons - especially during an ongoing testing phase where lots new use-cases, extensions and scenarios will be tried and RL will change at a different pace to Civi Core (which may happen less in a year or so). Perhaps there are other approaches - would really welcome any thoughts.
FWIW I'm largely agnostic between all four options above beyond a bias towards both a) minimising time/effort to fix a UI issue that's been flagged; b) the simplest workflow for end-users; c) not myself being fundamental to making fixes (ie others can fix, patch & push).