2. Browser extensions - why bother?
● Fact: users have short attention spans
● Extensions can be contextual
● Extensions can be unobtrusive
● Extra functionality
○ Add buttons to and extend browser chrome
○ Run tasks in the background
○ Modify pages you visit
○ Access browser history, storage
3. Anatomy of an Extension
● Background page
○ Can modify browser chrome
● Content scripts
● Extension page (in Chrome, optional)
● Use message passing to talk to each other
4. Extension APIs
● Chrome
○ Up to date, comprehensive, with examples
● Firefox
○ Multiple versions: native, Jetstrap, C++ - defaults to
Mongolian, obvious things hard to do
● Opera
○ Docs non-existent, Opera.Next
● IE - BHO, COM, ATL
5. Dev Tools
● Chrome
○ DevTools, filesystem, local deployment
● Firefox
○ builder.addons.mozilla.org, cfx
● Opera
○ Drag config.xml into browser
6. Deployment
● Chrome
○ CRX, upload ZIP to Chrome Web Store
● Firefox
○ cfx, upload XPI to addons.mozilla.org
● Opera
○ upload ZIP to addons.opera.com
7. Review Process & Updates
● Chrome
○ No review process
○ Updates available to all users within a day automatically
● Firefox
○ Human reviews, takes ~10 days
○ Updates have to be done manually by users
● Opera
○ Human reviews, takes two weeks or more
○ Update mechanism unclear
8. Distribution
● Chrome
○ Dashboard shows stats + number of current installs,
GA, ratings/reviews/keywords drive traffic
● Firefox
○ Dashboard shows stats + number of current installs,
little traffic, locale defaults to Mongolian
● Opera
○ No stats, can’t search by name, indexed by Google
9. Examples
● Meetin.gs
○ content script injects Meet Me buttons
○ watches for DOM mutations
○ pulls data out of page with CSS selectors
● StartHQ
○ replaces new tab page
○ populates launcher based on browsing history
○ ...