SlideShare uma empresa Scribd logo
1 de 97
Baixar para ler offline
Software Engineering and Open Source

           (A few things I have learned doing Mozilla since 1998)

           Brendan Eich <brendan@mozilla.org>




                                                                    mozilla

           1


Friday, April 29, 2011
Happy to be here!




                               mozilla

           2


Friday, April 29, 2011
Agenda

           • Problem statement


           • Mozilla’s history and contributions


           • The big picture


           • Where we are all headed




                                                   mozilla

           3


Friday, April 29, 2011
Problem statement




                               mozilla

           4


Friday, April 29, 2011
Problem statement

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




                                                                              mozilla

           4


Friday, April 29, 2011
Problem statement

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


           • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011




                                                                              mozilla

           4


Friday, April 29, 2011
Problem statement

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


           • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011


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




                                                                                              mozilla

           4


Friday, April 29, 2011
Problem statement

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


           • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011


                 • “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




                                                                                               mozilla

           4


Friday, April 29, 2011
Problem statement

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


           • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011


                 • “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

           4


Friday, April 29, 2011
The scale problem is worse over time




                                                  mozilla

           5


Friday, April 29, 2011
The scale problem is worse over time

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




                                                                                      mozilla

           5


Friday, April 29, 2011
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...




                                                                                      mozilla

           5


Friday, April 29, 2011
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


Friday, April 29, 2011
Mozilla’s history: 1998




                                     mozilla

           6


Friday, April 29, 2011
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




                                                                                     mozilla

           6


Friday, April 29, 2011
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




                                                                                      mozilla

           6


Friday, April 29, 2011
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




                                                                                      mozilla

           6


Friday, April 29, 2011
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




                                                                                      mozilla

           6


Friday, April 29, 2011
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




                                                                                      mozilla

           6


Friday, April 29, 2011
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


Friday, April 29, 2011
The beginner’s error: rewrite!




                                            mozilla

           7


Friday, April 29, 2011
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




                                                                                         mozilla

           7


Friday, April 29, 2011
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


Friday, April 29, 2011
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


Friday, April 29, 2011
2001-2002




                         mozilla

           9


Friday, April 29, 2011
2001-2002

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




                                                                                      mozilla

           9


Friday, April 29, 2011
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

           9


Friday, April 29, 2011
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




                                                                                            mozilla

           9


Friday, April 29, 2011
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




                                                                                            mozilla

           9


Friday, April 29, 2011
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


Friday, April 29, 2011
2002-2003




                         mozilla

           10


Friday, April 29, 2011
2002-2003

           • Mozilla 1.0 released in June 2002




                                                 mozilla

           10


Friday, April 29, 2011
2002-2003

           • Mozilla 1.0 released in June 2002


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




                                                                                  mozilla

           10


Friday, April 29, 2011
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

           10


Friday, April 29, 2011
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




                                                                                        mozilla

           10


Friday, April 29, 2011
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

           10


Friday, April 29, 2011
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


Friday, April 29, 2011
2004




                         mozilla

           11


Friday, April 29, 2011
2004

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




                                                                                    mozilla

           11


Friday, April 29, 2011
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




                                                                                       mozilla

           11


Friday, April 29, 2011
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




                                                                                       mozilla

           11


Friday, April 29, 2011
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




                                                                                        mozilla

           11


Friday, April 29, 2011
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


Friday, April 29, 2011
mozilla

           12


Friday, April 29, 2011
Mozilla’s contributions: community




                                                mozilla

           13


Friday, April 29, 2011
Mozilla’s contributions: community

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




                                                                                 mozilla

           13


Friday, April 29, 2011
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)




                                                                                 mozilla

           13


Friday, April 29, 2011
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




                                                                                       mozilla

           13


Friday, April 29, 2011
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




                                                                                       mozilla

           13


Friday, April 29, 2011
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




                                                                                       mozilla

           13


Friday, April 29, 2011
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


Friday, April 29, 2011
mozilla

           14


Friday, April 29, 2011
mozilla

           15


Friday, April 29, 2011
Bugzilla




                         mozilla

           16


Friday, April 29, 2011
Tinderbox, now “tinderboxpushlog”




                                               mozilla

           17


Friday, April 29, 2011
Code review and testing




                                     mozilla

           18


Friday, April 29, 2011
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




                                                                                          mozilla

           18


Friday, April 29, 2011
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


Friday, April 29, 2011
Fuzz-testing




                          mozilla

           19


Friday, April 29, 2011
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...



                                                                                         mozilla

           19


Friday, April 29, 2011
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


Friday, April 29, 2011
Automatic program analysis




                                        mozilla

           20


Friday, April 29, 2011
Automatic program analysis

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


                 • experiments with automatic patch generation




                                                                                        mozilla

           20


Friday, April 29, 2011
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


Friday, April 29, 2011
Brian Hackett’s Sixgill




                                     mozilla

           21


Friday, April 29, 2011
Rust and Project Servo




                                    mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++




                                                                                    mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++


                    • Rust is a multi-paradigm, compiled language focused on safety, efficiency,
                      programming-in-the-large, and a high degree of concurrency




                                                                                          mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++


                    • Rust is a multi-paradigm, compiled language focused on safety, efficiency,
                      programming-in-the-large, and a high degree of concurrency


                • Research building parallel browser engine stages in Rust




                                                                                          mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++


                    • Rust is a multi-paradigm, compiled language focused on safety, efficiency,
                      programming-in-the-large, and a high degree of concurrency


                • Research building parallel browser engine stages in Rust


                • Experiment with Andreas Gal’s DOM implemented in JavaScript




                                                                                          mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++


                    • Rust is a multi-paradigm, compiled language focused on safety, efficiency,
                      programming-in-the-large, and a high degree of concurrency


                • Research building parallel browser engine stages in Rust


                • Experiment with Andreas Gal’s DOM implemented in JavaScript


                • For a scalably-faster-on-manycore, much safer Browser from the Future




                                                                                          mozilla

           22


Friday, April 29, 2011
Rust and Project Servo
                • A new, safer systems programming language, Rust, instead of C++


                    • Rust is a multi-paradigm, compiled language focused on safety, efficiency,
                      programming-in-the-large, and a high degree of concurrency


                • Research building parallel browser engine stages in Rust


                • Experiment with Andreas Gal’s DOM implemented in JavaScript


                • For a scalably-faster-on-manycore, much safer Browser from the Future


                • Rust is good for Servers and other Software from the Future, too


                                                                                          mozilla

           22


Friday, April 29, 2011
nbody.rs




                         mozilla

           23


Friday, April 29, 2011
Rust performance results (nbody)




                                              mozilla

           24


Friday, April 29, 2011
fannkuchredux.rs




                              mozilla

           25


Friday, April 29, 2011
Rust performance results (fannkuchredux)

           • Within 2x (much more to do) of clang optimized performance, with safety




                                                                                       mozilla

           26


Friday, April 29, 2011
The big picture




                             mozilla

           27


Friday, April 29, 2011
The big picture

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

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


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




                                                                                                    mozilla

           27


Friday, April 29, 2011
The big picture

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

                 • Fielding a competitive browser still 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




                                                                                                    mozilla

           27


Friday, April 29, 2011
The big picture

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

                 • Fielding a competitive browser still 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 + Engineering require many hands at all layers of the system. Not all are
             ready for formal methods.




                                                                                                    mozilla

           27


Friday, April 29, 2011
The big picture

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

                 • Fielding a competitive browser still 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 + Engineering require many hands at all layers of the system. Not all are
             ready for formal methods.


           • Jeremy Ashkenas: “Ruby is not used for software engineering reasons”, rather
             for aesthetic and programmer productivity reasons
                                                                                                    mozilla

           27


Friday, April 29, 2011
Where we are all headed




                                     mozilla

           28


Friday, April 29, 2011
Where we are all headed

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




                                                                                      mozilla

           28


Friday, April 29, 2011
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




                                                                                              mozilla

           28


Friday, April 29, 2011
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




                                                                                              mozilla

           28


Friday, April 29, 2011
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




                                                                                              mozilla

           28


Friday, April 29, 2011
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/, a Git-based “social hacking” site

                                                                                              mozilla

           28


Friday, April 29, 2011
mozilla

           29


Friday, April 29, 2011
mozilla

           30


Friday, April 29, 2011
mozilla

           31


Friday, April 29, 2011
mozilla

           32


Friday, April 29, 2011
mozilla

           33


Friday, April 29, 2011
mozilla

           34


Friday, April 29, 2011
mozilla

           35


Friday, April 29, 2011
Conclusions




                         mozilla

           36


Friday, April 29, 2011
Conclusions

           • Open source and distributed development obviously on the rise. Synergies
             between the two for social hacking, scaling up projects, recruiting new
             employees, and even partnering, all favor more open source and distributed
             development




                                                                                     mozilla

           36


Friday, April 29, 2011
Conclusions

           • Open source and distributed development obviously on the rise. Synergies
             between the two for social hacking, scaling up projects, recruiting new
             employees, and even partnering, all favor more open source and distributed
             development


           • Formal methods for verifying correctness, static and dynamic, are coming, but
             there are two large gaps to close:


                 • Between the github.com world of JS, Ruby, etc., and Mozilla’s C++ and Rust
                   systems programming “kernel languages”. Contracts, gradual typing?


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

                                                                                        mozilla

           36


Friday, April 29, 2011

Mais conteúdo relacionado

Destaque

Marathon Man Scalp/Neck Abscess Follow-Up!
Marathon Man Scalp/Neck Abscess Follow-Up!Marathon Man Scalp/Neck Abscess Follow-Up!
Marathon Man Scalp/Neck Abscess Follow-Up!John Gilmore
 
Презентация ГК "Налоги и право"
Презентация ГК "Налоги и право"Презентация ГК "Налоги и право"
Презентация ГК "Налоги и право"Наталья Лосева
 
Pitch Camp: Writers Workshop 2015
Pitch Camp: Writers Workshop 2015Pitch Camp: Writers Workshop 2015
Pitch Camp: Writers Workshop 2015M.J. D'Elia
 
Sources de trafic site internet
Sources de trafic site internetSources de trafic site internet
Sources de trafic site internetohmyweb!
 
Evaluation Question 1 Azza Essakhi updated
Evaluation Question 1 Azza Essakhi updatedEvaluation Question 1 Azza Essakhi updated
Evaluation Question 1 Azza Essakhi updatedk8azluke
 
Everything You Need To Know About Estate Planning
Everything You Need To Know About Estate PlanningEverything You Need To Know About Estate Planning
Everything You Need To Know About Estate Planningwardwilsey
 
factores del distanciamiento
factores del distanciamientofactores del distanciamiento
factores del distanciamientoJulieth
 
Raila's call for dialogue with uhuru
Raila's call for dialogue with uhuruRaila's call for dialogue with uhuru
Raila's call for dialogue with uhuruThe Star Newspaper
 
linkedinculturedeck-150310163928-conversion-gate01
linkedinculturedeck-150310163928-conversion-gate01linkedinculturedeck-150310163928-conversion-gate01
linkedinculturedeck-150310163928-conversion-gate01Nick Goldstein
 
Using biological network approaches for dynamic extension of micronutrient re...
Using biological network approaches for dynamic extension of micronutrient re...Using biological network approaches for dynamic extension of micronutrient re...
Using biological network approaches for dynamic extension of micronutrient re...Chris Evelo
 
Advertising Expenditure Audit: The Saving Matrix
Advertising Expenditure Audit: The Saving MatrixAdvertising Expenditure Audit: The Saving Matrix
Advertising Expenditure Audit: The Saving MatrixPaola Furlanetto
 
What Happens When You Don't Undo the Damage From Sitting?
What Happens When You Don't Undo the Damage From Sitting?What Happens When You Don't Undo the Damage From Sitting?
What Happens When You Don't Undo the Damage From Sitting?AiraWear
 

Destaque (20)

Marathon Man Scalp/Neck Abscess Follow-Up!
Marathon Man Scalp/Neck Abscess Follow-Up!Marathon Man Scalp/Neck Abscess Follow-Up!
Marathon Man Scalp/Neck Abscess Follow-Up!
 
Sandra perez
Sandra perezSandra perez
Sandra perez
 
Презентация ГК "Налоги и право"
Презентация ГК "Налоги и право"Презентация ГК "Налоги и право"
Презентация ГК "Налоги и право"
 
After the draft
After the draftAfter the draft
After the draft
 
Pitch Camp: Writers Workshop 2015
Pitch Camp: Writers Workshop 2015Pitch Camp: Writers Workshop 2015
Pitch Camp: Writers Workshop 2015
 
Cover page
Cover pageCover page
Cover page
 
Sources de trafic site internet
Sources de trafic site internetSources de trafic site internet
Sources de trafic site internet
 
Desarrollo Sustentable-en-Oaxaca
Desarrollo Sustentable-en-OaxacaDesarrollo Sustentable-en-Oaxaca
Desarrollo Sustentable-en-Oaxaca
 
Assignment
AssignmentAssignment
Assignment
 
Evaluation Question 1 Azza Essakhi updated
Evaluation Question 1 Azza Essakhi updatedEvaluation Question 1 Azza Essakhi updated
Evaluation Question 1 Azza Essakhi updated
 
Itil
ItilItil
Itil
 
Everything You Need To Know About Estate Planning
Everything You Need To Know About Estate PlanningEverything You Need To Know About Estate Planning
Everything You Need To Know About Estate Planning
 
factores del distanciamiento
factores del distanciamientofactores del distanciamiento
factores del distanciamiento
 
Raila's call for dialogue with uhuru
Raila's call for dialogue with uhuruRaila's call for dialogue with uhuru
Raila's call for dialogue with uhuru
 
linkedinculturedeck-150310163928-conversion-gate01
linkedinculturedeck-150310163928-conversion-gate01linkedinculturedeck-150310163928-conversion-gate01
linkedinculturedeck-150310163928-conversion-gate01
 
Using biological network approaches for dynamic extension of micronutrient re...
Using biological network approaches for dynamic extension of micronutrient re...Using biological network approaches for dynamic extension of micronutrient re...
Using biological network approaches for dynamic extension of micronutrient re...
 
Advertising Expenditure Audit: The Saving Matrix
Advertising Expenditure Audit: The Saving MatrixAdvertising Expenditure Audit: The Saving Matrix
Advertising Expenditure Audit: The Saving Matrix
 
What Happens When You Don't Undo the Damage From Sitting?
What Happens When You Don't Undo the Damage From Sitting?What Happens When You Don't Undo the Damage From Sitting?
What Happens When You Don't Undo the Damage From Sitting?
 
Trabajo tic
Trabajo ticTrabajo tic
Trabajo tic
 
Storyboard
StoryboardStoryboard
Storyboard
 

Semelhante a MSR Talk

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
 
Open Source and Open Standards for Information and Records Managers
Open Source and Open Standards for Information and Records ManagersOpen Source and Open Standards for Information and Records Managers
Open Source and Open Standards for Information and Records ManagersCheryl McKinnon
 
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
 
Free & Open Source Software (2017 update)
Free & Open Source Software (2017 update)Free & Open Source Software (2017 update)
Free & Open Source Software (2017 update)Frederik Questier
 
PLM & Market and Technology Trends
PLM & Market and Technology Trends PLM & Market and Technology Trends
PLM & Market and Technology Trends Oleg Shilovitsky
 
"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
 
오픈소스 스타트업 5년의 경험
오픈소스 스타트업 5년의 경험오픈소스 스타트업 5년의 경험
오픈소스 스타트업 5년의 경험"Il "Will"​" Yeo
 
Open Source Software and Libraries
Open Source Software and LibrariesOpen Source Software and Libraries
Open Source Software and LibrariesEllyssa Kroski
 
Introducing TensorFlow: The game changer in building "intelligent" applications
Introducing TensorFlow: The game changer in building "intelligent" applicationsIntroducing TensorFlow: The game changer in building "intelligent" applications
Introducing TensorFlow: The game changer in building "intelligent" applicationsRokesh Jankie
 
DotNetNuke – CMS redefined
DotNetNuke – CMS redefinedDotNetNuke – CMS redefined
DotNetNuke – CMS redefinedCharles Nurse
 
Perspectives on Open
Perspectives on OpenPerspectives on Open
Perspectives on OpenTim O'Reilly
 

Semelhante a MSR Talk (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
 
Open Source and Open Standards for Information and Records Managers
Open Source and Open Standards for Information and Records ManagersOpen Source and Open Standards for Information and Records Managers
Open Source and Open Standards for Information and Records Managers
 
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
 
Splash
SplashSplash
Splash
 
Free & Open Source Software (2017 update)
Free & Open Source Software (2017 update)Free & Open Source Software (2017 update)
Free & Open Source Software (2017 update)
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 
PLM & Market and Technology Trends
PLM & Market and Technology Trends PLM & Market and Technology Trends
PLM & Market and Technology Trends
 
Kraken '16 It quiz final
Kraken '16 It quiz finalKraken '16 It quiz final
Kraken '16 It quiz final
 
"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...
 
오픈소스 스타트업 5년의 경험
오픈소스 스타트업 5년의 경험오픈소스 스타트업 5년의 경험
오픈소스 스타트업 5년의 경험
 
Mozilla & Connected Devices
Mozilla & Connected DevicesMozilla & Connected Devices
Mozilla & Connected Devices
 
Unix.pptx
Unix.pptxUnix.pptx
Unix.pptx
 
Open Source Software and Libraries
Open Source Software and LibrariesOpen Source Software and Libraries
Open Source Software and Libraries
 
FLOSS & OER
FLOSS & OERFLOSS & OER
FLOSS & OER
 
Introducing TensorFlow: The game changer in building "intelligent" applications
Introducing TensorFlow: The game changer in building "intelligent" applicationsIntroducing TensorFlow: The game changer in building "intelligent" applications
Introducing TensorFlow: The game changer in building "intelligent" applications
 
DotNetNuke – CMS redefined
DotNetNuke – CMS redefinedDotNetNuke – CMS redefined
DotNetNuke – CMS redefined
 
AudioSIG28Nov2011
AudioSIG28Nov2011AudioSIG28Nov2011
AudioSIG28Nov2011
 
FLOSS development
FLOSS developmentFLOSS development
FLOSS development
 
about:labs
about:labsabout:labs
about:labs
 
Perspectives on Open
Perspectives on OpenPerspectives on Open
Perspectives on Open
 

Mais de Brendan 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
 
Extensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptExtensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptBrendan Eich
 
The Same-Origin Saga
The Same-Origin SagaThe Same-Origin Saga
The Same-Origin SagaBrendan 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
 
JS Responsibilities
JS ResponsibilitiesJS Responsibilities
JS ResponsibilitiesBrendan 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
 
Mozilla's NodeConf talk
Mozilla's NodeConf talkMozilla's NodeConf talk
Mozilla's NodeConf talkBrendan Eich
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!Brendan Eich
 

Mais de Brendan Eich (16)

Int64
Int64Int64
Int64
 
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
 
dotJS 2015
dotJS 2015dotJS 2015
dotJS 2015
 
Extensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScriptExtensible Operators and Literals for JavaScript
Extensible Operators and Literals for JavaScript
 
Fluent15
Fluent15Fluent15
Fluent15
 
The Same-Origin Saga
The Same-Origin SagaThe Same-Origin Saga
The Same-Origin Saga
 
Taysom seminar
Taysom seminarTaysom seminar
Taysom seminar
 
Fluent14
Fluent14Fluent14
Fluent14
 
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)
 
My dotJS Talk
My dotJS TalkMy dotJS Talk
My dotJS Talk
 
Web futures
Web futuresWeb futures
Web futures
 
JS Responsibilities
JS ResponsibilitiesJS Responsibilities
JS Responsibilities
 
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
 
Paren free
Paren freeParen free
Paren free
 
Mozilla's NodeConf talk
Mozilla's NodeConf talkMozilla's NodeConf talk
Mozilla's NodeConf talk
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!
 

MSR Talk

  • 1. Software Engineering and Open Source (A few things I have learned doing Mozilla since 1998) Brendan Eich <brendan@mozilla.org> mozilla 1 Friday, April 29, 2011
  • 2. Happy to be here! mozilla 2 Friday, April 29, 2011
  • 3. Agenda • Problem statement • Mozilla’s history and contributions • The big picture • Where we are all headed mozilla 3 Friday, April 29, 2011
  • 4. Problem statement mozilla 4 Friday, April 29, 2011
  • 5. Problem statement • Software, especially “in the large”, remains quite challenging mozilla 4 Friday, April 29, 2011
  • 6. Problem statement • Software, especially “in the large”, remains quite challenging • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011 mozilla 4 Friday, April 29, 2011
  • 7. Problem statement • Software, especially “in the large”, remains quite challenging • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011 • “I do not know of any other technology covering a ratio of 10^10.” - Dijkstra mozilla 4 Friday, April 29, 2011
  • 8. Problem statement • Software, especially “in the large”, remains quite challenging • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011 • “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 mozilla 4 Friday, April 29, 2011
  • 9. Problem statement • Software, especially “in the large”, remains quite challenging • “What makes code strange” - Jeremy Ashkenas, CodeConf 2011 • “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 4 Friday, April 29, 2011
  • 10. The scale problem is worse over time mozilla 5 Friday, April 29, 2011
  • 11. The scale problem is worse over time • Path dependence in any large codebase creates “lock-in” (see sunk cost fallacy) mozilla 5 Friday, April 29, 2011
  • 12. 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... mozilla 5 Friday, April 29, 2011
  • 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 Friday, April 29, 2011
  • 14. Mozilla’s history: 1998 mozilla 6 Friday, April 29, 2011
  • 15. 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 mozilla 6 Friday, April 29, 2011
  • 16. 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 mozilla 6 Friday, April 29, 2011
  • 17. 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 mozilla 6 Friday, April 29, 2011
  • 18. 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 mozilla 6 Friday, April 29, 2011
  • 19. 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 mozilla 6 Friday, April 29, 2011
  • 20. 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 Friday, April 29, 2011
  • 21. The beginner’s error: rewrite! mozilla 7 Friday, April 29, 2011
  • 22. 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 mozilla 7 Friday, April 29, 2011
  • 23. 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 Friday, April 29, 2011
  • 24. 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 Friday, April 29, 2011
  • 25. 2001-2002 mozilla 9 Friday, April 29, 2011
  • 26. 2001-2002 • After Netscape 6 flopped, Mitchell and I leveled the community playing field: mozilla 9 Friday, April 29, 2011
  • 27. 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 9 Friday, April 29, 2011
  • 28. 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 mozilla 9 Friday, April 29, 2011
  • 29. 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 mozilla 9 Friday, April 29, 2011
  • 30. 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 Friday, April 29, 2011
  • 31. 2002-2003 mozilla 10 Friday, April 29, 2011
  • 32. 2002-2003 • Mozilla 1.0 released in June 2002 mozilla 10 Friday, April 29, 2011
  • 33. 2002-2003 • Mozilla 1.0 released in June 2002 • mozilla/browser, to be renamed Phoenix, then Firebird, was created mozilla 10 Friday, April 29, 2011
  • 34. 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 10 Friday, April 29, 2011
  • 35. 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 mozilla 10 Friday, April 29, 2011
  • 36. 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 10 Friday, April 29, 2011
  • 37. 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 Friday, April 29, 2011
  • 38. 2004 mozilla 11 Friday, April 29, 2011
  • 39. 2004 • The new roadmap split the community, with a bare majority supporting separate browser and mail apps mozilla 11 Friday, April 29, 2011
  • 40. 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 mozilla 11 Friday, April 29, 2011
  • 41. 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 mozilla 11 Friday, April 29, 2011
  • 42. 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 mozilla 11 Friday, April 29, 2011
  • 43. 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 Friday, April 29, 2011
  • 44. mozilla 12 Friday, April 29, 2011
  • 45. Mozilla’s contributions: community mozilla 13 Friday, April 29, 2011
  • 46. Mozilla’s contributions: community • In the modern Firefox era, 30-40% of patches come from volunteers mozilla 13 Friday, April 29, 2011
  • 47. 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) mozilla 13 Friday, April 29, 2011
  • 48. 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 mozilla 13 Friday, April 29, 2011
  • 49. 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 mozilla 13 Friday, April 29, 2011
  • 50. 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 mozilla 13 Friday, April 29, 2011
  • 51. 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 Friday, April 29, 2011
  • 52. mozilla 14 Friday, April 29, 2011
  • 53. mozilla 15 Friday, April 29, 2011
  • 54. Bugzilla mozilla 16 Friday, April 29, 2011
  • 55. Tinderbox, now “tinderboxpushlog” mozilla 17 Friday, April 29, 2011
  • 56. Code review and testing mozilla 18 Friday, April 29, 2011
  • 57. 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 mozilla 18 Friday, April 29, 2011
  • 58. 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 Friday, April 29, 2011
  • 59. Fuzz-testing mozilla 19 Friday, April 29, 2011
  • 60. 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... mozilla 19 Friday, April 29, 2011
  • 61. 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 Friday, April 29, 2011
  • 62. Automatic program analysis mozilla 20 Friday, April 29, 2011
  • 63. Automatic program analysis • Collaboration with UCB project Oink, ultimately forked as Mozilla Pork, for: • experiments with automatic patch generation mozilla 20 Friday, April 29, 2011
  • 64. 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 Friday, April 29, 2011
  • 65. Brian Hackett’s Sixgill mozilla 21 Friday, April 29, 2011
  • 66. Rust and Project Servo mozilla 22 Friday, April 29, 2011
  • 67. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ mozilla 22 Friday, April 29, 2011
  • 68. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ • Rust is a multi-paradigm, compiled language focused on safety, efficiency, programming-in-the-large, and a high degree of concurrency mozilla 22 Friday, April 29, 2011
  • 69. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ • Rust is a multi-paradigm, compiled language focused on safety, efficiency, programming-in-the-large, and a high degree of concurrency • Research building parallel browser engine stages in Rust mozilla 22 Friday, April 29, 2011
  • 70. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ • Rust is a multi-paradigm, compiled language focused on safety, efficiency, programming-in-the-large, and a high degree of concurrency • Research building parallel browser engine stages in Rust • Experiment with Andreas Gal’s DOM implemented in JavaScript mozilla 22 Friday, April 29, 2011
  • 71. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ • Rust is a multi-paradigm, compiled language focused on safety, efficiency, programming-in-the-large, and a high degree of concurrency • Research building parallel browser engine stages in Rust • Experiment with Andreas Gal’s DOM implemented in JavaScript • For a scalably-faster-on-manycore, much safer Browser from the Future mozilla 22 Friday, April 29, 2011
  • 72. Rust and Project Servo • A new, safer systems programming language, Rust, instead of C++ • Rust is a multi-paradigm, compiled language focused on safety, efficiency, programming-in-the-large, and a high degree of concurrency • Research building parallel browser engine stages in Rust • Experiment with Andreas Gal’s DOM implemented in JavaScript • For a scalably-faster-on-manycore, much safer Browser from the Future • Rust is good for Servers and other Software from the Future, too mozilla 22 Friday, April 29, 2011
  • 73. nbody.rs mozilla 23 Friday, April 29, 2011
  • 74. Rust performance results (nbody) mozilla 24 Friday, April 29, 2011
  • 75. fannkuchredux.rs mozilla 25 Friday, April 29, 2011
  • 76. Rust performance results (fannkuchredux) • Within 2x (much more to do) of clang optimized performance, with safety mozilla 26 Friday, April 29, 2011
  • 77. The big picture mozilla 27 Friday, April 29, 2011
  • 78. The big picture • We at Mozilla like formal methods and invest in them, but incrementally. • Fielding a competitive browser still entails use of unsafe languages such as C and C++. • Being safe but so slow you lose users does not help. mozilla 27 Friday, April 29, 2011
  • 79. The big picture • We at Mozilla like formal methods and invest in them, but incrementally. • Fielding a competitive browser still 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 mozilla 27 Friday, April 29, 2011
  • 80. The big picture • We at Mozilla like formal methods and invest in them, but incrementally. • Fielding a competitive browser still 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 + Engineering require many hands at all layers of the system. Not all are ready for formal methods. mozilla 27 Friday, April 29, 2011
  • 81. The big picture • We at Mozilla like formal methods and invest in them, but incrementally. • Fielding a competitive browser still 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 + Engineering require many hands at all layers of the system. Not all are ready for formal methods. • Jeremy Ashkenas: “Ruby is not used for software engineering reasons”, rather for aesthetic and programmer productivity reasons mozilla 27 Friday, April 29, 2011
  • 82. Where we are all headed mozilla 28 Friday, April 29, 2011
  • 83. Where we are all headed • When Mozilla began, CVS was the state of the art in open source version control mozilla 28 Friday, April 29, 2011
  • 84. 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 mozilla 28 Friday, April 29, 2011
  • 85. 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 mozilla 28 Friday, April 29, 2011
  • 86. 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 mozilla 28 Friday, April 29, 2011
  • 87. 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/, a Git-based “social hacking” site mozilla 28 Friday, April 29, 2011
  • 88. mozilla 29 Friday, April 29, 2011
  • 89. mozilla 30 Friday, April 29, 2011
  • 90. mozilla 31 Friday, April 29, 2011
  • 91. mozilla 32 Friday, April 29, 2011
  • 92. mozilla 33 Friday, April 29, 2011
  • 93. mozilla 34 Friday, April 29, 2011
  • 94. mozilla 35 Friday, April 29, 2011
  • 95. Conclusions mozilla 36 Friday, April 29, 2011
  • 96. Conclusions • Open source and distributed development obviously on the rise. Synergies between the two for social hacking, scaling up projects, recruiting new employees, and even partnering, all favor more open source and distributed development mozilla 36 Friday, April 29, 2011
  • 97. Conclusions • Open source and distributed development obviously on the rise. Synergies between the two for social hacking, scaling up projects, recruiting new employees, and even partnering, all favor more open source and distributed development • Formal methods for verifying correctness, static and dynamic, are coming, but there are two large gaps to close: • Between the github.com world of JS, Ruby, etc., and Mozilla’s C++ and Rust systems programming “kernel languages”. Contracts, gradual typing? • Between kernel languages we use at large scale, and the sound but hard to scale verification systems used on, e.g., device drivers (SLAM) mozilla 36 Friday, April 29, 2011