Memories of Mozilla at 15 and Thoughts on Mozilla Research
brendaneich.com
brendaneich.com
Google is chock full of programming language people, but Mozilla's work on Rust and Javascript (ES6, asm.js, sweet.js) is producing far better languages than Google has done with Go and Dart in my humble opinion.
If you compare the Google Chrome source code vs Firefox you will quickly understand how miles ahead Google is.
Google has far more resources than Mozilla, and produces loads of great stuff in many domains.
I use both browsers daily (Aurora specifically, for Firefox) and have no preference between them. I have no opinion on their source code.
And then there is what Holzle, Bak, Bracha, etc...are doing with Dart; and of course Pike with Go.
This is pretty much expected for a huge multimillion line C++ codebases, like all web browsers currently are. All have crufty parts (not sure why GP thinks one browser has nicer code overall? That's not my opinion based on the code I've read.)
WebKit forked KHTML in 2005.
KHTML actually started in late '98 if memory serves, when we rebooted Mozilla around Gecko.
/be
Does anybody know what the actual quote is? I love this.
I think you are looking for an exact quote but the link is to slides of a talk :(
I also agree with the sentiment, but you Architecture Astronaut will no doubt disagree.
You really can't just take a design pattern and apply it blindly across languages. I spend far too much of my time on a C# application where I have to deconstruct anti-patterns and make them more amenable to change.
I've also heard people say that "design patterns are feature requests", or "the kindest form of feature request", but bug or feature -- what's the difference?
/be
http://www.perl.com/pub/2003/06/13/design1.html
"If a pattern is really valuable, then it should be part of the core language"
I really believe you get a lot better at seeing the benefits of patterns when you try to apply them in different languages and different contexts.
Are patterns something we should try to transcend in our learning? Meaning, you really do need to know them before you understand how to dismiss them in favor of something else?
Runtime performance is far more important to us than compiler speed—a fast-to-compile Web browser is useless if it loses to existing engines in UX or benchmarks (every cycle counts!)—but we continue to spend time on compiler speed, because it's important for developers.
So how does clang do on nbody.c?
Performance counter stats for './nbody.gcc_run 50000000' (5 runs):
6232.525219 task-clock # 0.999 CPUs utilized ( +- 0.09% )
533 context-switches # 0.086 K/sec ( +- 0.43% )
1 CPU-migrations # 0.000 K/sec ( +- 66.67% )
166 page-faults # 0.027 K/sec ( +- 0.15% )
27,385,819,080 cycles # 4.394 GHz ( +- 0.05% ) [83.31%]
19,494,722,200 stalled-cycles-frontend # 71.19% frontend cycles idle ( +- 0.07% ) [83.30%]
6,403,657,640 stalled-cycles-backend # 23.38% backend cycles idle ( +- 0.21% ) [66.70%]
31,905,910,193 instructions # 1.17 insns per cycle
# 0.61 stalled cycles per insn ( +- 0.01% ) [83.37%]
1,902,954,908 branches # 305.326 M/sec ( +- 0.05% ) [83.36%]
39,925 branch-misses # 0.00% of all branches ( +- 31.16% ) [83.34%]
6.239027874 seconds time elapsed ( +- 0.08% )
Performance counter stats for './nbody_rustc 50000000' (5 runs):
6970.131625 task-clock # 0.999 CPUs utilized ( +- 0.07% )
601 context-switches # 0.086 K/sec ( +- 0.33% )
5 CPU-migrations # 0.001 K/sec ( +- 7.41% )
1,024 page-faults # 0.147 K/sec ( +- 0.02% )
30,587,917,853 cycles # 4.388 GHz ( +- 0.04% ) [83.31%]
19,368,464,950 stalled-cycles-frontend # 63.32% frontend cycles idle ( +- 0.06% ) [83.34%]
7,348,766,082 stalled-cycles-backend # 24.03% backend cycles idle ( +- 0.84% ) [66.69%]
36,479,184,126 instructions # 1.19 insns per cycle
# 0.53 stalled cycles per insn ( +- 0.01% ) [83.35%]
2,404,008,283 branches # 344.901 M/sec ( +- 0.04% ) [83.35%]
65,846 branch-misses # 0.00% of all branches ( +- 11.89% ) [83.33%]
6.977211938 seconds time elapsed
The C version is here: http://benchmarksgame.alioth.debian.org/u32/program.php?test... . It appears to be the fastest C verson on the site. The Rust version looks pretty gross (it's likely very old code), I'd like to try porting the C version to Rust (it's only 140 lines) and compare the results. Note also that I'm using a version of the compiler that's so new that it's not even in the official repo yet, containing optimizations for floating-point math.Their transition from an open source project to an organization receiving millions from the Google search box.
The restrictions (based on security reasons) to install an extension from a site different than mozilla addons. For me this was a prequel of app stores.
Mozilla Thunderbird team had no respect for people who reported bugs: they closed important bug reports.
Lack of respect for extension developers breaking compatibility between versions and not clearly isolating extensions. I remember looking into the TabMix Plus extension and seeing ~40 IFs handling special cases with other extensions.
Lack of a good community (circa 2007) where complex questions were never answered.
I can think about more disgusting experiences...
You can be both things. Generally it's nice to be paid for your work.
"The restrictions (based on security reasons) to install an extension from a site different than mozilla addons"
If someone convinces you to install a malicious browser extension (easily done in a world where people will click OK on basically anything) they can spy on and control everything you do online.
Do you think then that for example desktop software must be installed from a central company like Microsoft because someone can convince you to install it from every website?
And also: do you think that Mozilla was really doing security inspections in the early days? No, it wasn't, the extensions had all kind of security bugs. I think it was more about control.
You can think it was about control, but this could not be farther from truth.
<disclaimer>I work for mozilla</disclaimer>
There are alternative methods that Mozilla could do, like bringing a Mozilla certificate to host the extension in your own site without an extra prompt.
You are talking around the larger problem, which is a huge one for many extension and app ecosystems (e.g. Google Play, where weak-AI scanners fail to stop malware and spamware).
Mozilla uses community review, which works much better but is of course imperfect, a human thing.
No one that I know of has solved this larger problem. I would be interested in research pointers and tips (not complaints).
/be
Thunderbird was a silly waste of resources and should have been shelved well before they did.
In balance I'm quite happy Mozilla exist and have been generally positive.
https://bugzilla.mozilla.org/show_bug.cgi?id=668655
https://bugzilla.mozilla.org/show_bug.cgi?id=579372
https://bugzilla.mozilla.org/show_bug.cgi?id=478468
Sorry I was not earlier on the scene to help -- people are supposed to mail me when my early warning systems don't see a problem in the community.
Honest question: did you try to intervene or get involved in any of these cases?
/be
I have no problem with this as long as they use the funding to continue producing open source software. I don't think it would be possible for them to compete with Chrome as a pure open source project with no major funding. Mozilla's role since its founding of providing a viable alternative FOSS browser is just as valuable and appreciated now as it was in the IE days, imho.
>The restrictions (based on security reasons) to install an extension from a site different than mozilla addons. For me this was a prequel of app stores.
For a product aimed primarily at easily-duped non-tech lay people, I have no problem with this either. As long as the addons remain FOSS.
>Lack of respect for extension developers breaking compatibility between versions and not clearly isolating extensions.
As a FF user I can live with this, as long as the breaking changes move the browser forward technically, or get rid of some legacy cruft, or similar. It's definitely not in FF's interest either, as it incentivizes users to try other browsers, so I expect it's on their todo list, just maybe not as high a priority as other issues.
The issue is from the developer perspective but also (although invisible) from the user side. Extension developers make titanic work and users can loose some extensions in the way of compatibility. Obviously important brands will never be incompatible but less known extensions will.