> - Remove all conditional feature configuration from configure. WebRTC et al 
> are always
>   on. Features should be disabled dynamically (prefs), if at all.

Note that Fabrice has seen sizable memory-usage wins on B2G by
disabling non-web features such as printing and XUL.  That alone is,
in my mind, a very strong argument for keeping at least some of these
configure options around.

On Fri, Aug 16, 2013 at 2:43 AM, Andreas Gal <andreas....@gmail.com> wrote:
>
> First of all, thanks for raising this. Its definitely a problem that needs
> fixing.
>
> I am not convinced by your approach though. In a few months from now
> disabling WebRTC is like calling for the DOM or JS or CSS to be disabled in
> local developer builds. It will become a natural part of the core Web
> platform.
>
> I would like to propose the opposite approach:
>
> - Remove all conditional feature configuration from configure. WebRTC et al
> are always on. Features should be disabled dynamically (prefs), if at all.
> - Reduce configure settings to choice of OS and release or developer.
> - Require triple super-reviews (hand signed, in blood) for any changes to
> configure.
> - Make parts of the code base more modular and avoid super include files
> cross modules (hello LayoutUtils.h).
>
> Rationale:
>
> Its not slow for you to build WebRTC. Its slow for you to have it build over
> and over. Almost every time I pull from mozilla-central, someone touched
> configure and I have to rebuild from scratch, which is infuriating (argh!).
> Minimizing changes to configure and banning static defines for feature
> management would solve that. If we make sure major subsystems like WebRTC
> can stand on their own, you will take a hit building it one time, and then
> occasionally as the team lands changes. Its a pretty small team, so the
> amount of code they can possibly check in is actually pretty small. You will
> see churn all over the three when you pull, but you won't have to rebuild
> the entire Universe every time you pull.
>
> What do you think?
>
> Andreas
>
>
> Mike Hommey wrote:
>>
>> Hi everyone,
>>
>> There's been a lot of traction recently about our builds getting slower
>> and what we could do about it, and what not.
>>
>> Starting with bug 904979, I would like to change the way we're thinking
>> about default flags and options. And I am therefore opening a discussion
>> about it.
>>
>> The main thing bug 904979 does is to make release engineering builds (as
>> well as linux distros, palemoon, icecat, you name it) use a special
>> --enable-release configure flag to use flags that we deem necessary for
>> a build of Firefox, the product. The flip side is that builds without
>> this flag, which matches builds from every developer, obviously, would
>> use flags that make the build faster. For the moment, on Linux systems,
>> this means disabling identical code folding and dead code removal (which,
>> while they make the binary size smaller, increase link time), and
>> forcing the use of the gold linker when it's available but is not system
>> default. With bug 905646, it will mean enabling -gsplit-dwarf when it's
>> available, which make link time on linux really very much faster (<4s
>> on my machine instead of 30s). We could and should do the same kind
>> of things for other platforms, with the goal of making linking
>> libxul.so/xul.dll/XUL faster, making edit-compile-edit cycles faster.
>> If that works reliably, for instance, we should for instance use
>> incremental linking. Please feel free to file Core::Build Config bugs
>> for what you think would help on your favorite build platform (and if
>> you do, for better tracking, make them depend on bug 904979).
>>
>> That being said, this is not the discussion I want to have here, that
>> was merely an introduction.
>>
>> The web has grown in the past few years, and so has our code base, to
>> support new technologies. As Nathan noted on his blog[1] disabling
>> webrtc calls for great build time improvements. And I think it's
>> something we should address by a switch in strategy.
>>
>> - How many people are working on webrtc code?
>> - How many people are working on peripheral code that may affect webrtc?
>> - How many people are building webrtc code they're not working on and
>>    not using?
>>
>> I'm fairly certain the answer to the above is that the latter population
>> is much bigger than the other two, by probably more than an order of
>> magnitude.
>>
>> So here's the discussion opener: why not make things like webrtc (I'm
>> sure we can find many more[2]) opt-in instead of opt-out, for local,
>> developer builds? What do you think are good candidates for such a
>> switch?
>>
>> Mike
>>
>> 1.
>> https://blog.mozilla.org/nfroyd/2013/08/15/better-build-times-through-configury/
>> 2. and we can already start with ICU, because it's built and not even
>> used. And to add injury to pain, it's currently built without
>> parallelism (and the patch to make it not do so was backed out).
>> _______________________________________________
>> dev-platform mailing list
>> dev-platform@lists.mozilla.org
>> https://lists.mozilla.org/listinfo/dev-platform
>
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to