2017 wikitext editor

What it is
In support of one of the aplan>meta:Wikimedia_Foundation_Annual_Plan/2016-2017/Final#Program_4:_Maintain_and_improve_content_creation_and_editing_tools|goals in the 2016-2017 Annual Plan, "Maintain and incrementally improve current content creation and curation interfaces", the Editing Department is working on a new wikitext editor.

It will be integrated into the visual editor for better switching between the two. It will also have a similar design and many of the tools present in the visual editor, including the citoid service. Making the new wikitext editor available as a Beta Feature for desktop users is a goal for the current (July–September 2016) quarter. The main task on Phabricator is T104479 (the software is sometimes also referred to as the "modern wikitext editor" or the "new wikitext editor"/"NWE" there).

This will be a new editor, not a modification to the existing wikitext editor. The Beta Feature mode will allow users to provide feedback and will give time to avoid suddenly disrupting editors and breaking existing gadgets.

What are the reasons for this project
In 2010, the Wikimedia Foundation finished the Usability project (which gave us the current Vector skin, upload tool and content editor) and switched over to issues selected by the community in the 2010–2015 Strategy. This has included a number of improvements for editing tools, most notably the visual editor, alongside notifications and other improvements. However, the strategy is not and has never been to replace wikitext; we see both systems for editing as important in the long-term to help the community continue to make Wikimedia projects as successful as they are now.

As of August 2016, on almost all Wikimedia wikis we provide three main content editors. They are inconsistent for users in their look and feel, in how they operate and perform, and in help and support. One of these is the 2010-era desktop wikitext editor called WikiEditor, another is the visual editor in its desktop and mobile forms, and the final one is the bare-bones mobile wikitext editor.

Since 2010, we have learnt a great deal about how users, new and experienced alike, use our software and would like to use it instead. Our research has informed the construction of the visual editor around designs that work well for editors, clearly giving signs to new users on how to use it whilst getting out of the way of experienced hands who just want to get something done. Though imperfect, we've seen strong preferences from new users for the visual editor's design, workflow cues, and overall experience. We've also learnt a great deal in terms of engineering, and have built it in such a way that it can be used on a page (like when you click "") or inside a tool (like in Flow) and on desktop or mobile, and in a manner which is extensible by other features.

Having three inconsistent editing systems is bad. It is bad for newbies, because whatever ideas they've learnt from one editor can't be applied to other contexts (like editing a talk page). It is bad for existing editors, who have to jump through several questions before they can work out what the situation for the newbie is and so how to help. It is bad for sysops, who need to separately set up what their community needs in each of the editors – or find out that they can't get it in some editors. It is bad for script and gadget developers, who have to deal with lots of different situations (or ignore them). It is bad for developers, who have to take three times as many parts of complexity into account whenever they need to fix something or add a feature. And it is bad for the donors to the Wikimedia Foundation, whose donations are spent supporting these multiple parallel work streams.

Consequently, we're working on a new wikitext editor. This will provide a single, integrated, consistent experience between desktop and mobile, and wikitext and visual editors. It will be a platform that can be integrated into other editors, so that the experience can be as close as possible between situations and content types. We'll give users as good an experience as we can, without breaking anything.

Please note that the current plan in terms of deployment is to provide this as a Beta Feature and get feedback. Only once we've met our quality requirements (including new-user testing and experienced-user happiness), probably in mid-2017, we'll begin to provide it by default in place of the current wikitext editor. Users who don't like it will of course be able to not use it whilst it's a Beta Feature, and to disable it along with the visual editor once it's released to everyone. The current wikitext editor is not going anywhere, at least for the next few years. While we may eventually sunset it, anyone who likes it can keep it.

First release (Beta Feature)
The initial goals for the project are to have parity with the existing wikitext editor, WikiEditor, using the same toolbar with the same buttons in the same positions as in the visual editor so users have consistent experience. This means providing at least all the controls in the wikitext editor, with very few exceptions for very rare buttons: All these are already completed as of August 2016, along with a lot of tools not in the existing wikitext editor (like strikethrough, underline, template inserting and so on), and features like pasted HTML being turned into wikitext automatically. In particular, we also provide the "citoid" auto-citation tool, which lets users quickly add references based on URLs or DOIs. This is similar to, but more advanced than, the gadgets that a few wikis like the English Wikipedia had written for themselves already, and they will now be available for all wikis.
 * Basic tools (bold, italics, signature, links and images);
 * Advanced tools (headings, bullet lists, numbered lists, big, small, superscript and subscript, galleries and tables);
 * Special character insertion; and
 * Find-and-replace.

Finally, before we can ask the community for their input without wasting their time on obvious requirements or breaking their workflows, we should finish the integration. This means that we need to provide a way to publish the edit, and to show the diff of what the user has written before they publish, both of which are done. We also need to give users a way to get a preview of what they're about to save, and a way to switch flawlessly between editors without getting lost. These last two are our main foci of work as of August 2016.

Additionally, beyond our extensive QA testing that the features work as expected, we will need to undertake a design review and structured user testing and/or interviews with new users before releasing it as a beta feature. Once we are happy that it is adequately working as intended, and is (at least) no worse for new users, we will seek feedback from experienced users of all levels via a Beta Feature.

Final beta release (before general release)
The point of the first release as a beta feature is to get some initial feedback on how well this new editor works for people. We expect the feedback to include a lot of suggestions for changes. There are a number of improvements that we're already considering. Some of these probably need to be addressed before the new wikitext editor would be released outside of a beta feature. Some of these are technically difficult and so have been postponed, whilst others would benefit from real-world feedback from existing users to shape the features as usefully as possible.

For the first category (big challenges), we believe that we will need to address section editing, in which clicking edit will show small parts of the page to edit, and a fully responsive design, so that the interface can scale up and down more cleanly for smaller devices, where users are zoomed-in, or other accessibility and platform reasons; these will let us provide the feature in mobile as a beta example as well, to ensure it works for all our editors, not just those on desktop.

For the second category (feedback needed), we will need to provide in-editor help to guide users through the editing process from the very first time they click edit and also later in their editing careers. Right now the wikitext editor has a "help" tab with some brief wikitext guidance; in the visual editor, we have a link to the user-guide, which we could replicate for this purpose. How this should work, and what it should highlight, is likely to be something on which many members of our communities have expert ideas. We will also need to clean up how gadgets extend the editor, as the new editor integration right now is complex and confusing. This would make converting some gadgets harder than it should be. Many wiki communities depend on particular gadgets to speed up their editing workflow, and it's important that we preserve the ability for wikis to flexibly experiment with improvements like this.

Naturally, any change of this scale is likely to be disruptive for some users' workflows, and will have a few issues with relative 'edge cases' not being addressed. We look forward to uncovering and addressing these over the weeks and months following the release of the beta feature.

Nice-to-haves
Alongside the above, there are other, new features we'd love to provide if possible, but which may prove too costly to develop or too slow for users, and so are not planned from the outset. One feature we'd be interested in providing is saving automatic local drafts as users edit, so that if their browser or computer crashes or loses power mid-edit they can resume rather than having to restart. This would rescue users from quite frustrating, if uncommon, occurrences, particularly people with poorly/old computers or network connections.

A big feature that often gets discussed is syntax highlighting of wikitext to help guide people's eyes to the right content for which they're looking. This feature was in fact built for the existing wikitext editor back in 2011, but we had to abandon it because the very high complexity of wikitext means that this was exceedingly slow for most users. Five years later, most users' machines are a fair bit faster than they were back then, which helps a little. Also, it might be worth exploring how performant we could make a feature doing this if we were to make some simplifications of the kinds of wikitext which we try to highlight.

More complex and error-prone than syntax highlighting, but possibly even more useful, would be a feature for folding wikitext structures into blocks so that users can easily ignore things they don't want to edit without having to read through them. For example, long infobox invocations or references could be folded up into blocks until you want to edit them. The technologies we built for the visual editor are particularly well-suited for providing this use case in a reliable fashion, so this may be something we could look at doing. Again, as with syntax highlighting we might need to compromise on the complexity of wikitext that we recognise in return for providing something performant enough to be useful to most of our users.

Another nice feature we could provide would be to prompt users when they save with two or three buttons to add one-click edit summaries based on their recent activities. This kind of feature is quite popular on some wikis as a gadget and it would be nice to provide it to all users on all wikis, without those wikis needing to have a gadget guru on hand to help set it up and maintain it.

Resources

 * An early rough design mockup from April is available [http://nirzar.github.io/prototypes/ve/switch/wikitext/wikitext.html here]. To see the wikitext editor, click the brackets icon in the top-right corner.
 * An old rough demo video is also available as of mid-May 2016 at https://www.youtube.com/watch?v=jgd2ZHOZGBE.
 * You can see a version of the editor software from a while ago in action at [https://visualeditor-test.wmflabs.org/w/index.php?title=Main_Page&veaction=editsource https://visualeditor-test.wmflabs.org/].
 * The current, "very alpha" version can be seen via Beta Features at https://en.wikipedia.beta.wmflabs.org/wiki/Special:Preferences#mw-prefsection-betafeatures; enable the "new wikitext editor" item, go to http://en.wikipedia.beta.wmflabs.org/wiki/World?veaction=edit (for example) and see what it looks like when you switch back and forth.