Let's use feature switches (Re: new features, bitrot & killswitches)

Hi,

TL;DR: Let's use feature flags and invest in our ability to use
feature flags while maintaining engineering quality.

== Problem statements and values ==

The original thread was very insightful. The essential conflict of
values can be stated as:

1. Ability to incorporate community (or, "volunteer labor") into
Firefox OS (a libre but also a client software project)
2. Ability to accommodate features driven by different stakeholders
(MoCo product team, or a specific volunteer/engineer) and on different
targets

v.s.

A. Ability to maintain engineering quality (test coverage etc.)
B. Ability to maintain a single product vision and uniformity.

and the proposed directions are

i. get more UX/product people to figure out keeping (B) while
accommodating (1) and (2)!
ii. Use feature switches, build flags without sacrificing (A) and to
fulfill (1) and (2).
iii. Add-ons to hack everything out-of-the-tree and out-of-our-minds.

and the problem raised on these directions are

i*: For (i), we can never hire that many people.
ii*: For (ii), we are going to sacrificing (A) at the end anyway.
iii* : For (iii), these add-ons will suffer the same problems with
traditional XUL add-ons. It can't do everything either.

== IMHO ==

Frankly I agree all of the statements above. So I tend to think which
of the goals we value more *and* which of the lesser values we could
bear when they give ways to the higher goal.

With that I will pick (1) and (2) over (A) and (B), and I propose (ii)
as the more attainable solution.

Why?

I think (i*) is a real issue. Even if we have the money, we can never
run any bigger organization effectively than we already are. I also
don't think it is in any way possible as a way to run a free software
project which the # of stakeholders mentioned in (2) is way more than
the one person named Steve Jobs.

I think (iii*) is real too, and I also think ask outside contributors
leave the upstream along and have fun with themselves is not a
responsible attitude to run a free software project. It would not be
the most inviting project that I want to devote my free time to.

(ii*) is real, however, it is the only problem (compare to (i*) and
(iii*)) that can be partly prevented through technical means.

We could have more automation in place to assert the quality of the
code base (but, yes, first we would have to fix the debts in our
automation...). We could make build script more sane when working with
these switches (no, existing front-end build tools don't address this
use case). We should have some place for runtime switches than
Developer menu. There are some many thing to do technically and last
time I checked we are mostly engineers.

The other reason I am in favor of (ii) is also because we want to move
to train model, so even features from the MoCo product management
would have to be hidden behind a flag too, and ideally, only ships
when it's ready. The works required to attend (1) and (2) would be
align to the company goal and our salaries and bonuses are justified,
even if the company only cares about (A) and (B).

This is in essence the never ending struggle between making a client
software v.s. running a free software project. 10 years ago Firefox
Desktop picked (iii) and lived with (iii*), and have tried to solve
(iii*) ever since. The struggle can also be mapped to MoCo management
v.s. Mozilla engineering too since the former are in charge of running
the product and the latter and supposedly responsible of running the
project.

Obviously if we decided to go (ii), we would really need to work hard
preventing (ii*). I would imagine the existing module ownership can
help too in keeping the code quality since that's what reviewers are
asked too.

Process-wise, that would also means UI changes can be checked-in
without UI review as long as the flag is not turned on for release.
Engineers would need to be careful to find the balance between
ignoring UX, land first and fix later for release, or waiting for the
UX spec before landing.

We however need a clearer mandate and priority on ensuring our ability
to use feature switches. Some technical detail would need to be sort
out too. I vaguely remember Jonas was working on this under the
mandate of getting train model running, but I don't know the progress
yet.

We would need a |about:config| like page for run-time switches
(Settings > Developers does not scale, trust me).
We would need to collect problem with our current build time flags
(For one, not being able to run integration tests on a feature if it's
not included in the build).

Tell me what you think and tell me the problems.

(if you are still reading ... well, thank you!)


Tim

On Fri, Sep 11, 2015 at 11:23 AM, Jim Porter <jporter@mozilla.com> wrote:
> On 09/10/2015 07:45 PM, Dietrich Ayala wrote:
>> You've described an ideal version of a typical software development
>> cycle. (Or not ideal nor typical, depending on where we've all worked
>> before!)
>>
>> But we're not in that situation.
>>
>> We're in a high-stakes gambit against entrenched incumbents who can
>> out-hire us 1000 to 1 for far longer than we can attempt to keep up.
>
> I don't think we're any smarter than Apple or Google people. If they
> could produce software at the quality level they expect with fewer
> workers, they would. There isn't some shortcut we can take to make our
> labor more efficient than theirs. If we try to go faster, we'll
> sacrifice quality (possibly in worse UX or less code
> maintainability/testability).
>
> Given the choice, I'd rather have a feature-light phone that works
> really well than a feature-rich one with lots of bugs and bad UX.
>
>> We cannot compete symmetrically against the incumbents using their
>> methods. We must optimize for our unique strengths: Maximize
>> participation vectors and remove as many barriers to experimentation as
>> possible, to enable innovation to occur at scale.
>
> I assume this means something like "make it easy to incorporate
> volunteer labor into Firefox OS". In that case, I think it's even more
> essential to have a big UX team that can respond quickly; I really don't
> trust random volunteers to have a solid understanding of our UX goals.
> Granted, this could mean empowering some of the more visually-oriented
> developers with limited UX-powers, but that's not really much different
> from replacing some developers with UXers.
>
>> I'm asking about ways to accelerate feature development in ways that
>> allow more people to participate and more non-release experimentation to
>> occur in the project... and doing it in a way that minimizes the impact
>> on our product release cycle.
>
> Accelerating feature development in Firefox OS is probably the last
> thing I'm interested in. Firefox OS (especially master) is just too
> buggy for me. I'm happy using Firefox Nightly, since I've almost never
> been bitten by a serious bug there, but every time I try Firefox OS
> nightlies, some core feature is just completely broken. Perhaps it's not
> a fair comparison, since we don't have a gaia-inbound branch, but
> there's no reason that SMS should be broken on master, as you mentioned
> in another thread. (Incidentally, SMS being broken was why I gave up
> dogfooding the last time I tried several months ago.)
>
> - Jim
> _______________________________________________
> dev-gaia mailing list
> dev-gaia@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-gaia
1
Tim
9/11/2015 4:40:22 AM
mozilla.dev.b2g 4036 articles. 0 followers. Post Follow

0 Replies
512 Views

Similar Articles

[PageSpeed] 0

Reply:

Similar Artilces:

new features, bitrot & killswitches
--047d7b10c9d1519df5051f6ae811 Content-Type: text/plain; charset=UTF-8 I often see things like these bugs: Slow motion support for camera: https://bugzilla.mozilla.org/show_bug.cgi?id=1190244 Scene modes for camera: https://bugzilla.mozilla.org/show_bug.cgi?id=1187690 These are features, with patches, that are blocked on UX input - sometimes for months. After sitting for a while, it's quite likely that the patches no longer apply. However, the problem isn't really that these are blocked on UX input. Even if UX gives input, and designs full specs for the feature, we ...

Lisa Gurry (XP Product Manager)From Microsoft And Rob Stites From The Learning Company To Be Featured On This Week's Let's Talk Computers (R)
http://www1.internetwire.com/iwire/release_clickthrough?release_id=29789&cat egory=Technology ...

Use Cross page post back feature of ASP.NET 2.0 while redirecting the user to another page to access previou's page's control
Hi.I am new to .Net..Can anyone tell me how to use  Use Cross page post back feature of ASP.NET 2.0 while redirecting the user to another page to access previou's page's control??  Thanku in advance  set postbackurl of the button's to where u want to redirect page. on second page check is it redirected from previouse using cross page post back like below and then find control which u want on second pageif (PreviousPage.IsCrossPagePostBack) {TextBox text1 = (TextBox)PreviousPage.FindControl("TextBox1"); Response.Write(text1.Text); }www.askaspdo...

Re: [perl #112916] please enhance 'use' and "use parent" to use 'base's modfind ability
Hello, as the author of parent.pm, I think that some historical context will be beneficial. Most of this can be found by using Google or another search engine with the appropriate search terms. Please read these links to familiarize yourself with the reasons why base.pm is as it is, and why parent.pm exists: http://www.nntp.perl.org/group/perl.perl5.porters/2007/07/msg127273.html Also, a short description of some situations where base.pm fails to load a file when you touch a namespace in the wrong place: http://perlmonks.org/?node_id=738152 I also gave a talk at the Ge...

please include 'do not use' options for new features
Name: cabeal Email: cabeal1atcabealdotnet Product: Thunderbird Summary: please include 'do not use' options for new features Comments: Hi, Just installed thunderbird new release. Been a user for a long time. Tout access to mozilla and TB to everyone... new thunderbird forced all my mail into yesterday, today, a week ago, etc. no way to undo the feature. do not need, want, and find extremely unhelpful for using my mail please put out a release to uninstall/remove the view ASAP thanks! Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; r...

Gmail 'forgot your password?' Feature Lets Remote Users Flood a User's Secondary E-mail Account
Gmail 'forgot your password?' Feature Lets Remote Users Flood a User's Secondary E-mail Account http://www.securitytracker.com/alerts/2005/Jan/1012749.html *********************************************************** Quote *********************************************************** SecurityTracker Alert ID: 1012749 SecurityTracker URL: http://securitytracker.com/id?1012749 CVE Reference: GENERIC-MAP-NOMATCH (Links to External Site) http://cve.mitre.org/cgi-bin/cvename.cgi?name=GENERIC-MAP-NOMATCH Date: Jan 2 2005 Impact: Host/resource access via network Exploi...

RFC: use feature 'vt_space' to add VT to \s.
Perl is the odd-man out in regards to handling the vertical tab, compared to Unicode, and other languages. It presents more cognitive load on people to remember this exception. I'm proposing in 5.16 to have 'use 5.016' cause \s to add VT to what it matches. Some months ago Tom C asked Larry about why it wasn't; the response was he couldn't remember, and had no objection to changing it now. On Mon, Nov 21, 2011 at 12:29:00PM -0700, Karl Williamson wrote: > Perl is the odd-man out in regards to handling the vertical tab, > compared to Unicode, and o...

can't u add a feature tthat let's me have more that one home page
Name: kevin Product: Firefox Summary: can't u add a feature tthat let's me have more that one home page Comments: Could u add an option to firefox that let's you have more than one website open up when you first start firefox. Like so i can have a black page on the first tab and have like google in the second tab and so on. This good be pretty cool to have don't you think? Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 ...

Use of the feature keyword for Gaia or Gecko features in B2G Development
Hi Everyone, In an effort to build a consistent query of features tracked in Gecko and Gaia, let's plan on using the "feature" keyword to indicate that a bug is tracking feature work. Product is planning on updating existing user stories to use this keyword going forward. Additionally, if you are in triage, then plan on using this keyword when you come across a feature, whether that would be a Gaia or a Gecko feature. This will help address some of the recent concerns brought up on separate threads about needing a consistent way to find features in Bugzilla re...

Include ALL new features in New Features section
The SA/ASA Help files are among the VERY BEST I've every used. However, perfection is always a noble goal <g>... [EXHORTATION] Every release of SQL Anywhere has contained significant (to me) new features which have been omitted from the New Features section. These have included new product facilities (e.g. sa_table_page_usage in ASA 6) as well as significant improvements to the documentation (e.g., CHAPTER 23 Query Optimization in ASA 6). It's hard to read a 1000+ page manual from cover to cover every few months. Please try a bit harder to at least *mention* EV...

Use of the feature keyword for Gaia or Gecko features in B2G Development
Hi Everyone, In an effort to build a consistent query of features tracked in Gecko and Gaia, let's plan on using the "feature" keyword to indicate that a bug is tracking feature work. Product is planning on updating existing user stories to use this keyword going forward. Additionally, if you are in triage, then plan on using this keyword when you come across a feature, whether that would be a Gaia or a Gecko feature. This will help address some of the recent concerns brought up on separate threads about needing a consistent way to find features in Bugzilla re...

want to know how to develop project co-ordination portal in asp.net & oracle? it's features & details
the company for which i have to develope this project wants all their projects  documents,emails etc. whith different companies/vendors to be  stored at one place. they want to have alll details about a specific project from it's start to finish to be gathered at one place so that it's easier for them to view and share it. i've yet to learn asp.net,i am a complete novice in asp.net , i have 3 months in hand. plz help me. how should i proceed. tell me the important  features i can have in this project.       I would invest in (SBU) Strong Brown U...

RFC: interactions between "use bytes", "use locale", and "use feature 'unicode_strings'
I am waiting for blead to reopen before I submit a patch for extending feature unicode_strings to matching \s, and \w. In documenting it, it occurred to me that the existing implementation is wrong, along with the existing interaction between use bytes and use locale. To refresh your memory, "use feature 'unicode_strings'" is supposed to mean that even non-utf8 data is to be considered to have Unicode semantics. In practice, this only affects the characters from 128-255. It is new in 5.12, and is implemented there only on functions that change case, such a...

Feature request: new $__ variable or a new operator: &&$
Hello! I want to make do a nested hash structure, which seems like that: my $pname = $self->{db}->{product}->offers->{ $product_id} -> {name}; This kind of structures can be easily created by TableMap. Problem: If any of the hash keys are undef, then perl "die"-ing with an error: Cannot use undef as a HASH reference... I suggest two kind of solution in the new (perl6) language, because I think perl5 don't have good solution for that: 1, $__ variable, which is the result of the last operation, e.g: my $pname = $self->{db} ...

Web resources about - Let's use feature switches (Re: new features, bitrot & killswitches) - mozilla.dev.b2g

Resources last updated: 11/21/2015 1:36:37 AM