On Fri, Nov 20, 2015, at 06:03 PM, Justin D'Arcangelo wrote:
> If the app owners cannot agree to follow the architecture that the NGA
> group has spent many months defining and validating, then I really
> don’t know how we’ll ever scale FxOS up to meet our future needs.

Disclaimer: I understand this comment was made in a back-and-forth about
engineering issues which we all care very deeply about and so may not be
exactly what you intended to say, but I think the underlying point is
still worth addressing.

I'd like to reiterate :djf's comment that "Mozilla engineers understand
modularity and its benefits."

Specifically, I worry that there's an impression that the state of the
tree at the transition to v2.5 was entirely intentional or somehow due
to a lack of understanding of good software engineering practices.  The
general time-pressure, emergent branching, repeated stabilization-
focused intervals with strict uplift approval, and externally-imposed
features led to a sustained period where there was limited time for
cleanup, involving a lot of duct-tape engineering.

And I worry that this has led to the impression that engineers outside
of the NGA group somehow can't be trusted to make their own engineering
decisions.


This matters because as Ari made the point at the recent FxOS all hands,
"end user value" is of vital importance, and given our limited
resources, we are frequently making decisions between:
* Making user-visible enhancements
* Paying down technical debt
* Attempting to drive the platform forward by being experimental
  guinea pigs
* Attempting to standardize across all FxOS apps
* Attempt to be more webby in some abstract sense.

Concerns in particular can arise where it can seem like "NGA for the
sake of NGA" that does not address perceived problems is creating
busywork.  Or where being a platform guinea pig has known risks that are
at odds with having a usable product[1] given the continued limited
bandwidth of the platform team.


A point being made in multiple places is that most of the NGA efforts
that were beneficial aren't so much a result of specific NGA
implementation choices being the cure for everything, but simply that
NGA is also built-on sound engineering principles of modularity,
encapsulation, etc. and that in v2.5 we've had time to pay down
technical debt.

I think it makes sense to say: "Hey, engineers, we trust you.  Here's
the selection of reusable libraries, idioms, and conventions we've
created for you to use, a la carte.  When you feel it's time to address
problems that these address, we'd like for you to pick from these first.
If they don't fit your use-case but are in the same problem domain,
let's have a discussion about whether it's appropriate to augment them
to fit your use-case or whether we should use some other existing open
source library, or even create a new library."

I also think it makes sense that when creating new libraries, etc., that
we discuss those on the list so that engineers with existing
solutions/thoughts on problem spaces can contribute.  This helps ensure
that everyone is on the same page and that they're aligned with the
library when it comes time to use it.  For example, AFAICT the first
time that the fast-list/gaia-fast-list effort was mentioned on our
mailing lists was when Music NGA landed[2].

Andrew

1: For specific examples:
* The email app adopted preliminary use of custom elements.  A bug
  (https://bugzilla.mozilla.org/show_bug.cgi?id=1176829) in the custom
  elements implementation was reported to the DOM team and acknowledged
  on July 9th.  A fix landed over two months later on September 18th.
* The email app switched over to requestsync from mozAlarms, making
  email's periodic sync unreliable for approximately 8 months.  (Noting
  that since flame device clocks had serious reliability issues over
  that extended time period and there were also several mozAlarms issues
  that were only more recently fixed, it was not immediately obvious
  that requestsync was broken until the other issues were ironed out.)

2: Note that I'm just using gaia-fast-list as an example because it's an
   important implementation to performant apps but was not particularly
   discussed and there was prior art/effort within the gaia repo by
   multiple functional teams.  It seems pretty cool, quite well
   documented and exampled, and with some model enhancements to not
   require the entire model to be synchronously available to the list
   implementation, would be suitable for email.  Although the shadow
   root issues and the fact that the email app does its nefarious
   localStorage HTML cache at a higher level mean that there would be
   non-trivial effort to change and a potential startup time regression,
   so that's an example of where it would not make sense to change-over
   unless there was already a fundamental refactoring under way and the
   life-cycle issue and shadow root issues had been addressed.
_______________________________________________
dev-fxos mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-fxos

Reply via email to