SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Mozilla Memories, and Thoughts on Research

           Brendan Eich <brendan@mozilla.org>




                                                    mozilla

           1


Tuesday, April 2, 13
Agenda

           • Problem statement


           • Mozilla’s history and contributions


           • The big picture


           • Where we are all headed




                                                   mozilla

           2


Tuesday, April 2, 13
Problem statement

           • Software, especially “in the large”, remains quite challenging


           • “Fast, Slim, Correct”. Pick any two, so long as one is “Correct”. Not to mention
             done anywhere near on time!


           • “I do not know of any other technology covering a ratio of 10^10.” - Dijkstra


           • “By evoking the need for deep conceptual hierarchies, the automatic computer
             confronts us with a radically new intellectual challenge that has no precedent in
             our history.” - Dijkstra again


           • “Science is knowledge which we understand so well that we can teach it to a
             computer; and if we don’t understand something, it is an art to deal with it.” -
             Knuth                                                                        mozilla

           3


Tuesday, April 2, 13
mozilla

           4


Tuesday, April 2, 13
The scale problem is worse over time

           • Path dependence in any large codebase creates “lock-in” (see sunk cost fallacy)


           • Rewriting is both a beginner’s error and something experienced programmers
             can defer for far too long...


           • “Code by itself almost rots and it’s gotta be rewritten. Even when nothing has
             changed, for some reason it rots.” - Ken Thompson




                                                                                        mozilla

           5


Tuesday, April 2, 13
Mozilla’s history: 1998

           • An “escape pod” jettisoned by Netscape, the first big commercial open source
             conversion attempt - an act of desperation, a bit of executive legacy vanity


           • 1998-2003 mozilla.org was a "virtual organization" with no legal independence


           • staff@mozilla.org drawn from part- and full-time employees at several companies


           • Mitchell Baker (MPL creator): governance and process


           • Brendan Eich: technical architecture and oversight


           • March 31, 1998: all contributors were @netscape.com

                                                                                      mozilla

           6


Tuesday, April 2, 13
The beginner’s error: rewrite!

           • October 1998: I declared it time to rebuild almost all of the code using:


                 • A new, cross-platform XML-based user-interface widget-set and front end,
                   customizable similar to how web pages can be customized


                 • Gecko, a new, C++, standards-oriented HTML/CSS engine from Netscape,
                   not nearly done but able to load pages and do basic layout


                 • A scriptable C++ component model, complete with IDL, IDL-derived type
                   libraries, automatic JS <=> C++ type and method bridging


           • Big gamble to bring in new developers attracted by green-field development and
             a new focus on correctly implemented Web standards
                                                                                         mozilla

           7


Tuesday, April 2, 13
2000

           • Netscape 6 - “Black and Blue”, circular buttons, slow, crashy, AOL IM built in...


           • Based on “Mozilla 0.6” - our view was that the code was not nearly “1.0”




                                                                                         mozilla

           8


Tuesday, April 2, 13
2001-2002

           • After Netscape 6 flopped, Mitchell and I leveled the community playing field:


                 • New Netscape hires had to prove merit before getting “commit access”


                 • Mozilla binaries (available to testers who did not have a compiler or time to do
                   their own builds) became competitive with Netscape releases


                 • A roadmap plan of milestone releases leading up to “Mozilla 1.0”, running
                   from 2001 into 2002, independent of any Netscape product release plans


           • The community of volunteers and contributors employed by other companies
             than Netscape grew in strength and numbers from 2000 to 2002

                                                                                            mozilla

           9


Tuesday, April 2, 13
2002-2003

           • Mozilla 1.0 released in June 2002


           • mozilla/browser, to be renamed Phoenix, then Firebird, was created


           • Dave Hyatt and I wrote a new roadmap advocating unbundling the “Mozilla
             suite” into browser, mail, and other apps, each doing one thing well, with fewer
             features and an “add-ons” architecture so users could customize at will


           • Mozilla downloads were at least as popular as Netscape product downloads


           • July 2003: AOL laid off almost all Netscape employees and created the Mozilla
             Foundation, giving it initial funding, trademarks, and the project’s infrastructure


           • Mozilla Foundation initial headcount: 10, with money for ~1.5 years           mozilla

           10


Tuesday, April 2, 13
2004

           • The new roadmap split the community, with a bare majority supporting separate
             browser and mail apps


           • Firefox (renamed from Firebird) started rapid gains in market share and buzz


           • Focus on end-user usability, Windows integration over Linux, unusual for open
             source software


           • June 2004: Mozilla, Opera, and (not announced at first) Apple founded the
             WHATWG to create HTML5; I blogged about it and against the W3C


           • The rest is perhaps better-known history...

                                                                                        mozilla

           11


Tuesday, April 2, 13
mozilla

           12


Tuesday, April 2, 13
Mozilla’s contributions: community

           • In the modern Firefox era, 30-40% of patches come from volunteers


           • ~700 volunteers contributing patches over a year (outsize impact)


           • Firefox 4 available in 82 locales and 74 languages, the work of many volunteers


           • ~50,000 nightly build testers


           • 5M beta testers in the Firefox 4 release cycle


           • 450M users


                                                                                       mozilla

           13


Tuesday, April 2, 13
mozilla

           14


Tuesday, April 2, 13
mozilla

           15


Tuesday, April 2, 13
Bugzilla




                       mozilla

           16


Tuesday, April 2, 13
Tinderbox, now “tinderboxpushlog”




                                               mozilla

           17


Tuesday, April 2, 13
Code review and testing

           • Code review before commit is required, in general


                 • Large new modules may plead for post-commit review


                 • No formal design review; important to catch design mistakes early


                 • Code review of more, smaller patches landing early and often is best


           • Tests are required as part of the patch


                 • Previously we lacked this rule and suffered lack of test coverage and (prior to
                   2006) even test automation

                                                                                           mozilla
                 • Valgrind [Nethercote, Seward] automated build test coverage

           18


Tuesday, April 2, 13
Fuzz-testing

           • jsfunfuzz, Jesse Ruderman’s JavaScript travesty generator, has been
             enormously productive


                 • More productive than static analysis frameworks (Coverity, e.g.)


                 • Knows JS syntax and some semantics, bends and break rules, nests
                   constructs in evil ways


                 • Extremely effective when steered by an expert who tracks new code and
                   language features, senses soft spots and attacks them with targeted fuzzer
                   logic...


           • Variations perform random DOM manipulation, markup generation, etc.
                                                                                         mozilla

           19


Tuesday, April 2, 13
Automatic program analysis

           • Collaboration with UCB project Oink, ultimately forked as Mozilla Pork, for:


                 • experiments with automatic patch generation


           • Second-generation analysis tools based on the GNU C Compiler (GCC):


                 • dxr, a semantic source code cross-referencer


                 • Dehydra, a scriptable static analysis tool (GCC plugin)


                 • Treehydra, heavy-duty static analysis version of Dehydra (binds to JS
                   reflection of GCC’s GIMPLE AST representation)

                                                                                           mozilla

           20


Tuesday, April 2, 13
Brian Hackett’s Sixgill




                                     mozilla

           21


Tuesday, April 2, 13
Mozilla Research founded in 2009. 2010 for sure!
           • "Distrust any enterprise that requires new clothes." - Thoreau


           • I met Andreas Gal in 2006. New clothes came in time for Firefox OS (2013)


           •




                                                                                         mozilla

           22


Tuesday, April 2, 13
Rust and Servo




                            mozilla

           23


Tuesday, April 2, 13
Blast from the past




                                 mozilla

           24


Tuesday, April 2, 13
nbody.rs




                       mozilla

           25


Tuesday, April 2, 13
Rust performance results (nbody)




                                              mozilla

           26


Tuesday, April 2, 13
Latest and greatest




                                 mozilla

           27


Tuesday, April 2, 13
mozilla

           28


Tuesday, April 2, 13
Mozilla Research in 2013




                                      mozilla

           29


Tuesday, April 2, 13
The big picture

           • We at Mozilla like formal methods and invest in them, but incrementally.

                 • Fielding a competitive browser/OS entails use of unsafe languages such as C and C++.


                 • Being safe but so slow you lose users does not help.


           • Manycore and security challenges motivate pragmatic and hybrid methods


           • Art + Science require many hands at all layers of the system. Not all are ready for
             formal methods


           • “Ruby is not used for software engineering reasons”, rather for aesthetic and
             programmer productivity reasons. A human thing, so a software thing
                                                                                                 mozilla

           30


Tuesday, April 2, 13
Where we are all headed

           • When Mozilla began, CVS was the state of the art in open source version control


           • Since then (see http://revctrl.org/), distributed peer-to-peer version control
             systems have emerged and gained widespread use


           • 15 years ago, forking was a dire thing, to be avoided; “branches” were costly
             and unmaintainable in parallel for very long


           • Now with DVCSes such as Git and Mercurial, forking is not always a bad thing,
             and often a good thing


           • We are increasingly using http://github.com/, for “social hacking” wins

                                                                                              mozilla

           31


Tuesday, April 2, 13
Closing thoughts

           • Open source and distributed development on the rise. Unsound humans FTW!


           • Formal methods for verifying correctness are coming along, but I see two large
             gaps to close:


                 • Between the github.com world of JS, Ruby, etc., and Mozilla’s C++ and Rust
                   systems programming languages. Contracts, gradual typing, compilers such
                   as TypeScript?


                 • Between kernel languages we use at large scale, and the sound but hard-to-
                   scale verification systems used on, e.g., device drivers (SLAM) -- never mind
                   the metalogical frameworks!


                                                                                         mozilla

           32


Tuesday, April 2, 13
Thanks, and keep Researching!




                                           mozilla

           33


Tuesday, April 2, 13

Más contenido relacionado

La actualidad más candente

Free Libre Open Source Software - Business Aspects of Software Industry
Free Libre Open Source Software - Business Aspects of Software IndustryFree Libre Open Source Software - Business Aspects of Software Industry
Free Libre Open Source Software - Business Aspects of Software IndustryFrederik Questier
 
Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Robert 'Bob' Reyes
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challengesbcantrill
 
Anthropological fieldwork in Ubuntu Linux
Anthropological fieldwork in Ubuntu LinuxAnthropological fieldwork in Ubuntu Linux
Anthropological fieldwork in Ubuntu LinuxAndreas Lloyd
 
The dream is alive! Running Linux containers on an illumos kernel
The dream is alive! Running Linux containers on an illumos kernelThe dream is alive! Running Linux containers on an illumos kernel
The dream is alive! Running Linux containers on an illumos kernelbcantrill
 
Why you should use the Yocto Project
Why you should use the Yocto ProjectWhy you should use the Yocto Project
Why you should use the Yocto Projectrossburton
 
Run containers on bare metal already!
Run containers on bare metal already!Run containers on bare metal already!
Run containers on bare metal already!bcantrill
 
Leaping the chasm from proprietary to open: A survivor's guide
Leaping the chasm from proprietary to open: A survivor's guideLeaping the chasm from proprietary to open: A survivor's guide
Leaping the chasm from proprietary to open: A survivor's guidebcantrill
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Databcantrill
 
Unix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsUnix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsAnant Narayanan
 
Introduction To Opensource And GNU/Linux
Introduction To Opensource And GNU/LinuxIntroduction To Opensource And GNU/Linux
Introduction To Opensource And GNU/LinuxSheila Eiffert
 
Update on Memento (IIPC 2011 Plenary)
Update on Memento (IIPC 2011 Plenary)Update on Memento (IIPC 2011 Plenary)
Update on Memento (IIPC 2011 Plenary)Robert Sanderson
 

La actualidad más candente (20)

Free Libre Open Source Software - Business Aspects of Software Industry
Free Libre Open Source Software - Business Aspects of Software IndustryFree Libre Open Source Software - Business Aspects of Software Industry
Free Libre Open Source Software - Business Aspects of Software Industry
 
Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challenges
 
Anthropological fieldwork in Ubuntu Linux
Anthropological fieldwork in Ubuntu LinuxAnthropological fieldwork in Ubuntu Linux
Anthropological fieldwork in Ubuntu Linux
 
The dream is alive! Running Linux containers on an illumos kernel
The dream is alive! Running Linux containers on an illumos kernelThe dream is alive! Running Linux containers on an illumos kernel
The dream is alive! Running Linux containers on an illumos kernel
 
Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012
 
P05-slides
P05-slidesP05-slides
P05-slides
 
Linux shell scripting_v2
Linux shell scripting_v2Linux shell scripting_v2
Linux shell scripting_v2
 
1 Unix basics. Part 1
1 Unix basics. Part 11 Unix basics. Part 1
1 Unix basics. Part 1
 
Why you should use the Yocto Project
Why you should use the Yocto ProjectWhy you should use the Yocto Project
Why you should use the Yocto Project
 
Run containers on bare metal already!
Run containers on bare metal already!Run containers on bare metal already!
Run containers on bare metal already!
 
Leaping the chasm from proprietary to open: A survivor's guide
Leaping the chasm from proprietary to open: A survivor's guideLeaping the chasm from proprietary to open: A survivor's guide
Leaping the chasm from proprietary to open: A survivor's guide
 
Intro to open_source
Intro to open_sourceIntro to open_source
Intro to open_source
 
FLOSS development
FLOSS developmentFLOSS development
FLOSS development
 
Linux for everyone
Linux for everyoneLinux for everyone
Linux for everyone
 
Mozilla & Connected Devices
Mozilla & Connected DevicesMozilla & Connected Devices
Mozilla & Connected Devices
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Data
 
Unix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsUnix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell Labs
 
Introduction To Opensource And GNU/Linux
Introduction To Opensource And GNU/LinuxIntroduction To Opensource And GNU/Linux
Introduction To Opensource And GNU/Linux
 
Update on Memento (IIPC 2011 Plenary)
Update on Memento (IIPC 2011 Plenary)Update on Memento (IIPC 2011 Plenary)
Update on Memento (IIPC 2011 Plenary)
 

Destacado

Extensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptExtensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptBrendan Eich
 
Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)Brendan Eich
 
Value objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progressValue objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progressBrendan Eich
 
JS Responsibilities
JS ResponsibilitiesJS Responsibilities
JS ResponsibilitiesBrendan Eich
 
Mozilla's NodeConf talk
Mozilla's NodeConf talkMozilla's NodeConf talk
Mozilla's NodeConf talkBrendan Eich
 
Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Brendan Eich
 
The Same-Origin Saga
The Same-Origin SagaThe Same-Origin Saga
The Same-Origin SagaBrendan Eich
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 

Destacado (18)

Extensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptExtensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScript
 
Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)Value Objects, Full Throttle (to be updated for spring TC39 meetings)
Value Objects, Full Throttle (to be updated for spring TC39 meetings)
 
Value objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progressValue objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progress
 
Fluent15
Fluent15Fluent15
Fluent15
 
JS Responsibilities
JS ResponsibilitiesJS Responsibilities
JS Responsibilities
 
Capitol js
Capitol jsCapitol js
Capitol js
 
Mozilla's NodeConf talk
Mozilla's NodeConf talkMozilla's NodeConf talk
Mozilla's NodeConf talk
 
Taysom seminar
Taysom seminarTaysom seminar
Taysom seminar
 
My dotJS Talk
My dotJS TalkMy dotJS Talk
My dotJS Talk
 
Fluent14
Fluent14Fluent14
Fluent14
 
Web futures
Web futuresWeb futures
Web futures
 
Paren free
Paren freeParen free
Paren free
 
dotJS 2015
dotJS 2015dotJS 2015
dotJS 2015
 
Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016
 
Splash
SplashSplash
Splash
 
The Same-Origin Saga
The Same-Origin SagaThe Same-Origin Saga
The Same-Origin Saga
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
Int64
Int64Int64
Int64
 

Similar a Mozilla Research Party Talk

"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...
"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe..."The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...
"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...eLiberatica
 
Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the futureJuho Vepsäläinen
 
Familiarization with Web Tools
Familiarization with Web ToolsFamiliarization with Web Tools
Familiarization with Web ToolsMarlon Jamera
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiAnnika Wickert
 
Open source softrware, group 5 final
Open source softrware, group 5 finalOpen source softrware, group 5 final
Open source softrware, group 5 finalbigrouge
 
.NET, OSS & Mono
.NET, OSS & Mono.NET, OSS & Mono
.NET, OSS & MonoPaul Rayner
 
Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Colin Charles
 
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
HIS 2015: Prof. Mark Little - Open Source Challenges in the EnterpriseHIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
HIS 2015: Prof. Mark Little - Open Source Challenges in the EnterpriseAdaCore
 
Celf japan technical_jamboree_20090522
Celf japan technical_jamboree_20090522Celf japan technical_jamboree_20090522
Celf japan technical_jamboree_20090522Mitz Amano
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Michael Redlich
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open SourceAmol A. Sale
 
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Leonardo Flores
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye codeKim Moir
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingRobert 'Bob' Reyes
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 KeynotePeter Wang
 
The History and Status of Mozilla Korean Community
The History and Status of Mozilla Korean CommunityThe History and Status of Mozilla Korean Community
The History and Status of Mozilla Korean CommunityChanny Yun
 

Similar a Mozilla Research Party Talk (20)

"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...
"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe..."The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...
"The Past Present and Future of the Mozilla Foundation" by Zak Greant @ eLibe...
 
Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the future
 
Familiarization with Web Tools
Familiarization with Web ToolsFamiliarization with Web Tools
Familiarization with Web Tools
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale Jitsi
 
Future Tense
Future TenseFuture Tense
Future Tense
 
Web Browsers
Web BrowsersWeb Browsers
Web Browsers
 
Open source softrware, group 5 final
Open source softrware, group 5 finalOpen source softrware, group 5 final
Open source softrware, group 5 final
 
.NET, OSS & Mono
.NET, OSS & Mono.NET, OSS & Mono
.NET, OSS & Mono
 
Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?
 
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
HIS 2015: Prof. Mark Little - Open Source Challenges in the EnterpriseHIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
 
Celf japan technical_jamboree_20090522
Celf japan technical_jamboree_20090522Celf japan technical_jamboree_20090522
Celf japan technical_jamboree_20090522
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
Electronic Publishing 2.0: Reimagining the Publication and Preservation of E ...
 
Rust 101 (2017 edition)
Rust 101 (2017 edition)Rust 101 (2017 edition)
Rust 101 (2017 edition)
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off Meeting
 
HTML for beginners
HTML for beginnersHTML for beginners
HTML for beginners
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 Keynote
 
The History and Status of Mozilla Korean Community
The History and Status of Mozilla Korean CommunityThe History and Status of Mozilla Korean Community
The History and Status of Mozilla Korean Community
 

Último

Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0DanBrown980551
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptxHansamali Gamage
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Muhammad Tiham Siddiqui
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 

Último (20)

Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 

Mozilla Research Party Talk

  • 1. Mozilla Memories, and Thoughts on Research Brendan Eich <brendan@mozilla.org> mozilla 1 Tuesday, April 2, 13
  • 2. Agenda • Problem statement • Mozilla’s history and contributions • The big picture • Where we are all headed mozilla 2 Tuesday, April 2, 13
  • 3. Problem statement • Software, especially “in the large”, remains quite challenging • “Fast, Slim, Correct”. Pick any two, so long as one is “Correct”. Not to mention done anywhere near on time! • “I do not know of any other technology covering a ratio of 10^10.” - Dijkstra • “By evoking the need for deep conceptual hierarchies, the automatic computer confronts us with a radically new intellectual challenge that has no precedent in our history.” - Dijkstra again • “Science is knowledge which we understand so well that we can teach it to a computer; and if we don’t understand something, it is an art to deal with it.” - Knuth mozilla 3 Tuesday, April 2, 13
  • 4. mozilla 4 Tuesday, April 2, 13
  • 5. The scale problem is worse over time • Path dependence in any large codebase creates “lock-in” (see sunk cost fallacy) • Rewriting is both a beginner’s error and something experienced programmers can defer for far too long... • “Code by itself almost rots and it’s gotta be rewritten. Even when nothing has changed, for some reason it rots.” - Ken Thompson mozilla 5 Tuesday, April 2, 13
  • 6. Mozilla’s history: 1998 • An “escape pod” jettisoned by Netscape, the first big commercial open source conversion attempt - an act of desperation, a bit of executive legacy vanity • 1998-2003 mozilla.org was a "virtual organization" with no legal independence • staff@mozilla.org drawn from part- and full-time employees at several companies • Mitchell Baker (MPL creator): governance and process • Brendan Eich: technical architecture and oversight • March 31, 1998: all contributors were @netscape.com mozilla 6 Tuesday, April 2, 13
  • 7. The beginner’s error: rewrite! • October 1998: I declared it time to rebuild almost all of the code using: • A new, cross-platform XML-based user-interface widget-set and front end, customizable similar to how web pages can be customized • Gecko, a new, C++, standards-oriented HTML/CSS engine from Netscape, not nearly done but able to load pages and do basic layout • A scriptable C++ component model, complete with IDL, IDL-derived type libraries, automatic JS <=> C++ type and method bridging • Big gamble to bring in new developers attracted by green-field development and a new focus on correctly implemented Web standards mozilla 7 Tuesday, April 2, 13
  • 8. 2000 • Netscape 6 - “Black and Blue”, circular buttons, slow, crashy, AOL IM built in... • Based on “Mozilla 0.6” - our view was that the code was not nearly “1.0” mozilla 8 Tuesday, April 2, 13
  • 9. 2001-2002 • After Netscape 6 flopped, Mitchell and I leveled the community playing field: • New Netscape hires had to prove merit before getting “commit access” • Mozilla binaries (available to testers who did not have a compiler or time to do their own builds) became competitive with Netscape releases • A roadmap plan of milestone releases leading up to “Mozilla 1.0”, running from 2001 into 2002, independent of any Netscape product release plans • The community of volunteers and contributors employed by other companies than Netscape grew in strength and numbers from 2000 to 2002 mozilla 9 Tuesday, April 2, 13
  • 10. 2002-2003 • Mozilla 1.0 released in June 2002 • mozilla/browser, to be renamed Phoenix, then Firebird, was created • Dave Hyatt and I wrote a new roadmap advocating unbundling the “Mozilla suite” into browser, mail, and other apps, each doing one thing well, with fewer features and an “add-ons” architecture so users could customize at will • Mozilla downloads were at least as popular as Netscape product downloads • July 2003: AOL laid off almost all Netscape employees and created the Mozilla Foundation, giving it initial funding, trademarks, and the project’s infrastructure • Mozilla Foundation initial headcount: 10, with money for ~1.5 years mozilla 10 Tuesday, April 2, 13
  • 11. 2004 • The new roadmap split the community, with a bare majority supporting separate browser and mail apps • Firefox (renamed from Firebird) started rapid gains in market share and buzz • Focus on end-user usability, Windows integration over Linux, unusual for open source software • June 2004: Mozilla, Opera, and (not announced at first) Apple founded the WHATWG to create HTML5; I blogged about it and against the W3C • The rest is perhaps better-known history... mozilla 11 Tuesday, April 2, 13
  • 12. mozilla 12 Tuesday, April 2, 13
  • 13. Mozilla’s contributions: community • In the modern Firefox era, 30-40% of patches come from volunteers • ~700 volunteers contributing patches over a year (outsize impact) • Firefox 4 available in 82 locales and 74 languages, the work of many volunteers • ~50,000 nightly build testers • 5M beta testers in the Firefox 4 release cycle • 450M users mozilla 13 Tuesday, April 2, 13
  • 14. mozilla 14 Tuesday, April 2, 13
  • 15. mozilla 15 Tuesday, April 2, 13
  • 16. Bugzilla mozilla 16 Tuesday, April 2, 13
  • 17. Tinderbox, now “tinderboxpushlog” mozilla 17 Tuesday, April 2, 13
  • 18. Code review and testing • Code review before commit is required, in general • Large new modules may plead for post-commit review • No formal design review; important to catch design mistakes early • Code review of more, smaller patches landing early and often is best • Tests are required as part of the patch • Previously we lacked this rule and suffered lack of test coverage and (prior to 2006) even test automation mozilla • Valgrind [Nethercote, Seward] automated build test coverage 18 Tuesday, April 2, 13
  • 19. Fuzz-testing • jsfunfuzz, Jesse Ruderman’s JavaScript travesty generator, has been enormously productive • More productive than static analysis frameworks (Coverity, e.g.) • Knows JS syntax and some semantics, bends and break rules, nests constructs in evil ways • Extremely effective when steered by an expert who tracks new code and language features, senses soft spots and attacks them with targeted fuzzer logic... • Variations perform random DOM manipulation, markup generation, etc. mozilla 19 Tuesday, April 2, 13
  • 20. Automatic program analysis • Collaboration with UCB project Oink, ultimately forked as Mozilla Pork, for: • experiments with automatic patch generation • Second-generation analysis tools based on the GNU C Compiler (GCC): • dxr, a semantic source code cross-referencer • Dehydra, a scriptable static analysis tool (GCC plugin) • Treehydra, heavy-duty static analysis version of Dehydra (binds to JS reflection of GCC’s GIMPLE AST representation) mozilla 20 Tuesday, April 2, 13
  • 21. Brian Hackett’s Sixgill mozilla 21 Tuesday, April 2, 13
  • 22. Mozilla Research founded in 2009. 2010 for sure! • "Distrust any enterprise that requires new clothes." - Thoreau • I met Andreas Gal in 2006. New clothes came in time for Firefox OS (2013) • mozilla 22 Tuesday, April 2, 13
  • 23. Rust and Servo mozilla 23 Tuesday, April 2, 13
  • 24. Blast from the past mozilla 24 Tuesday, April 2, 13
  • 25. nbody.rs mozilla 25 Tuesday, April 2, 13
  • 26. Rust performance results (nbody) mozilla 26 Tuesday, April 2, 13
  • 27. Latest and greatest mozilla 27 Tuesday, April 2, 13
  • 28. mozilla 28 Tuesday, April 2, 13
  • 29. Mozilla Research in 2013 mozilla 29 Tuesday, April 2, 13
  • 30. The big picture • We at Mozilla like formal methods and invest in them, but incrementally. • Fielding a competitive browser/OS entails use of unsafe languages such as C and C++. • Being safe but so slow you lose users does not help. • Manycore and security challenges motivate pragmatic and hybrid methods • Art + Science require many hands at all layers of the system. Not all are ready for formal methods • “Ruby is not used for software engineering reasons”, rather for aesthetic and programmer productivity reasons. A human thing, so a software thing mozilla 30 Tuesday, April 2, 13
  • 31. Where we are all headed • When Mozilla began, CVS was the state of the art in open source version control • Since then (see http://revctrl.org/), distributed peer-to-peer version control systems have emerged and gained widespread use • 15 years ago, forking was a dire thing, to be avoided; “branches” were costly and unmaintainable in parallel for very long • Now with DVCSes such as Git and Mercurial, forking is not always a bad thing, and often a good thing • We are increasingly using http://github.com/, for “social hacking” wins mozilla 31 Tuesday, April 2, 13
  • 32. Closing thoughts • Open source and distributed development on the rise. Unsound humans FTW! • Formal methods for verifying correctness are coming along, but I see two large gaps to close: • Between the github.com world of JS, Ruby, etc., and Mozilla’s C++ and Rust systems programming languages. Contracts, gradual typing, compilers such as TypeScript? • Between kernel languages we use at large scale, and the sound but hard-to- scale verification systems used on, e.g., device drivers (SLAM) -- never mind the metalogical frameworks! mozilla 32 Tuesday, April 2, 13
  • 33. Thanks, and keep Researching! mozilla 33 Tuesday, April 2, 13