On Tue, Oct 2, 2018 at 6:07 PM Michael Comella <mcome...@mozilla.com> wrote:
> Thanks for starting this discussion, Stefan! I think it's helpful to > better understand everyone's problems so we can come to a shared process > that benefits us all! > > To take a step back, on Fire TV some of the issues we've faced with > components integration are: > > 1) The way the product and components release schedules happen to align *makes > us find and fix bugs/design issues later than we'd like.* The product > sprints/releases are every two weeks, we code freeze on the second > Wednesday, and finish our build end-of-day Friday. afaik, components > releases sometime between Wednesday and Friday which means we're sometimes > updating the potentially unstable components [1] after code freeze, > creating a lot of stress on both teams to fix bugs or design issues by the > end of the week. > Well, don't upgrade then at that point in time. If there is no reason then do not upgrade? > Some solutions, with varying trade-offs: > - Upgrade components once a sprint (during week one): I think this is what > Susheel proposes by pinning and backporting dependencies > - *Desynchronize the two release schedules,* e.g. release components > earlier in the week > - Release components more often so we can test earlier before an official > components release: this is what Stefan proposes > > It's important not to fall too far behind components due to the additional > engineering overhead [2] so I'd rather upgrade the components frequently, > if possible, removing option #1. *#2 seems like a great way to keep our > products more stable* but it may not be logistically feasible (e.g. does > sprint planning align?). I think #3 is also a good option to improve > stability but we may still find the final upgrade from final RC to release > creates bugs. > I think you are in the best position to decide what the best timing is for your specific project. I hope that snapshots and more (pinnable) RC builds will allow teams to pick the right mix. We are not trying to mandate anything, just to give enough options to make things work for teams. The problem with #1 is that this is likely not how things work in practice. I assume that you are going to ask us to make changes and to fix bugs, or even submit changes yourself. And pulling those in only once in a two week sprint probably makes no sense then. If you ask for a new API in the Browser Engine, why would you wait two weeks before you take that change? I assume you want to pick up those changes asap so that you can write the application code against them. I think what you need to consider is that the first couple of weeks (or sprints) in a release schedule are probably a really good moment to follow snapshot builds. Make sure that we are aware of all the changes that you need and we can plan those to happen in that period. Then when that work has been done, you can pin to a release and in the last weeks of your sprint you can focus on stabilization and testing. It is not rare that things are more unstable in the beginning of a release and become more and more stable near the end. > 2) *Components updates unexpectedly break existing integrations* (e.g. new > Settings <https://github.com/mozilla-mobile/firefox-tv/issues/1204>), > adding unplanned work to our sprints. > > Some solutions: > - Explicit notifications about potentially breaking changes early: this > can let us plan for the fixes in sprint planning > - Only upgrade components early in the sprint to find and fix such issues > early > > As before, I'd prefer to upgrade components as often as we can while > maintaining stability so I'd go with #1. I want to see more false > positives! :) A solution to the first problem will also help. > Assuming you talk about API changes: we try hard to prevent breaking changes. In the unfortunate case when it is needed we write about it in the release notes. If you are uncomfortable about upgrading, ask us. We can always make time to help with that. One of the reasons to use snapshots would defintiely be to find problems early. The components have pretty decent test coverage, but I don't think we can guarantee being bug free. Even if thing work well in our demo apps or in any of the 5 products that now use components, there is always a change that something unexpected happens in a product. I have no good answer to this. Other than, it may have to be a shared responsibility between APT/QA/ACT to ensure a level of quality. One thing we did recently in Focus may be worth thinking about: we had a PR with a large refactor in Focus to integrate with the browser-session component. Because of the size of this PR, we asked QA to regression test a build coming from the PR branch. This uncovered a number of issues that we then dealt with before the patch landed. You could consider doing the same thing when you pull in a components update; do it on a PR branch and have QA test it. Chris' later email points out semantic versioning but I think some our > breakage often comes from 1) incorrect integrations, 2) design issues, 3) > missing functionality in components that replaces WebView-based > functionality, and 4) new components code breaking existing work-arounds: > semantic versioning wouldn't address this. > > 3) *Patching previous releases seems to have a lot of overhead.* > Sometimes a product is forced to pin their versions for stability or lack > of engineering time to integrate breaking changes (see above) but it's > seemed difficult to quickly backport bug fixes. From this thread, it sounds > like the components team is addressing this though. 👍 Also, finding bugs > sooner (the point of this thread!) would make *quick* backports less > necessary. > We are addressing our ability to more easily publish bugfix releases. But whether a bug can actually be backported will have to be decided on a bug-by-bug basis. It is not really a given that everything is easily backported or fixable in an older release. There may be a case where the answer is: this is better fixed by upgrading. This is a bit theoretical, but I do want to set expectations. S.
_______________________________________________ Sync-dev mailing list Sync-dev@mozilla.org https://mail.mozilla.org/listinfo/sync-dev