Thanks for the insight Sam!

IMO minimising friction is critical to usage and contribution. For this
reason I believe it's a worthwhile payoff to add a little friction on our
side (versioning, installing etc), in order to lower the barrier to entry
and streamline the third-party contribution pathway.

If third-parties like our components and find them familiar and easy to
use; they'll use them. If they depend our components, it's in their
interest to improve them and fix bugs.

As Gaia contribution continues to wane, I'm hopeful we can use
gaia-components as a friendly approachable on-ramp to FirefoxOS
contribution.

*W I L S O N  P A G E*

Front-end Developer
Firefox OS (Gaia)
London Office

Twitter: @wilsonpage
IRC: wilsonpage

On Thu, Oct 29, 2015 at 7:11 PM, Sam Giles <sgi...@mozilla.com> wrote:

> At the Financial Times we were solving these sorts of problems with what
> we branded Origami components - see http://registry.origami.ft.com.
>
> Disclaimer: I used to work on this.
>
> Each component was in it's own repository, releases were made on an ad-hoc
> basis - as and when needed, breaking and major changes would necessitate a
> major version change etc.  Product and component developers - and there
> were a lot of them - would then pull in a component at build time (we even
> supported at runtime with https://build.origami.ft.com!) locked to a
> particular major version - we used semver religiously.  Bower was used as a
> dependency manager - admittedly with varying degrees of success at first.
>
> As you can see, there are a lot of individual components in different
> repositories - we had only minor issues with this, but we solved a lot with
> tooling and process:
> http://origami.ft.com/docs/component-spec/modules/#managing-new-releases.
>
> Tooling when using web components, from our experience there, is *so*
> important - the 'Component Info' section and the data found there was
> particularly useful when managing releases and figuring out dependents and
> dependencies:
> http://registry.origami.ft.com/components/o-typography@2.0.3#section-info
> for example.
>
> Tooling also helps with the discovery problem: registry.origami.ft.com -
> which becomes a kind of living style guide.
>
> This worked at scale - some background can be found here if you're
> interested: http://triblondon.github.io/talk-components-origami/#/1
>
> I'm actually for a single repository of components, but *only* if we can
> make it easy for the community to pull in and use components in their apps
> as dependencies with minimum friction.
>
> Sam
>
>
>
>
> On Thu, Oct 29, 2015 at 6:20 PM, Augustin Trancart <
> augustin.tranc...@phoxygen.com> wrote:
>
>>
>> On 29/10/2015 18:03, Fabrice Desré wrote:
>>
>>> It's interesting that you use Facebook as an example. There was a talk
>>> recently from one of their release manager
>>> (https://air.mozilla.org/release-engineering-at-facebook/) and some take
>>> away are:
>>> - they use a (huge) mercurial monorepo (like Google does). Everything
>>> needs to always work on tip basically. For sure being a closed
>>> organisation may make that easier, but FxOS/gaia could be seen as a
>>> closed organisation with not much harm I think.
>>>
>>
>> My 2 cents: I'm far from advocating a unique repo, but having too many
>> repos with dependencies between them is not great either.
>> I personally found working on gaia-icons quite painful (as a reference:
>> bug 1209961 [1]. The number of PR it has is ... meaningful). It's difficult
>> to make contributor stick around if they need to update X repos before even
>> considering pushing their changes to gaia.
>>
>> So I would propose to have only one repo for all web components of gaia.
>> This way, it would be much easier to make change to a wc which other wc
>> depend on. And we could still tag stable versions and pull them gaia-side.
>> Things stay manageable, even if every app has an explicit dependency on
>> this shared repo.
>>
>> Another drawbacks I see of having a lot of separate repos for shared is
>> that their discovery is made more difficult. They risk becoming underused.
>> gaia-icons is a good example again: I don't know the whole story behind it,
>> but I guess the idea was to provide a set of common icons for FxOS. A lot
>> of apps have actually their own svg or png that luckily often look more or
>> less the same (I'm speaking about back, forward, send, edit-mode, close,
>> attach icons, and many others).
>>
>> TL;DR Basically, let's keep the dependency tree as flat and simple as
>> possible to avoid headache.
>>
>>
>> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1209961)
>>
>> Augustin Trancart
>> Phoxygen
>>
>>
>>
>>
>> - no manual QA, everything relies on CI. They ship their sites twice a
>>> day, their mobile apps weekly.
>>> - all employees are forced to use the beta version. So when they stage
>>> changes to users, it's not for quality/bug testing reasons but mostly to
>>> test product ideas (ie. a/b testing).
>>> - our build & CI systems are from the last glaciation compared to theirs.
>>>
>>>         Fabrice
>>>
>>> On 10/29/2015 05:05 AM, Wilson Page wrote:
>>>
>>>> Instantly propagating updates can sound dreamy, but live code everywhere
>>>> can lead to regressions coming from nowhere.
>>>>
>>>> This approach also puts a massive burden on component reviewers and
>>>> contributors. It's much safer to land changes to a component and have
>>>> apps *PULL* in the changes. This gives the app owner a chance to spot
>>>> regressions, file a bug, remain on the old version and avoid breakage.
>>>>
>>>> If component updates are *PUSHED *into the apps, regressions will
>>>> increase. It is not possible for a component owner or contributor to
>>>> know every single instance whereby their component is being used.
>>>> Regressions *will* be caused by new patches, our job is to catch them as
>>>> early as possible and mitigate the impact these regressions have.
>>>>
>>>> This problem is why the Semver <http://semver.org/> standard exists and
>>>> package managers like NPM have grown so successful.
>>>>
>>>> *Our options are:
>>>> *
>>>> A. We force *PUSH* updates into apps and speed up the update process and
>>>> introduce more global regressions.
>>>> B. We land frequent risk-free incremental patches into a component's
>>>> source repo and *PULL* stable versions into Gaia one app at a time (not
>>>> to dissimilar from our train-model).
>>>>
>>>> *How do other people do it?*
>>>>
>>>> If we look at deployment strategies that have proven to work in
>>>> production, they all tend look similar to Option B. Facebook doesn't
>>>> push new features onto all of their users at once; they trickle the
>>>> changes out to 1%, 2%, 3% of users, until it reaches 100% of users.
>>>>
>>>> This gives Facebook the opportunity to catch issues early, backout and
>>>> fix; without impacting very many users. It would be appealing for them
>>>> to be able to ship new changes to everyone in a split second, but this
>>>> can hurt their users and end up costing more time than it saves.
>>>>
>>>> ---
>>>>
>>>> This clearly need some more discussion, but it's important to note *this
>>>> is not a new problem* :)
>>>>
>>>> *W I L S O N  P A G E*
>>>>
>>>> Front-end Developer
>>>> Firefox OS (Gaia)
>>>> London Office
>>>>
>>>> Twitter: @wilsonpage
>>>> IRC: wilsonpage
>>>>
>>>> On Wed, Oct 28, 2015 at 8:56 PM, Justin D'Arcangelo
>>>> <jdarcang...@mozilla.com <mailto:jdarcang...@mozilla.com>> wrote:
>>>>
>>>>      I agree with Sam. But it needs to be trivial for apps to pick up
>>>> the
>>>>      latest changes too. This could be easily solved with Bower. Each
>>>> app
>>>>      could “lock in” to particular versions of the components they’re
>>>>      using. Then to get latest, the apps only need to have their version
>>>>      numbers bumped in bower.json.
>>>>
>>>>      -Justin
>>>>
>>>>
>>>>      On Oct 28, 2015, at 4:49 PM, Sam Foster <sfos...@mozilla.com
>>>>>      <mailto:sfos...@mozilla.com>> wrote:
>>>>>
>>>>>
>>>>>
>>>>>      On Wed, Oct 28, 2015 at 11:52 AM, Patryk Adamczyk
>>>>>      <padamc...@mozilla.com <mailto:padamc...@mozilla.com>> wrote:
>>>>>
>>>>>
>>>>>          So there is also another part to this, and that would to have
>>>>>          it sit in a live styleguide.
>>>>>          Imagine if the components can be in github and a single change
>>>>>          in github would instantly update:
>>>>>          + master and every FXOS app
>>>>>          + style guide website
>>>>>
>>>>>          That would be amazing!
>>>>>                    It would really echo the ideas of focus and dynamic
>>>>> efficiency.
>>>>>
>>>>>
>>>>>      I don't think this is either practical or desirable. To have a
>>>>>      single change cause ripples across all FxOS apps would be really
>>>>>      really difficult to manage. Talk about strange magic from a
>>>>>      distance! Plus we are moving away from a monolithic "Gaia app". *I
>>>>>      do agree we need a simple opt-in way to buy into consistent look
>>>>>      and feel and control interactions*. And a way to pick up bug fixes
>>>>>      or updates from shared components without simultaneously breaking
>>>>>      unrelated stuff - see Jim's note about font-size changes. But I
>>>>>      would like to steer us away from the notion of a one-size-fits-all
>>>>>      UI toolkit. It always ends in tears. Apologies if I'm over
>>>>>      simplifying or mis-characterizing here, I just want to offer the
>>>>>      counter-argument.
>>>>>
>>>>>      /Sam
>>>>>
>>>>
>>>>      _______________________________________________
>>>>      dev-fxos mailing list
>>>>      dev-fxos@lists.mozilla.org <mailto:dev-fxos@lists.mozilla.org>
>>>>      https://lists.mozilla.org/listinfo/dev-fxos
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> dev-fxos mailing list
>>>> dev-fxos@lists.mozilla.org
>>>> https://lists.mozilla.org/listinfo/dev-fxos
>>>>
>>>>
>>>
>> _______________________________________________
>> dev-fxos mailing list
>> dev-fxos@lists.mozilla.org
>> https://lists.mozilla.org/listinfo/dev-fxos
>>
>
>
> _______________________________________________
> dev-fxos mailing list
> dev-fxos@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-fxos
>
>
_______________________________________________
dev-fxos mailing list
dev-fxos@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-fxos

Reply via email to