Adblock Plus:
Working on a successful extension
Wladimir Palant
Some facts on Adblock Plus
- Main purpose: blocking ads
- First release in January 2006
- Successor to the Adblock extension
- Most popular extension on addons.mozilla.org
- More than 5 million daily active users
Inner workings
- Hard work is done by the browser: content policies
- Decides, what should be blocked - filters
- Assists the user in filter creation and management
- Updates filter lists automatically
How does an extension get popular?
- I don't really know, only guessing
- Good idea
- Usable implementation
- Involving community
- Luck
- Wrong way: write once, update never
Why community?
- Somebody needs to spread the word
- Many more points of view
- Share responsibilities
- You won't stay with the project forever
Getting community feedback (1)
-
Addons.mozilla.org reviews
- Require registration
- Not supposed to be used for feedback
- No notifications about new reviews
- No way to get more information from user
-
Bugzilla
- Requires registration
- Confusing
- E-mail address visible to everybody
- Encourages one-to-one communication
Getting community feedback (2)
-
Mailing list
- Requires subscribing
- E-mail address visible to everybody
-
Blog
- Good for introducing upcoming changes
- Can be used to get community opinion
- Not suitable for longer discussions
Getting community feedback (3)
-
E-mail
- One-on-one communication
- Shows a face behind the project, more personal
- High pressure to answer
-
Forum
- Registration can be made optional
- Participation is easy
- Perfect for end-user support
- Hard to filter out valid bug reports
Developing in the open
- Source code is open - but only few will look at it
- Clean up and document code, encourage participation
- Announcements for new features
- Open discussion about changes
-
Publish useful development milestones
- Early feedback
- Testing of new functionality
Filtering feedback
- Everybody has an opinion
- A loud opinion isn't necessarily a good opinion
- Most participants in discussions are technically savvy, not representative
-
Important questions:
- How many users will benefit from this improvement?
- Which new problems or inconsistencies are introduced?
- How much development time is required?
- What is the maintaining cost of the feature?
- Keep an eye on support questions
User interface design for masses
- Early adopters like choice
- Average users hate having to choose
- Finding the right balance is hard
- Delegating decisions to users is not a good strategy
- Sane defaults are crucial, extension needs work out of the box
- Commonly required options should be easy to find
Options dialog example (1)
Options dialog example (2)
Providing localizations (1)
- People like extensions in their native language
-
Make sure extension can be fully translated
- Use DTD files and string bundle for all language-sensitive information
- No language-dependent information in icons
- Don't forget that other languages have different grammar (multiple plural forms, different word order, complex conjugation)
-
Make the work easier for localizers
Providing localizations (2) - babelzilla.org
Dealing with Mozilla bugs
- New Firefox version only comes out once a year
- Still, work-arounds shouldn't be permanent
- Report bugs as early as possible (use nightly builds)
-
Getting bugs fixed requires some effort
- Make sure it is a bug
- Create a minimized testcase
- Provide detailed steps to reproduce
- Find a regression range
- Locate the cause of the bug
- Test potential fixes
Security
- Most extension authors never have to deal with security issues
- When security vulnerabilities are published, it is bad both for the extension and Firefox
- Security issues should always be highest priority and never downplayed
- It is better to prevent security issues than to fix them
- Common problem sources: displaying remote content inside a chrome document (RSS readers), not validating data received from a web page, flawed update mechanisms
Questions?