[Done] Redesigning preferences dialog

Various discussions related to Adblock Plus development
Wladimir Palant

[Done] Redesigning preferences dialog

Post by Wladimir Palant »

As I mentioned before, I think that the preferences dialog in its current form is too complicated and sets the wrong accents. I would like to redesign it after Adblock Plus 1.3 release, the change proposals are listed below. As usually, comments, suggestions and constructive criticism are welcome.

1. Split up subscriptions and custom filters

Rationale: The overwhelming majority of Adblock Plus users no longer deals with filters. The question is rather: "which filter subscription am I subscribed to?" The preferences dialog currently tries to present too much information in small space which is very confusing. Further, functionality in the preferences dialog menu isn't very discoverable, people rarely look there for things they need.

Proposal: As much as I dislike tabbed interfaces, I think that it is a better solution in this case. Have one tab centered on subscriptions and another for filters (custom filters - the only ones people usually care about). Move global actions (the ones that apply to the entire list rather than a particular entry) from menu into a toolbar inside the tab and remove the menu. The Help menu should move to the ABP icon menu where it should be easier to find (that's the menu that people who do something with Adblock Plus actually use).

Filter subscriptions tab:

Image

In its initial form this list is very simple. It displays the necessary information for a filter subscription: title, homepage (will need a new "special" comment in the subscription) and link to the actual filters file. Below info on the last download and sometimes one more line - if a newer Adblock Plus version is required for this subscription.

Currently we have two global subscription actions but "Update all subscriptions" need to be removed IMHO - I see no reason somebody should use it rather than right-clicking a specific subscription and updating it from the context menu.

The "Actions" button is really only another way to open the context menu, makes it more discoverable. The context menu items should be mostly the same as now: Edit subscription, Update subscription filters, Remove subscription, Move up, Move down. One additional item: Show filters. When checked a list of filters will be displayed below this subscription, with the usual columns (Filter rule, Hits etc). By default the filters shouldn't be displayed however.

Custom filters tab:

Image

This is pretty much the filter list we have now only that subscriptions are no longer included. A lot more global actions here and the good thing: it is obvious that Remove all, Import and Export only apply to custom filters, no further explanation needed.

Opening from list of blockable items:

"Edit filter in effect" in the list of blockable items should continue working mostly as it does now. If it is invoked for user's own filter the preferences dialog should open with "Custom filters" tab selected. If the filter can only be found in subscriptions, "Filter subscriptions" tab should be selected and filters for the subscription this filter belongs to displayed.

2. Remove options

Rationale: Options are currently duplicated between ABP icon and preferences. In the preferences they are not very discoverable (in the menu) and it is not immediately obvious that they are not dialog options but rather global Adblock Plus options. Finally, they just seem out of place in this dialog - added back when it was considered the one and only point to manage Adblock Plus.

Proposal: Remove options from the preferences dialog, only keep the ones in the ABP icon menu. As the mockups above already indicate, the dialog should be renamed into Adblock Plus Filter Preferences. There should be no reason to keep a Tools menu entry for it. However, an informational message along the lines of "More Adblock Plus options are available by right-clicking ABP icon" in the preferences dialog might be a good idea (dismissable, once dismissed the message should no longer show up).

There is a slight complication: what if the user hides the toolbar icon? So far the only way to bring it back is via preferences dialog. I think the solution is to remove "Show in toolbar" option in applications that allow toolbar customization (especially Firefox). The user can remove the toolbar icon by customizing the toolbar - and get it back the way. For applications where the toolbar is not customizable (e.g. SeaMonkey) the option needs to be kept but unchecking both "Show in toolbar" and "Show in status bar" should not be possible - at least one of the icons needs to be displayed.

3. Apply changes immediately

Rationale: The temporary copy of all filters that the preferences dialog is currently working on adds much to the complexity of the implementation. The users on the other hand don't seem to appreciate it - they are regularly confused that clicking OK is required to make changes apply, just closing the dialog won't do it.

Proposal: Apply all changes immediately. Replace OK/Apply/Cancel buttons by a single Close button - it won't do anything other than closing the dialog because all changes have been saved already.

Some way to undo accidental changes is still required. However, I think that proper undo functionality shouldn't be too hard to implement if changes are applied immediately. This would probably mean Undo/Redo buttons in the toolbar of each tab, they would only apply to this tab then. E.g. Undo button in Custom filters tab would undo filter changes but won't touch filter subscriptions.

It might be possible to also store some limited number of changes that happened before the user opened preference dialog and allow undoing them as well. So e.g. if the user added a filter via filter composer and regrets it now he could open preferences dialog, switch to Custom filters tab and click Undo there. However, this looks rather backwards to me and not worth the effort. Instead some more obvious way to undo such actions should be implemented.

4. Expose backup functionality

Rationale: Adblock Plus automatically creates backups of your filter list but almost nobody knows that. Instead people tend to use Export custom filters functionality which isn't very suitable for backup - and they ask me to extend it so that it would save more information.

Proposal: The only reason why backup functionality isn't currently exposed is that the temporary filter list that the preferences dialog works on makes the implementation complicated. However, if the preferences dialog starts to apply changes immediately this functionality becomes a no-brainer.

Image

The idea is to show a Backup button in the lower left corner of the dialog, opposite to Close. When clicked it would show a menu as indicated in the mockup above. You could then restore any of the automatically created backups as well as create a copy of your patterns.ini file in a custom location and restore it later.

5. User-defined groups for custom filters

Rationale: Users with many filters and especially filter subscription authors want more flexibility when organizing their filters. In the past I had to deny requests for user-defined groups because of the preferences dialog already being overly complex.

Proposal: Add an additional button to the toolbar in Custom filters tab: "Add filter group". This would add a new group without specialization - any filters can be created in or moved to this group. The decision about default groups is somewhat more complicated, it probably doesn't make sense to keep the strict specialization as we have it now. I think a default group would still be created if there is no group to add a new filter to (no user-defined groups around and existing default groups aren't specialized in that type of filter). However, after that the group should still accept any filter if it is moved into it or created there. And of course renaming default groups should be possible then.

With the structure becoming more complicated here Export and Import need to change. I don't want to break backwards compatibility there so the solution should be some special comments that mark the start of a group. Export would create such comments automatically and import would use them to decide which group to put the filters into. Worth considering: export/import some groups only.

6. Relax requirements on filter uniqueness

Rationale: The current requirement that a custom filter can only exist once in the list already creates problems with comments. If user-defined groups are implemented this will become an issue for normal filters as well, users might want to have the same filter in different groups.

Proposal: Allow comments to be used any number of times. As to the other filters, these should be unique in a group but it should be possible to use the same filter in any number of groups. The actual behavior depends on the way the user insert the filter. If the new filter is specified at the top of the list (outside any groups, inside the temporary "New filter" group) the behavior should be unchanged - entering a filter that already exists should select this filter. When inserting the filter into a list however the existing filter should only be selected if it exists in the same group. Otherwise it should be added as usually.

This (and proposal 5) will require changes to some Adblock Plus internals - notifications about added filters currently only specify the filter but not the group it is added to since that group was non-ambiguous anyway. Quite a bit of code will need to change here.
alberto
Posts: 65
Joined: Sun Jul 12, 2009 10:58 am

Re: Redesigning preferences dialog

Post by alberto »

The proposal looks great!
Just wondering if the user-defined groups (point 5) and changes to filter uniqueness (point 6) features will increase the effort to provide support for Firefox Sync. Presumably there has to be a unique ID / primary key to sync entries?
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

I spoke to the Sync guys about this at the Mozilla Summit this summer and they think that syncing each filter individually (and assigning a unique GUID to it) is unnecessarily complicated. When speaking about the amounts of data Adblock Plus deals with (a few hundred kB at most) it is better to sync all data in one single blob and do the merging "manually". That's the approach I want to try for Adblock Plus 1.3, there should be no additional effort for user-defined groups.
Alan
Posts: 289
Joined: Sat Feb 10, 2007 8:47 pm
Location: Colorado, USA

Re: Redesigning preferences dialog

Post by Alan »

This looks great, Wladimir.
Wladimir Palant wrote:Currently we have two global subscription actions but "Update all subscriptions" need to be removed IMHO - I see no reason somebody should use it rather than right-clicking a specific subscription and updating it from the context menu.
"Update all subscriptions" is the most common action I make from the preferences dialog. Whenever I run across an ad which isn't blocked or find a false positive, I update all the subscriptions and retest before making a report to the subscription author(s). I suppose most users don't bother manually updating their subscriptions at all, but for those of us who do, I expect that ensuring all the subscriptions are current may be more common than just wanting to update just one.
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

Alan, how many subscriptions are we talking about? Putting "Update all subscriptions" there as a global action would make it too prominent and encourage clicking on it all the time, just in case. Maybe put it into the context menu even though it would be misplaced there...
Michael
Posts: 1361
Joined: Sat Dec 19, 2009 12:29 pm

Re: Redesigning preferences dialog

Post by Michael »

I think that the filter subscriptions tab should at least have an option that updates all subscriptions, as that is the action is most commonly advised when a problem is reported in the forums and tends to resolve issues on major websites.
Wladimir Palant wrote:Allow comments to be used any number of times.
Will the changes to the comments allow them to be moved between groups?
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

With this proposal moving *any* filter between groups will be possible - meaning comments as well.
User avatar
fanboy
Posts: 3446
Joined: Sun Jun 17, 2007 4:45 am
Contact:

Re: Redesigning preferences dialog

Post by fanboy »

How about indenting subscriptions that complement (ie, depend on the main list)

Code: Select all

> Main sub
  > Regional A
  > Regional B
  > ....
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

Sorry, Adblock Plus doesn't currently have that info - and getting/storing it would be out of scope, it complicates things a lot.

We can show a filter list description however, taken from another special comment. Something like that:

Code: Select all

[Adblock Plus 1.1]
! Homepage: http://example.com/
! Description: Extends EasyList to block everything
! This comment will not be displayed
*
The description will be displayed on a single line - if it is too long it will be cropped. Should be a good incentive to keep it short ;)
Alan
Posts: 289
Joined: Sat Feb 10, 2007 8:47 pm
Location: Colorado, USA

Re: Redesigning preferences dialog

Post by Alan »

Wladimir Palant wrote:Alan, how many subscriptions are we talking about? Putting "Update all subscriptions" there as a global action would make it too prominent and encourage clicking on it all the time, just in case. Maybe put it into the context menu even though it would be misplaced there...
I use either two or three subscriptions, depending on which set of lists I'm testing.
Subscription test set one: EasyList & EasyPrivacy
Subscription test set two: fanboy-adblock & fanboy-annoyances-adblock & fanboy-stats-adblock

I agree that putting "Update all subscriptions" there as a global action might make it too prominent and encourage clicking on it all the time, but I think it would be misplaced in the context menu. It is a global action currently. Has that become problematic? In any event, I don't care where you put it since I always use Ctrl+Shift+T instead of the menu.
Matthias

Re: Redesigning preferences dialog

Post by Matthias »

At first i was a bit worried about removing the options dialogue from the extras-menu because I really don't like toolbar icons. But I think there is a way for you to remove it. If my add-ons are representative, the options dialogue usually has its place at the add-ons manager. As far as I think back, most extensions had it there and probably most browsers do. As I said, I don't use any extra toolbar icons than the default ones but I guess it's not a bad idea to just remove it from the extras menu and just leave the options dialogue to be found at the toolbar icon and in the add-ons manager which, from my understanding, should be the central place to manage and configure any add-on options.

Cheers,
Matthias
User avatar
fanboy
Posts: 3446
Joined: Sun Jun 17, 2007 4:45 am
Contact:

Re: Redesigning preferences dialog

Post by fanboy »

Okay, more suggestions,..

When you update (the > icon changes..to show its updating.. you know visually show its doing something).

Also, if you hover over a subscription, it'll tell give you infomation on when it was last updated. (Maybe a date and how many days ago it was updated last)

An error log would also be handy, if something fails to update, any historic issues etc..etc
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

fanboy, the download date is there in the mockup - it should be displayed in the list, no tooltips necessary. Currently the download date changes into "Downloading..." when a download is in progress, I guess an icon is possible as well.

Error log - doubt that it is really useful. Do you care that a download failed two weeks ago if it succeeded yesterday?
User avatar
fanboy
Posts: 3446
Joined: Sun Jun 17, 2007 4:45 am
Contact:

Re: Redesigning preferences dialog

Post by fanboy »

Wladimir Palant wrote:fanboy, the download date is there in the mockup - it should be displayed in the list, no tooltips necessary. Currently the download date changes into "Downloading..." when a download is in progress, I guess an icon is possible as well.

Error log - doubt that it is really useful. Do you care that a download failed two weeks ago if it succeeded yesterday?
Tooltips would be handy (showing the updates etc), avoids expanded the list just to find out ..just avoiding unnecessary mouse clicks
Wladimir Palant

Re: Redesigning preferences dialog

Post by Wladimir Palant »

Typical users shouldn't have more then two or three subscriptions so we can be wasteful as space goes (your case is anything but typical, sorry). And last update time is probably the most important information there.

Edit: Maybe this wasn't clear from the mockup - subscriptions are a plain list. No expanding there, all the information is always visible. The only thing that is displayed on demand only is the filters.
Locked