Reading/Web/Desktop Improvements/Features/Table of contents

A main goal of the Desktop Improvements project is to make frequently used tools more accessible to readers and editors. One of the most crucial of these tools is the table of contents (ToC). This feature has two important roles. It gives information on the context and allows to navigate between pages.

Currently, the ToC is only available at the top of the page, limiting its usefulness. We plan to make it persistent, available throughout the page. Our goal is to make it easier for readers and editors to reach the ToC. We want to make it easier to gain context and navigate throughout the page without needing to scroll to the top.

Background and Goals
We would like the interface, including the navigation elements, to be easier to use. So far, we have built a collapsible sidebar and a sticky header. Now, we are preparing a new ToC.

Currently:


 * The current ToC is available only at the top of the page. It is difficult to regain context and navigate within the page without having to scroll all the way up
 * For pages with a long lead/intro section, the ToC is not visible until you scroll down a bit
 * Users use the ToC to create a mental model of the page. This is similar to the role of the introduction to the page.  Users learn what the page contains, how long may be, what parts may be the longest, etc.  This becomes lost without the ability to reference the ToC more frequently
 * The ToC creates a lot of unused space in the content area. That space could be used for displaying content and other functionality

The new, persistent table of contents will make it easier for readers to


 * Understand the context of the page
 * Navigate to different parts of the page without having to scroll to the top of the page every time they want to access the table of contents

Use Cases

 * As a reader or editor, I want the ability to gain context (content and structure) about the page I am about to read
 * As a reader or editor, I want the ability to reference the next few sections in the page at any location in the page so that I can choose what to read next
 * As a reader or editor, I want the ability know how many sections a page has without having to scroll all the way up

Feature description and requirements
The table of contents will appear persistently on one side of the page. It will contain all sections and sub-sections available in previous versions of the ToC.

The ToC will contain the following functionality:


 * Collapsible sub-sections - for users that only want to view the highest level of section heading
 * Section bolding - the section currently on the page will be displayed as bold. Users will be able to identify where on the page they are located by noting the bolding within the ToC
 * Navigation - selecting a section within the table of contents will navigate to the appropriate section within the page
 * For screen widths smaller than 1000px, the ToC will collapse and the section titles will be used as a ToC



Prototype
General ToC functionality: https://en-toc.wmcloud.org/wiki/Moon

Collapsible section functionality: https://di-toc-collapsible-sections.web.app/Aretha_Franklin

User Testing with Readers and Editors
We performed user testing of the table of contents with readers and editors. The tests took place in three locations (Argentina, Ghana, Indonesia) and different languages. The participants were asked to interact with different versions of a persistent table of contents. Their task was to give feedback on their preferred version. The test also included an open study of the way readers and editors saw and used the table of contents.

All users found the table of contents to be essential to the reading experience. They needed it for both navigational purposes as well as for setting the context for the page.

Main observations: Testers liked getting a sense of location within the page. They noted that additions like bolding the title or the section helped with their orientation
 * Testers preferred persistent access. Across all tests, the best prototype was the persistent one
 * Testers preferred having more information. Prototypes that contained all sections and subsections gained more positive opinions
 * Testers did not want the ToC to overlap the content. Even in the cases where it was supplementary to the main ToC at the top of the page

The results of the test were used to select the best prototype. Next, we worked on it to better fit the needs of the participants. See the full results of this test.

Prototype testing with editors
In December 2021, we performed prototype testing with logged-in users across 30 wikis. We designed the test to gather feedback on the usability and functionality of the table of contents. The majority of the feedback was positive. Most community members like the new location and functionality of the table of contents, and support the change.

Quantitative testing
We will be performing an A/B test of the functionality of the current versus new version of the table of contents.

Main questions:
 * 1) Is the new table of contents is used more frequently than the previous table of contents
 * 2) Does the new table of contents reduce the need to scroll back to the top of the page
 * 3) Does the new table of contents decrease the time people spend scrolling/scrolling quickly (if possible)
 * 4) How does the new table of contents affect the time spent on a page

FAQ
The table of contents feature is still in active development.

Why doesn't the table of contents doesn't work well on my mobile device or when I resize the browser?
Users on mobile and resized browsers account for a small fraction of page traffic, so because of this we prioritized building the feature for the majority of our users first. For narrow screens we plan to make the table of contents available as a sticky interface element that's accessible from anywhere in the page. This is being built as part of https://phabricator.wikimedia.org/T306660 with a current release date of early August 2022.

Note what is displayed to mobile devices differs from what you see when you resize your browser. On mobile devices, the site is currently presented as a zoomed out version of the desktop site.

Why can't I collapse the table of contents?
The feature is still in development. We plan to make it possible to collapse the table of contents. This will be handled in https://phabricator.wikimedia.org/T307901.

Why doesn't it appear when I complete an edit?
The feature is still in development. This will be fixed in https://phabricator.wikimedia.org/T307251 with a planned timeline of end of August 2022.

How can I get the old table of contents?
We intentionally do not add the old table of contents to the article in addition to the new sidebar location. This is because it increases the overall size of HTML that is shipped to clients, increases the storage requirement for our parser cache, and requires additional CSS to render. It's a trade off we've taken to reduce the work involved maintaining the code and keeping the site optimized.

Users can restore the old table of contents position with the following JavaScript code:

How do magic words work with this feature?
The magic word will not work in Vector 2022 as the table of contents is always in the sidebar and this cannot be changed. However magic words relating to presence of table of contents will continue to work i.e. an article can disable the default table of contents and apply its own if necessary.

All magic words will continue to work for other skins which render the table of contents within the article.

I can't see the table of contents when the sidebar is open
This is a known problem for now. The sidebar should be closed by default unless you opened it, so this issue should only impact logged in users who have opened the sidebar. On the long term, we plan to reduce the size of this menu, and make the sidebar overlay content. Details and a prototype of how that will look can be found in T302073. This change is planned in the latter part of the year, and further information can be found on Reading/Web/Desktop_Improvements/Features/Page_tools (October-December).