VisualEditor/Roadmap

This is a quick set of bullets on the current and near-term work to make VisualEditor better. This is not set in stone, just an outline of our current thinking. Feedback, criticism and suggestions are welcome.

Recently done

 * 1) Detailed context – Editors can see more context about parts of the page they are editing without having to open a dialog or inspector, like the target of a link or language setting.
 * 2) Draggable content – Editors can drag-and-drop arbitrary content, rather than just media items.
 * 3) Media items – Editors can replace one media item with another using the dialog.
 * 4) Editing surface – Editors can see that HTML comments have been added to the document, and can see their content, edit, remove or add them.
 * 5) Mobile VisualEditor for tablets – Editors using the mobile site on tablets can use VisualEditor to make edits just like on desktop

Working on right now

 * 1) Media items – Editors can modify existing media items using each item's dialog.
 * 2) * ✅ Set precise size, set default size, restore to full size button, set alt text, change location (left/right/centre/none), change type (thumb/frame/frameless/inline), set border, insert new images at default size unless adjusted.
 * 3) * Redesign the media dialog, splitting the "style" and "specific" changes into groups, and making the common tasks more prominent
 * 4) * ❌ Set an item's size in "upright" terms
 * 5) * Set an item's link over-ride (with warning text about not doing this unless the image is PD or equivalent?)
 * 6) * Set an item's vertical alignment
 * 7) Table of Contents – Editors can see the Table of Contents as they edit.
 * 8) * ✅ Table of Contents updates live as new headings are added and existing ones altered or removed
 * 9) * Table of Contents appears in default position, or where a   is placed, and can be dragged to a new position if desired
 * 10) Editing surface – Editors using "input method editors" get a reliable, stable editing experience.
 * 11) * ✅ Major re-write of how input is handled to avoid pawns being inserted.
 * 12) * ✅ Major re-write of how cursoring is handled to avoid snowmen being inserted.
 * 13) * ✅ Build a testing framework for IMEs to understand their various input types.
 * 14) * Re-work how inserting text via the keyboard interacts with special kinds of content that the browser can't know about, like references.
 * 15) * Add on a case-by-case basis work-arounds for each language and each IME.
 * 16) Categories – Editors have more information about the different kinds of categories in the dialog so they're able to alter them without confusion.
 * 17) * ✅ Indicating for categories which are hidden why they don't show up at the bottom of the page in the category box, and in the search suggestions that they are hidden.
 * 18) * ✅ Indicating for categories which are redirects that they are a little different in the search suggestions.
 * 19) * Show that a page inherits a category from a transclusion, so it shows in the bottom of the page in the category box, but isn't editable in-page.
 * 20) Internet Explorer – Editors who use Internet Explorer v. 9 or above are able to use VisualEditor without incident.
 * 21) * Continued exploration of what doesn't work and why.
 * 22) * ✅ Ensure that key libraries support IE9 and above
 * 23) * Provide support for Internet Explorer v. 11
 * 24) * Provide support for Internet Explorer v. 10
 * 25) * Provide support for Internet Explorer v. 9
 * 26) References – Editors can set options like column width and list styling for reference lists in the dialog, and do not have to use   templates or the like.
 * 27) * This will involve extending the   tag in the Cite extension to add these much-used but unsupported features.
 * 28) Page settings dialog – Editors can set the title to display in a different form to the page name (using  ).
 * 29) * … as wikitext.
 * 30) * … as a rich editable surface (blocked on Parsoid changes?).
 * 31) Citations – Editors can get their citations auto-filled in for them when they just paste a link or ISBN into a box.
 * 32) * Inserting the first citation on a page inserts a references list at the bottom of the page automatically.
 * 33) * TemplateData's parameter "type" support feature is used to provide rich helpers on parameters (e.g. date picker, link selector, image finder, …)
 * 34) * Provide a look-up service system and letting TemplateData hook into it (so the community can specify what parts of their templates get filled in)
 * 35) ** Planning to investigate Zotero for the look-up service portion (See cite-from-id)
 * 36) * Discussions with Wikidata about structured reference storage
 * 37) * Discussions with COIBot maintainers about merging efforts
 * 38) Media items – Editors can make basic modifications to existing media items (move left, move right) without using the dialog, using a button in the surface instead.
 * 39) Indentable paragraphs – Editors can indent paragraphs if they wish, which are then transparently wrapped in   tags as needed.
 * 1) Indentable paragraphs – Editors can indent paragraphs if they wish, which are then transparently wrapped in   tags as needed.

Next up

 * 1) Media items – Editors can make changes to media items' display type to use standard 'styles' for consistency.
 * 2) Tables – Editors can make basic table structure edits – insert a new table, add or remove a row or column, add, alter or remove a caption, and change general table styles (e.g.  ). Agreed design concept at VisualEditor/Design/Table editor.
 * 3) Mode switching – Editors can switching back and forth from wikitext to VisualEditor mode and back without loss of wikitext structure (so avoiding "dirty diffs").
 * 4) * More engineering research required on how to best achieve this.
 * 5) Mobile editing for tablets – Editors can do (almost?) anything they do on the desktop on mobile tablets as well.
 * 6) * Editors can add, alter or remove images, templates, references and reference lists.
 * 7) Transclusions – Editors can easily and simply use non-template transclusions like variables and parser functions in the transclusion dialog, including in-context help.
 * 8) Tables – Editors can make advanced table structure edits – merge or split a given table cell, set a given row or column as a header, set a column as sortable.
 * 9) Mobile editing for phones – Editors can use VisualEditor on mobile phones as well as mobile tablets.

Design/product work needed before it can be worked on

 * 1) Character inserter – Editors can easily and swiftly insert characters they don't have available to them but need frequently (e.g. accents) or occasionally (e.g. mathematical symbols).
 * 2) * Needs follow-up design concepts based on the feedback from the first iteration of the inserter.
 * 3) Editing surface – Editors can see a placeholder for templates that generate no visible output, and can interact with them to edit or remove them.
 * 4) * Needs an agreed design concept.
 * 5) Galleries – Editors can add or alter a media gallery, consistently with the media item inserting and editing system, letting them set captions for each item, and gallery-level properties like display type.
 * 6) * Needs an agreed design concept.
 * 7) Editing surface – Editors can see the exact same view of items inside VisualEditor as in read mode, and can switch into a mode where some of the content is munged when they need to rather than have it on all the time.
 * 8) * Needs investigation of feasibility and an agreed design concept.
 * 9) Language tools – Editors can mark a block-level item (e.g. a list or a table) as having a different HTML content language or direction, e.g..
 * 10) * Requires a block-level editing interaction concept
 * 11) Real-time collaboration – Editors can edit using VisualEditor in real-time collaboration, seeing each others' edits as they are made and being able to comment and alter them.
 * 12) * Needs major product decisions on identifying what problems this is trying to solve, and thus clarify open questions like multiple parallel vs. only one edit session, attribution of edits, nature of saving, openness of editing sessions, …
 * 13) Visual histories – Editors can see changes to a page in visual HTML (rather than source wikitext) form, and play back the page's history, without needing to know wikitext.
 * 14) * Needs an agreed design concept.
 * 15) Edit notices – Editors can set and alter page-speciﬁc edit notices in-page, through the page settings dialog or similar.
 * 16) * Needs an agreed design concept; will involve extending the edit-notice system to add this much-used but unsupported feature (currently done with a parser function).

Blocked items

 * 1) Upload – Editors can upload a file to Commons and use it in the page without leaving the edit, including starting it with "drag-and-drop".
 * 2) * Requires some significant preparatory work from the Multimedia team
 * 3) Templates – Editors can edit templates' parameters as rich content when appropriate
 * 4) * Requires major work by the Parsoid team, currently underway.
 * 5) Language variants – Editors in languages with automatic language conversion (e.g. Chinese or Kazakh) can see, add, alter and remove words and phrases' hinting as to how they should be converted.
 * 6) * Requires major work by the Parsoid team, currently underway.
 * 7) Translate-able content – Editors of pages which use the Translate extension to provide parallel, translated texts
 * 8) * Requires very major work from the Language Engineering; not a priority.
 * 9) Media searching – Editors can filter their searches for media items by translatable tag, so non-English editors can find items in their language, and possibly media type/length/etc.
 * 10) * Likely to be solved by the Multimedia team's efforts on structured data for Commons.

Lower-priority backlog
This is not complete, just a quick place to see some asked-for features.
 * 1) MediaWiki integration – Editors get a consistent offering of both "edit" tabs in all MW contexts, not just at the top of the page (e.g. in the diff viewer).
 * 2) MediaWiki integration – Editors get a single "edit" tab with options to use either VisualEditor or wikitext editing mode, with a consistent user experience whichever they use.
 * 3) Definition lists – Editors can create, alter and re-structure definition lists  in their edits.
 * 4) Draggable dialogs – Editors can drag on the title bar of a dialog to move it out of the way of content that it obscures, e.g. when writing an edit summary.
 * 5) Language links – Editors can add, edit or remove language links, either locally or on Wikidata.
 * 6) ProofreadPage integration – Editors on Pages can use VisualEditor side-by-side with the page they are proofreading.
 * 7) Code block editing – Editors can insert or edit   blocks inside VisualEditor.
 * 8) In-line HTML styling – Editors can set some text as having an arbitrary CSS style, like making the text red or having a certain font.
 * 9) Table HTML styling – Editors can set an arbitrary CSS style on a table, a row, a column or a cell.
 * 10) Layout HTML editing – Editors can insert or edit "layout" HTML items like line breaks ( s), horizontal rules ( s), content blocks ( s), etc.
 * 11) Release for third-party MediaWiki users – System administrators of third party MediaWiki installations can easily install and use VisualEditor on their wiki without needing support.
 * 12) Release for third-party non-MediaWiki users – Developers of non-MediaWiki CMSes and other software can easily use and extend VisualEditor for their own applications.

Notes:
.
 * This doesn't cover (anything like) all work of the developers; it misses out work on performance and stability, trivial changes, documentation, packaging, cross-team support, helping users, architectural changes without a user-facing component, …
 * Code should be shipped when ready, not to meet some arbitrary deadline.
 * Items are worked on in parallel and just because it's at the top of the currently-being-worked-on list doesn't mean it will ship first.
 * This list is about functionality, not deployment; however, some items here implicitly block useful deployment.
 * Suggestions about re-prioritising, changing the scope, and others are welcome!