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.

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.

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.

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.

---

Finally, wrt snapshot vs. RC, I think it's better to have explicitly pinned
versions so we're never in a situation where behavior is not reproducible.
We can also release with an RC when necessary.

Hope this helps!
- Mike

[1]: They're stable against the components test suite but that doesn't mean
they integrate well with our app design or that they're bug free when used
in our product (e.g. Fire OS keyboard bugs).

[2]: Additional engineering overhead comes from the time spent backporting
and, when upgrading to the latest version, finding and fixing bugs/design
issues that were fixed some time ago in components so it's harder to track
down.

On Tue, Oct 2, 2018 at 11:31 AM Stefan Arentz <sare...@mozilla.com> wrote:

>
>
> On Tue, Oct 2, 2018 at 1:39 PM Susheel Daswani <sdasw...@mozilla.com>
> wrote:
>
>> Yes Stefan, I don't think the snapshots and rc releases are super useful
>> *yet*. We do use them with GV but that's really just because GV
>> development is so active and the engine is so core that updating it more
>> frequently overrides the risk. But being on the bleeding edge does have
>> it's issues (e.g., yesterday we had to downgrade GV because it was too
>> bleeding edge).
>>
>
> I think what we will recommend to all teams is actually this:
>
> - Always develop against components -SNAPSHOT so that you stay up to date.
> Snapshot is the place where you will get the changes, bug fixes and
> features that you have requested. And you will get them real-time as those
> changes land. Using snapshots is the best way to work together with us
> because not only will you get the things you need soon, you will also find
> issues sooner which means we get to a stable release sooner, which means
> less chance of point releases.
>
> - When your project reaches code freeze or feature complete, that is the
> moment you stop using snapshots and pin to a stable version. In an ideal
> world the timing is such that our calendars are in sync enough that you can
> just pin the upcoming release. But if they are not, you can tell us the
> point in time when you would like to pin components and we can make a
> release happen on that date. (Note that this does not scale well beyond one
> or two products, it is simpler to take our release dates into account and
> align  schedules.)
>
> The point releases are to handle unexpected (aren't they always) critical
> bugs, they do not exist to accommodate a development schedule. However,
> they can happen after you pinned to a specific version or even after you
> shipped. But I think that with a good schedule and good testing, these
> releases can mostly be avoided.
>
>  S.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Android Product Team (APT)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-product-team+unsubscr...@mozilla.com.
> To post to this group, send email to android-product-t...@mozilla.com.
> To view this discussion on the web visit
> https://groups.google.com/a/mozilla.com/d/msgid/android-product-team/CAKyLfD4OXSfV%2Bf-4AmWALEJtKT%2BhwZoOp1F%3D%2BFh%3DY%3D2LhMR9CQ%40mail.gmail.com
> <https://groups.google.com/a/mozilla.com/d/msgid/android-product-team/CAKyLfD4OXSfV%2Bf-4AmWALEJtKT%2BhwZoOp1F%3D%2BFh%3DY%3D2LhMR9CQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
_______________________________________________
Sync-dev mailing list
Sync-dev@mozilla.org
https://mail.mozilla.org/listinfo/sync-dev

Reply via email to