VisualEditor/status

Last update on: 2013-05-27 (MW 1.22wmf5)

__NEWSECTIONLINK__

2011-05-16
Trevor Parscal and Neil Kandalgaonkar have done exploratory work on the visual editor project. Neil worked with developers of HackPad (a custom version of Etherpad, a real-time collaborative editing software) on a proof of concept of integration between Etherpad and MediaWiki (read more). They're now working on turning it into a MediaWiki extension. Work on the visual editor is also intersecting with the groundwork done on the new parser.

2011-06-02
Trevor Parscal and Neil Kandalgaonkar have done exploratory work on the visual editor project. Neil worked with developers of HackPad (a custom version of real-time collaborative editing software Etherpad) on a proof of concept to integrate Etherpad and MediaWiki (read more). They're now working on turning it into a MediaWiki extension. Trevor continues to work on WikiDom, a storage structure and functionality acting as an intermediate layer between the parser and a visual editor. This work also intersects with the groundwork done on the new parser.

2011-06-30
Trevor Parscal continued to work on the front-end of the visual editor, and specifications for accessing the editing surface via the API. A hybrid rendering approach appears to be the best strategy for the visual editor. Neil Kandalgaonkar continued to work on the middleware, DOM and transactions. Neil also continued to work on a demo to integrate MediaWiki and Etherpad. With Alolita Sharma, they planned their upcoming sprints. Neil and Trevor are posting about their work to the wikitext-l list.

2011-07-25
Trevor Parscal continued to work on the front-end of the visual editor and rich text rendering; he was joined by Inez Korczynski, a developer from Wikia, who are also interested in the visual editor. Neil Kandalgaonkar worked on real-time collaboration, concurrent editing and dived into the inner workings of Etherpad. (Read summary on wikitext-l.)

2011-08-31
Trevor Parscal and Inez Korczynski worked on a transaction-based model for the visual editor, where the document is built as a series of events (instead of saving it entirely at every change), which makes it easier to undo actions. Neil Kandalgaonkar continued to work on real-time collaboration and is close to presenting a demo of Etherpad working inside a MediaWiki edit window. Ian Baker investigated and started to work on a chat system to be integrated to the concurrent editing interface, for collaboration and live help. More details on the wikitext-l mailing list.

2011-09-30
Trevor Parscal expanded the software design documentation. He also refactored some of the data structures to follow a model/view controller pattern and support document-level transactions. He wrote tests for the new structure, and got it to render paragraphs and lists; he's now working on rendering tables.

2011-10-31
Trevor Parscal worked on a new model tree (and the conversion from the linear model) and updated the software design documentation. Inez Korczynski worked on front-end functionality: dialogs, selecting text, mouse actions, scrolling, keyboard shortcuts, etc. Roan Kattouw focused on algorithms that insert ranges of data into a document, and Neil Kandalgaonkar on the removal of data. On the parser side, a basic parser using PEG is in place, which produces an intermediate JSON object tree; Brion Vibber is still working on markup support (mixed HTML and Wikitext). Gabriel Wicke joined the team and started to work on the PEG parser (read more).

2011-11-30
Trevor Parscal fixed issues blocking the synchronization of structural edits to the user interface, refactored and cleaned up the code, and mapped out tasks and features to be supported. He also finished the document transaction functionality and made progress on an undo/redo system. Roan Kattouw added tests, rewrote some code to make the tests pass, and fixed a number of bugs and issues, notably in Internet Explorer. Inez Korczynski continued to work on content insertion, deletion and selection and fixed numerous bugs. Gabriel Wicke extended the PEG parser for robust larger-scale parsing. He converted the PEG parser into a combined wiki and HTML tokenizer that feeds to a HTML5 DOM tree builder. He implemented several wikitext features (lists, italics, bold) as token stream transformations. 139 of about 660 parser tests are now passing.

2011-12-13
<section begin=2011-12-13/>The first public developer prototype of the visual editor sandbox was deployed to MediaWiki.org for public feedback and testing. It can be accessed via the visual editor sandbox special page. Full announcement in the Wikimedia blog.<section end=2011-12-13/>

2011-12-31
<section begin=2011-12-31/>The team deployed a developer prototype of the visual editor sandbox to mediawiki.org for public feedback and testing. Trevor Parscal fixed bugs and refactored code. Inez Korczynski worked on the toolbar (text styles), the undo/redo stack, and lists (creating, deleting, and changing indentation). Gabriel Wicke worked on the parser test runner and the parser pipeline, including [//lists.wikimedia.org/pipermail/wikitext-l/2011-December/000494.html the tokenizer and its grammar] and template expansions. Neil Kandalgaonkar worked on the undo/redo feature and did a lot of refactoring.<section end=2011-12-31/>

2012-01-31
<section begin=2012-01-31/>January was a bit slower on the visual editor front, as parts of the team took some well-deserved vacation after the successful prototype launch in December. During the SF Hackathon, a lot of issues were fleshed out. Plans for the second phase of the editor project were formulated. Inez Korczynski investigated a possible use of  to help with input methods and text selections on mobile devices. Gabriel Wicke extended the parser with the ability to fetch and expand templates in a parallel and asynchronous fashion. The parser now supports most parts of the English Wikipedia Main Page.<section end=2012-01-31/>

2012-02-29
<section begin=2012-02-29/>Trevor Parscal did research on cursor interaction and selection rendering for RTL (right-to-left) and support for line breaks in PRE elements. Gabriel Wicke improved template expansion and parser function support, investigated Microdata and RDFa for WikiText-in-HTML-DOM embedding and added rough support for images and other files. Rob Moen committed a working Editable Surface IME prototype (bidirectional text not fully supported). Audrey Tang joined the team and worked on the sanitizer and the testing process.<section end=2012-02-29/>

2012-03-05
<section begin=2012-03-05/> Exploration of using ContentEditiable (CE) in place of EditSurface (ES) for the display layer was successful, and the team is integrating the new display layer system into the rest of the codebase. Inez and Christian are continuing their work on CE while Rob is focusing on getting the UserInterface (UI) module working with CE. Rob will be refactoring UI and adding an API layer for toolbar and inspector extensions. Trevor and Roan are focusing on DataModel (DM) changes that need to be done to improve tree sync and integration with the parser (Parsoid). Gabriel and Audrey are continuing their work on Parsoid.<section end=2012-03-05/>

2012-03-06
<section begin=2012-03-06/>Last week made big decisions. The big one was to move forward with contentEditable (CE) that Inez and Christian are doing in place of Editable Surface (ES). Looks like editing on mobile will be awesome! Trevor and Roan will be focusing on the data model (DM. DOM -> Linear Parser) as the basic objectives have been hashed out, the (parser -> DM is unaffected). Certain structure changes (i.e. turning paragraphs to lists) aren't currently possible so the DM will change to support that. Linking with the parser (DOM-> LM converter) will be deferred for a week.

In terms of the UI, Rob worked on some RTL in ES, but switched given the CE advances. This week will focus on getting the UI working in CE (assess what UI we have from ES and where it needs to be). Plan on getting to the point we can user test the JS API for the toolbar.

In terms of the parser, Gabriel has to decide on RDFa vs. microdata eventually (difference are minimal, most of the DOM stuff won't change and can be tested with vanilla HTML anyway). Created a dump grepper with syntax highlighting and used that to analyze existing wikilink/image syntax use. Refactored tokenization and expansion of wikilink/images so now image options can come from templates (257 tests passing now). Plan on tackling interacting with action=parse and wiki in general. Also some more parser function tweaking, etc. and the RDFa/microdata decision.<section end=2012-03-06/>

2012-03-20
<section begin=2012-03-20/>Team updated (sans key people who are out of commission): FY2012-2013 goals section. Further updates/corrections by Trevor and Gabriel expected when they return.<section end=2012-03-20/>

2012-03-31
<section begin=2012-03-31/>A big decision in March was to move forward with contentEditable (CE), implemented by Wikia developers Inez Korczynski and Christian Williams, instead of Editable Surface (ES). Trevor Parscal and Roan Kattouw focused on the data model. Rob Moen worked on the user interface, first on right-to-left support in ES, then on getting the UI working in CE. Gabriel Wicke and Audrey Tang continued their work on Parsoid and need to decide on RDFa vs. microdata. They created a dump grepper with syntax highlighting, and used it to analyze existing wikilink/image syntax use.<section end=2012-03-31/>

2012-04-monthly
<section begin=2012-04-monthly/>Roan Kattouw and Trevor Parscal are rewriting the underlying data model (ve.dm) to achieve feature compatibility with the parser and correct a variety of problems that have been previously deferred. Inez Korczynski and Christian Williams have been continuing their work to stabilize and integrate the content editable layer (ve.ce) and have been working with Rob Moen, who has focused on getting the user interface elements working with the content editable layer (ve.ui). Gabriel Wicke has been working on improving the parser's ability to parse pages more quickly as well as increasing compatibility with existing features such as thumbnails. A big template-heavy page like Barack Obama can now be expanded in similar time as the production parser (80 seconds on a puny laptop) and 340MB of memory. It previously ran out of memory after consuming 1.6G and running for ~30 minutes.<section end=2012-04-monthly/>

2012-05-07
<section begin=2012-05-07/>

Release Planning
BY JUNE! 5 weeks.

What we want:
 * parse page
 * load editor
 * save it back

Parser:
 * not hard to load simple pages
 * but not roundtripping it (because not all tags are supported)
 * Serializaiton: some normalization. focusing efforts on reconcilliation instead?
 * For Roundtripping: Need more support. Handle templates (started by one and ended by another), also template parameters. (linear model supports both: but data model only allows edit templates parameters on opening).
 * Just finished Refactoring so it can expand big articles. A few more days left of followup.

Serializer:
 * "Alien Nodes" (HTML we don't understand)
 * acknowledge that dirty diffs will happen.
 * Have a sandbox deploy, create a namespace for it.

June:
 * Roundtrip something!
 * Probably a namespace limit, sandbox
 * allow dirty diffs or disallow manual editing and start from scratch.
 * If source editing, then it will run it through the parser as a presave transformation. Warning banner with X? so may not have source mode editing only if developer mode.
 * Maybe Gabriel can refocus on serialization (worried abotu stuff that will be shifting).
 * get it ready incremental improvements on front-end, but on the serialization and back-end that will change.

James Forrester:
 * sooner is better. :-)
 * He will need to be on board for the release in (late) June

Things to be done for release:
 * 1) Gabriel needs to refocus on serialization (for roundtripping) after he gets the refactor settled (next couple days)
 * 2) Finish DM rewrite stuff. As soon as it is in master then we start doing integration.
 * 3) * This week: Get feature completeness with transactions]
 * 4) * On FE, rework observation stuff, toolbar into the DM stuff as it comes along.
 * 5) * Annotation should be working today.
 * 6)  Integration work?
 * 7) * MW integration [Roan]
 * 8) * FE integration- do a "ooh and ahh" it.
 * 9) * Node.js integration [Gabriel will get working, and Roan will puppetize and give to Ops]. Roan has Node.js installed on a VM project.

Release Notes: Dec to June (reason)
 * 1) Switch from ES to CE (due to CE, This warrants a blog post)
 * 2) Mobile editing support (due to CE, Patrick can hack up something)
 * 3) February stuff: Supports spellcheck, autocorrect, IME (due to CE)
 * 4) turn headline into paragraph
 * 5) feature parity w/ previous demo (internal check)
 * 6) Load and save (parser/serializer, backend integration)
 * 7) In-place editing (frontend integration)
 * 8) Graceful failure/fallback (AlienNode)
 * 9) [TBD] partial iage support (DM rewrite)

Trevor will make a task list in-wiki. If it doesn't work out, will consider to switching to Asana.<section end=2012-05-07/>

2012-05-20
<section begin=2012-05-20/>Tracking ongoing work: <section end=2012-05-20/>
 * Visual Editor ToDo List
 * Parser-specific todo list

2012-05-23
<section begin=2012-05-23/> Gabriel has set up a very basic parsoid service.


 * browse english wikipedia as parsoid sees it
 * POST wikitext -> HTML DOM
 * POST HTML DOM -> wikitext.

Note: round-tripping is limited. Does not support preservation of variable whitespace, templates and other complex constructs yet.

Currently 154 parser tests are passing in the new --roundtrip mode that Subbu added last week.

Also the team had a meeting with James.<section end=2012-05-23/>

2012-05-monthly
<section begin="2012-05-monthly"/>The team completed release planning for June and welcomed James Forrester as the Technical Product Analyst for the project. Ongoing work on the Visual Editor and Parsoid is tracked on-wiki. Gabriel Wicke set up a very basic parsoid service that lets users browse the English Wikipedia as Parsoid sees it, and convert Wikitext to HTML DOM and vice versa.<section end="2012-05-monthly"/>

2012-06-monthly
<section begin="2012-06-monthly"/>The team did the first deployment of VisualEditor and Parsoid, with an early version now live in a test namespace on mediawiki.org. This editor is broadly feature-compatible with the old, EditableSurface-style code which this replaces, while being the first release that can create and edit pages. The team is now planning to deploy new code as it develops every two weeks or so. The initial push will be to work on bug-fixes, and to finalise the code for a few features that were close to being ready before the first deployment.<section end="2012-06-monthly"/>

2012-07-monthly
<section begin="2012-07-monthly"/>The VisualEditor (VE) team presented their work at Wikimania and received a good deal of feedback from the community. The team created a rough plan for the next three months' work. The early version of VE on mediawiki.org was updated twice, fixing a number of bugs and noticeably including the addition of support for nested lists. Gabriel Wicke relocated to San Francisco, and Timo Tijhof visited the SF office for three weeks after Wikimania.<section end="2012-07-monthly"/>

2012-08-20 (MW 1.20wmf10)
<section begin="2012-08-20 (MW 1.20wmf10)"/>The VisualEditor was updated as part of the wider MediaWiki 1.20wmf10 branch deployment on Monday 20 August.

The most visible new item in the two weeks since 1.20wmf9 is the much-improved link inspector. This now guides users to create a link to a suggested existing article, a redlink or an external link, and replaces the previous basic functionality that did not suggest links or inform you if the target of your link existed. We have also improved the save dialogue, streamlining the interaction based on feedback from the design team.

There have also been a number of bug fixes, such as preserving spaces before and after the content in headings and other forms (so that " == Foo == " doesn't have spacing either side of it in the editor display, but doesn't strip them either &mdash; 37935), using browsers' native deletion mechanisms which helps with support for short-cuts and internationalisation (38461), and handling of "alien nodes" (pieces of content that the editor does not know how to edit yet) so that they do not break the rest of the editor when included. However, most of the changes have been improvements to the code architecture to allow it to be re-used and extended to support new 'node types' like categories or tables when we work on these later.

A complete list of individual code commits is available in the 1.20/wmf10 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-08-20 (MW 1.20wmf10)"/>

2012-08-monthly
<section begin="2012-08-monthly"/>In August, the team focused on overhauling the code design of VisualEditor so that it is more modular and easier to extend. This involves creating and documenting a number of formal APIs at each point in the architecture, that means a developer does not have to understand the entire code base to be able to add new features. The early version of the VisualEditor on mediawiki.org was updated twice (wmf9 and wmf10), fixing a number of bugs, as well as adding a much-improved link inspector to help users build links, and a save dialog that better guides users on what to do.<section end="2012-08-monthly"/>

2012-09-03 (MW 1.20wmf11)
<section begin="2012-09-03 (MW 1.20wmf11)"/>The VisualEditor was updated as part of the wider MediaWiki 1.20wmf11 branch deployment on Monday 3 September.

The team have spent most of the two weeks since 1.20wmf10 working on how the code integrates together, providing clean interfaces between them so new developers can re-use and extend VisualEditor to support new 'node types' like categories or tables when we work on these later.

That said, there have been a number of bug fixes, including better support for RTL languages as part of our work with our Internationalisation colleagues, supporting the use of VisualEditor with the Monobook skin (38154) and making sure we don't appear to support browsers that won't work with VisualEditor (38857). We now support the editing of old revisions through the tool rather than just the latest one (37821), and have updated the code to work with a changed way in which the Parsoid service now operates as it is developed.

A complete list of individual code commits is available in the 1.20/wmf11 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-09-03 (MW 1.20wmf11)"/>

2012-09-17 (MW 1.20wmf12)
<section begin="2012-09-17 (MW 1.20wmf12)"/>The VisualEditor was updated as part of the wider MediaWiki 1.20wmf12 branch deployment on Monday 17 September.

The last two weeks included the annual Wikimedia Engineering all-tech meeting and the Wikimedia Foundation all-staff meeting, so this iteration was in effect shorter than others. The team have continued to spend most of the coding time over the two weeks since 1.20wmf11 working on how the code integrates together. This work will provide cleaner interfaces between components of the VisualEditor, so new developers can re-use and extend VisualEditor to support new 'node types' like categories or tables when we work on these later.

Beyond the API work, there have been a few minor changes to the user interface made this iteration. Firstly, the link inspector now checks for invalid titles like "Foo{}bar" (33094), and long titles in the suggestions box are replaced with ellipses in the middle rather than the end so they can be distinguished (39591). The save dialog's length down-counter has been labelled to indicate it counts the number of bytes rather than characters, as that is what the database holds (40035); longer-term, we may wish to find a better way to show this to users. Finally, we fixed a bug where the table of contents was restored wrongly if a user edited and then cancelled without saving (39753).

A complete list of individual code commits is available in the 1.20/wmf12 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-09-17 (MW 1.20wmf12)"/>

2012-09-monthly
<section begin="2012-09-monthly"/>In September, the team continued its focus on re-engineering the code design of VisualEditor so that it is more modular and easier to extend. This involves creating and documenting a number of formal APIs at each point in the architecture, that means a developer does not have to understand the entire code base to be able to add new features. The early version of the VisualEditor on mediawiki.org was updated twice (wmf11 and wmf12), fixing a number of bugs and building out better support for internationalisation and key concepts like categories, language links and other "magic words".<section end="2012-09-monthly"/>

2012-10-01 (MW 1.21wmf1)
<section begin="2012-10-01 (MW 1.21wmf1)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf1 branch deployment on Monday 1 October.

The team have spent most of the two weeks since 1.20wmf12 working on re-designing how the code integrates together, providing clean interfaces between them so new developers can re-use and extend VisualEditor to support new 'node types' like categories or tables when we work on these later.

Beyond this API work, we added a few updates. Firstly, you can now set the 'annotation' where the caret is, without a selection &mdash; i.e., you can click somewhere, type Ctrl+B (or press the 'Bold' icon) and start typing with the text appearing bold (33140). We also now switch around the order of the undo and redo buttons for right-to-left languages (38548). Finally, we fixed a bug where applying a link to some text would remove any other 'annotations' (such as bold or italics) already set on it (40337).

A complete list of individual code commits is available in the 1.21/wmf1 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-10-01 (MW 1.21wmf1)"/>

2012-10-15 (MW 1.21wmf2)
<section begin="2012-10-15 (MW 1.21wmf2)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf2 branch deployment on Monday 15 October.

In the two weeks since 1.21wmf1, the team have again spent most of their time working on re-designing how the code integrates together, providing clean interfaces between them so new developers can re-use and extend VisualEditor to support new 'node types' like categories or tables when we work on these later.

Beyond the API work, we have entirely re-written the selection system (33058, 34095, 37814, 37833, 37834, 38000, 39465, and 39965), part of which included us adding IME support back in to the VisualEditor (33076). We also fixed some bugs including selections not being restored correctly on undo/redo (40538), backspace not always deleting the right character (40416), pre-annotations (40677), and fixing a JavaScript error when using Internet Explorer 10 (37851).

A complete list of individual code commits is available in the 1.21/wmf2 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-10-15 (MW 1.21wmf2)"/>

2012-10-monthly
<section begin="2012-10-monthly"/>In October, the team worked to finish most of the re-engineering the code design of VisualEditor so that it is more modular and easier to extend. This has involved creating and documenting a number of formal APIs at each point in the architecture, so a developer does not have to understand the entire code base to be able to add new features. The early version of the VisualEditor on mediawiki.org was updated three times (wmf1, wmf2 and wmf3), fixing a number of bugs and replacing the entire browser selection and typing models, and much of how the user interface connects with the rest of the code.<section end="2012-10-monthly"/>

2012-10-29 (MW 1.21wmf3)
<section begin="2012-10-29 (MW 1.21wmf3)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf3 branch deployment on Monday 29 October.

In the two weeks since 1.21wmf2, the team have continued to devote most of their time working on re-designing how the code integrates together and providing clean interfaces between them so new developers can re-use and extend VisualEditor in the future.

Beyond the API work, we have worked to fix a number of serious bugs in the new code from the last release such as not being able to enter text in blank paragraphs in Firefox 41120, as well as copy-and-paste (41055) and cutting (41092) both breaking, a JavaScript error being caused when editing a blank page (37843), and not being able to change the formatting on two lists at once (41434).

A complete list of individual code commits is available in the 1.21/wmf3 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-10-29 (MW 1.21wmf3)"/>

2012-11-12 (MW 1.21wmf4)
<section begin="2012-11-12 (MW 1.21wmf4)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf4 branch deployment on Monday 12 November.

In two weeks since 1.21wmf3, the team have spent their time mostly working on finalising the code in preparation for its deployment in December as a test for users. One of the major changes to the integration code is how the VisualEditor can be used; it now can work on other pages than just those in the VisualEditor: namespace. (This is configurable on a per-wiki basis, rather than defined in the code itself.) Amongst other things, this now means that editing the wikitext of VisualEditor: namespace pages can be done by anyone, and is no longer restricted to just sysops (as will be needed for the December deployment). The related bugs surrounding permission checks, filter checks, conflicts, etc. remain, and will be fixed in the next release.

Part of the preparations involved entirely re-writing the user interface code including the way in which commands operate (40896). Another aspect was the addition of "Change Markers" to the data sent to the Parsoid system to reduce any accidental changes that should not happen when users save. Finally, a bug with how the "save page" button worked on old revisions was fixed (41865).

A complete list of individual code commits is available in the 1.21/wmf4 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-11-12 (MW 1.21wmf4)"/>

2012-11-26 (MW 1.21wmf5)
<section begin="2012-11-26 (MW 1.21wmf5)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf5 branch deployment on Monday 26 November.

In two weeks since 1.21wmf4, the team have spent their time mostly working on finalising the code and preparing for its deployment in December as a test for users.

A lot of work went into the 'Data Model' component that converts between the information that Parsoid gives us and a structure that the code can edit. This now supports HTML entities (so "&amp;ocirc;", "&amp;#xf4;", and "ô" do not get switched when users don't expect it - 42118), HTML comments (so they don't get accidentally removed - 42124; viewing and editing them is not yet supported), better handling for content that we don't yet recognise (42119), fixing a bug with our integration with Parsoid (42121), and supporting in production the "Change Markers" code that was worked on last iteration (41947).

In the integration work, we removed the "Feedback" link as this would not work well with the code being deployed to multiple wikis (41722) and unfortunately had to add Internet Explorer temporarily to the "blacklist" of browsers that the VisualEditor will not support for December, due to a number of critical issues that the team does not have time to fix (42335) - post-December, the team will work to find a way around the various bugs and inconsistencies in Internet Explorer.

We fixed bugs on handling "alien nodes" (items of content that we don't have a specific handler for yet, like templates), such as the floated alien-covering "phantoms" for selection purposes appearing wrongly in Firefox (42177) and them not appearing at all for items that floated due to a class in Chrome 42134). There was also some nasty bugs that we fixed, including when editing around inline (mid-paragraph) alien nodes (42212) and the data model and the display getting out of sync sometimes when cutting-and-pasting (42219).

Finally, a great deal of work was done to overhaul the link inspector's code and quash a large number of minor bugs with it, such as wrongly replacing links's spaces with underscores (42140).

A complete list of individual code commits is available in the 1.21/wmf5 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-11-26 (MW 1.21wmf5)"/>

2012-11-monthly
<section begin="2012-11-monthly"/>In November, the team worked primarily on finalizing the code re-engineering of VisualEditor so that it is more modular and easier to extend, and on the integration ahead of deploying it for wider testing in December. The early version of the VisualEditor on mediawiki.org was updated twice (1.21-wmf4 and -wmf5), fixing a number of bugs and missing wikitext compatibility, and wide-spread improvements to much of the user interface code so that it will be easier to change in future.<section end="2012-11-monthly"/>

2012-12-10 (MW 1.21wmf6)
<section begin="2012-12-10 (MW 1.21wmf6)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf6 branch deployment on Monday 10 December.

In the two weeks since 1.21wmf5, the team have spent their time finalising the code and preparing for its test deployment tomorrow for editors to use and give us feedback.

A lot of changes were made to how the VisualEditor integrates with MediaWiki. These included having a separate VisualEditor tab rather than replacing the existing edit tab (42221 and 41159), integrating into the existing edit controls so that protection, global blocks, AbuseFilter etc. work (37844, 38268 and 42142) and the user is sent somewhere when there's an edit conflict (37828), adding a 'cancel' button from editing mode back into read mode (37845), fixing watch and minor edit functions in the save dialog so they work as expected (38034, 40774, 42136, 42137, and 42764), custom save buttons for old revisions and new pages (41865 and 42750), adding page notices into the workflow so it's clear when you're editing a page with some form of protection, or which has special issues (42220), and tagging all edits made with the VisualEditor so that they can be identified (42172).

The user interface inside the editor, and in particular the link inspector, had a number of changes, including preventing undetectable links over whitespace (42839), avoiding two highlights for the same suggestion (42665), highlighting suggestions on mouse hover (39977), instant response from the link suggestions box (42341), allowing link "pre-annotations" when nothing is selected (33141), buttons not responding to clicks when disabled (40976), and a bug when switching between links (42552).

We fixed a number of bugs and minor annoyances with the core editing surface module, including deleting failing on blank lines (42657 and 42655), on documents that had been blanked (41071), around 'alienated' content (42350), in Firefox with empty paragraphs (41223) and select-all replacements (42404), selection getting removed every few moments (42801) and breaking going backwards (42401), with errors being wrongly-thrown (39255, 41501, and 41504).

Finally, a series of changes were made to the 'Data Model' component that converts between the information that Parsoid gives us and a structure that the code can edit. These include allowing paragraphs inside spans (and other invalid HTML sequences - 42487), fixing the way that unlisting buttons work (41929), correcting the data model when "unbalanced" content is copied (42806) or when you delete alienated content (42707), the leading newline of  elements (42469), and annotating inline aliens (like HTML entities - 42340).

A complete list of individual code commits is available in the 1.21/wmf6 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2012-12-10 (MW 1.21wmf6)"/>

2012-12-monthly
<section begin="2012-12-monthly"/>In December, the team deployed to the English Wikipedia an alpha version of the VisualEditor for editors to use and give feedback on issues and priorities. The team's work focussed on ensuring that the integration was reliable, and providing a dedicated tool for editors to report problems with editing, and, after deployment, addressing the reports and ideas from editors. The early version of the VisualEditor on mediawiki.org was also updated to use the new developments (as part of 1.21-wmf6).<section end="2012-12-monthly"/>

2013-01-02 (MW 1.21wmf7)
<section begin="2013-01-02 (MW 1.21wmf7)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf7 branch deployment on Wednesday 2 January.

In the three-and-a-half weeks since 1.21wmf7, the team have mostly been on leave, and otherwise making some progress on cleaning up the codebase and fixing a number of bugs and issues highlighted by the community since the code was deployed more widely in December.

These bugs included no longer marking all edits as minor and adding the page to the user's watchlist regardless of setting (43040); ensuring that "phantoms" appearing correctly over the top of complicated template contents (43098); not showing that there is an edit notice when it is present but displays nothing to the user, as used on the English Wikipedia (43013); making sure that media items are loaded in a protocol-insensitive manner (43015); fixing the wikitext-corruption system to work for pages with '/'s in them (42988); and avoiding the undo/redo functions causing an error if used first before anything else is done (43033).

A complete list of individual code commits is available in the 1.21/wmf7 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-01-02 (MW 1.21wmf7)"/>

2013-01-16 (MW 1.21wmf8)
<section begin="2013-01-16 (MW 1.21wmf8)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf8 branch deployment on Wednesday 16 January.

In the two weeks since 1.21wmf7, the team have started the planning for the next segment of work in line with the strategic goals for the VisualEditor set out in the 2012/13 plan. A small number of changes have made it into the codebase for this release, mostly focussed on fixing bugs reported by the community and preparing for future developments.

Firstly, there was a large refactoring of the link inspector code so that it is now easier to extend, which amongst other things means that it will now not over-write other formatting on text like bold or italics (43841) and links now have a target exposed, so editors can where the link goes in their browser without needing to edit the link (37904). The way that the code is integrated now does not take over edit section links, which had been mistakenly left switched on (43036). There were some changes to how "alien" nodes were assigned, fixing a few irregularities in how they worked (42398, 43056, and 43076).

A complete list of individual code commits is available in the 1.21/wmf8 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-01-16 (MW 1.21wmf8)"/>

2013-01-monthly
<section begin="2013-01-monthly"/>In January, the team worked primarily on reviewing and cleaning-up the code deployed in December. They spent time with their colleagues in the Parsoid team planning the next phase of development, which is aimed at making the VisualEditor the default editor for all Wikipedias from July 2013. The alpha version of the VisualEditor on mediawiki.org and the English Wikipedia was updated twice (1.21-wmf7 and -wmf8), fixing a number of bugs reported by the community and making some adjustments to the link inspector's functionality based on feedback.<section end="2013-01-monthly"/>

2013-02-04 (MW 1.21wmf9)
<section begin="2013-02-04 (MW 1.21wmf9)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf9 branch deployment on Monday 4 February.

In the two-and-a-half weeks since 1.21wmf8, the team have continued planning for the next tranche of work, and working on the core changes that will be needed in preparation for this. For the end of 2012/13, in line with the strategic goals for the VisualEditor set out in the 2012/13 plan, we are looking to provide VE as the 'default' editor for all users, capable of letting them edit the majority of content without needing to use the wikitext editor. This means adding support for at least basic templates, references, categories and images, each of which is a very large piece of work.

The initial focus has included a major expansion in the capabilities of the 'document model' module that converts between the HTML+RDFa rendered by Parsoid and an editable document. Other areas of work have covered editability of images in the "ContentEditable" editing surface, refactoring the keyboard short-cut command triggering system, and improving the documentation system used so that the code is easier to extend.

A small number of changes have made it into the codebase for this release, most notably adding support for Microsoft Internet Explorer v. 9 and above (42847), adding hints of what keyboard short-cuts are available to each button (42919), which can now vary more easily by platform (44012), and internationalisation support for toolbar icons (38551).

A complete list of individual code commits is available in the 1.21/wmf9 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-02-04 (MW 1.21wmf9)"/>

2013-02-18 (MW 1.21wmf10)
<section begin="2013-02-18 (MW 1.21wmf10)"/>The VisualEditor was updated as part of the wider MediaWiki 1.21wmf10 branch deployment on Monday 18 February. During this time, the team has expanded with the recruitment of [//lists.wikimedia.org/pipermail/wikitech-l/2013-February/066421.html Ed Sanders] who will focus on the data infrastructure of the VisualEditor platform.

In the two weeks since 1.21wmf9, the team have worked on the infrastructure needed to support the new features being added for wider launch of the VisualEditor as the default way users will edit wikis. This infrastructure work has included further expansion in the capabilities of the 'document model' module that converts between the HTML+RDFa rendered by Parsoid and an editable document, such as adding the ability in the system to edit "meta-data" like categories (45029); note that the user-facing editing component for this is yet to come. Other work has included supporting Microsoft Internet Explorer, adding new user interface widgets for a consistent UI, and reviewing and expanding the design of the user experience for inspectors and editors to cover template and reference editing.

Alongside this work, the team have fixed a number of bugs. These include integration improvements so that the toolbar doesn't appear multiple times if a user clicks back and forth (44838), errors thrown when users click at the end of a document (41199) or when using the link inspector in the stand-alone VE environment (44686), and making sure that inserted links get the link applied correctly (44086).

A complete list of individual code commits is available in the 1.21/wmf10 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-02-18 (MW 1.21wmf10)"/>

2013-02-monthly
<section begin="2013-02-monthly"/>In February, the team worked on improving the design, user interface components and API infrastructure of VisualEditor, preparing for the new features that will be added in the coming months. The objective is for VisualEditor to be the default editor for all users, capable of letting them edit the majority of content without needing to use the wikitext editor, in July 2013. This will mean adding support for references, (at least) basic templates, categories and images, each of which is a very large piece of work. During this time, the team has expanded with the recruitment of [//lists.wikimedia.org/pipermail/wikitech-l/2013-February/066421.html Ed Sanders], who will focus on the data infrastructure of VisualEditor's platform. The alpha version of VisualEditor on mediawiki.org and the English Wikipedia was updated twice (1.21-wmf9 and -wmf10), adding support for Microsoft Internet Explorer (version 9 and above), fixing a number of bugs reported by the community, improving internationalisation, and restructuring the data model layer so that the code interfaces are ready for the new features.<section end="2013-02-monthly"/>

2013-03-04 (MW 1.21wmf11)
<section begin="2013-03-04 (MW 1.21wmf11)" />VisualEditor was updated as part of the wider MediaWiki 1.21wmf11 branch deployment on Monday 4 March.

In the two weeks since 1.21wmf10, the team have worked on the new features being added for wider launch of VisualEditor as the default way users will edit wikis. Part of this work has been some of the last infrastructure changes expanding the capabilities of the 'document model' module, including landing the last of the major re-write there (45062). This has also covered letting the converter work with full HTML documents rather than just fragments and be more robust, significant fixes to bugs around list items being merged and un-merged wrongly, better support for 'meta' nodes, fixed handling of text that in normal MediaWiki would be auto-linked (37940), and better documentation (45264 amongst others). The user interface through a major refactor and refresh now has access to a much more consistent set of 'widgets' for the main interface and for items like the link inspector as well as the to-come category, template and references dialogs which are being designed.

The 'content editable' module has improved keyboard support, fixed the ability to add new items in a list (due to an unfortunate typo) and add new lines in pre-formatted blocks using Shift-Enter (45344), added some changes to improve issues with selection of content in the browser (especially "backwards" selection), will now hide the 'phantom' overlays for non-editable content blocks if the mouse leaves the page (43461). Additionally, the dependency on a key library called 'rangy' was refactored, and the broken copy-and-paste support between VisualEditor instances was removed, in anticipation of better copy-and-paste to work with non-VisualEditor surfaces as well.

A complete list of individual code commits is available in the 1.21/wmf11 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-03-04 (MW 1.21wmf11)"/>

2013-03-18 (MW 1.21wmf12)
<section begin="2013-03-18 (MW 1.21wmf12)" />VisualEditor was updated as part of the wider MediaWiki 1.21wmf12 branch deployment on Monday 18 March. In the two weeks since 1.21wmf11, the team have worked on building infrastructure for the new features that we are adding for VisualEditor's wider launch as the default way users will edit wikis.

In the way that the code integrates with MediaWiki, the save button now will be disabled if a user makes changes and then undoes all of them (42939). When an error happens with the Parsoid server, those errors are split out so that the user can report what broke in a way that we can trouble-shoot their issue (44354). When the Parsoid server is not responding, the code supplies a better error message for users (45916).

When selections are auto-expanded to the current context (when a user double-clicks on a word), we now better cover the concept of a 'word boundary', working towards Unicode's definition (44085). Lists now don't get corrupted for Parsoid when "unlist"ing their contents, removing their 'generated' property (45590).

Leaving the link inspector no longer clears a link accidentally (46025). The document model layer now presents categories (and other kinds of meta-content, like language links) for editing to other parts of the code base ahead of supporting user editing of categories in VisualEditor (39597), which is one of the four major features planned before wider launch.

A complete list of individual code commits is available in the 1.21/wmf12 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-03-18 (MW 1.21wmf12)"/>

2013-03-monthly
<section begin="2013-03-monthly"/>In March, the team worked on the major new features that will be added in the coming months. The objective is for VisualEditor to be the default editor for all users, capable of letting them edit the majority of content without needing to use the wikitext editor, in July 2013. This will mean adding support for references, (at least) basic templates, categories and images, each of which is a very large piece of work. This month the primary focus was editing of categories and templates, with draft designs created and initial code developed. The team undertook its first ever "Quarterly Review", whose slides detail these designs, the work done to date and expectations for the near future. The alpha version of VisualEditor on mediawiki.org and the English Wikipedia was updated twice (1.21-wmf11 and -wmf12), adding better input and selection support, fixing a number of bugs, and restructuring the back-end so that the new features will be simpler to create.<section end="2013-03-monthly"/>

2013-04-01 (MW 1.22wmf1)
<section begin="2013-04-01 (MW 1.22wmf1)"/>VisualEditor was updated as part of the wider MediaWiki 1.22wmf1 branch deployment on Monday 1 April. In the two weeks since 1.21wmf12, the team have worked on building infrastructure for the new features that we are adding for VisualEditor's wider launch as the default way users will edit wikis. This has been primarily in three areas - the data model, the user interface widgets, and the user interaction content-editable "surface". Work on the dialogs to edit categories, templates and media items continues.

The team also undertook its first ever "Quarterly Review", whose slides and minutes detail these designs, the work done to date and expectations for the near future.

A complete list of individual code commits is available in the 1.22/wmf1 changelog, and all Bugzilla bugs closed in this period on Bugzilla's list.<section end="2013-04-01 (MW 1.22wmf1)"/>

2013-04-15 (MW 1.22wmf2)
<section begin="2013-04-15 (MW 1.22wmf2)"/>VisualEditor was updated as part of the wider MediaWiki 1.22wmf2 branch deployment on Monday 15 April. In the two weeks since 1.22wmf1, the team have worked on the new features for VisualEditor's wider launch as the default way users will edit our wikis - more details in.

The most significant chunks of work in this period were: "the great annotation refactor of 2013" to more reliably let us extend our data model (46464 and others), back-end work for letting users alter a template's parameters and see the page update before it is saved, and adding initial support for the media item (37870) and category editing dialogs. We made a number of fixes for Internet Explorer to do with selection of and around media items ahead of wider work in this area, better support for complex Unicode when moving or selecting through the document with the keyboard (46794), and changing the integration to avoid over-riding the edit tab's label for wikis that have changed it (42117).

A complete list of individual code commits is available in the 1.22/wmf2 changelog, and all Bugzilla bugs closed in this period on [//bugzilla.wikimedia.org/buglist.cgi?query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&target_milestone=VE-deploy-2013-04-15&product=VisualEditor&list_id=194766 Bugzilla's list].<section end="2013-04-15 (MW 1.22wmf2)"/>

2013-04-29 (MW 1.22wmf3)
<section begin="2013-04-29 (MW 1.22wmf3)" />VisualEditor was updated as part of the wider MediaWiki 1.22wmf3 branch deployment on Monday 29 April. In the two weeks since 1.22wmf2, the team have worked on deploying the VisualEditor opt-in alpha to more wikis, and on the new features for VisualEditor's wider launch as the default way users will edit our wikis: Categories, Templates, References and Images.

Fixed a number of bugs and regressions, including the 'bold' button not allowing you to un-bold some text (47680), fixing the link inspector throwing out "undefined" in some cases and other issues (47413), cleaning up the deployment including making the feedback link language-variable and having VE allow users preferences on non-deployed wikis (42936), avoiding a Firefox bug where shift-right caused characters to be deleted (47711), fixing a failure to let users convert between paragraphs and headings when next to an inline node (41203), and changing the integration so that the VisualEditor is now the editor behind the "Edit" tab (47396).

Additionally, we adjusted our code that faces Parsoid to adapt to changes there and not fail when editing non-current pages (47434), fixed a problem of blank paragraphs getting inserted in some cases (46800), worked around a bug in jQuery that meant that references and other tags were getting corrupted (47417 and later 47737), avoided leaving trailing paragraphs when inserting content at the start or end of a paragraph (46799), made some speed improvements in the editing surface and the back-end (47343), and informed the user when a failure happens on serialisation (47581).

In experimental code that is not live on the Wikimedia servers yet, on images (37870) we added initial support for displaying and editing inline and thumbnail images, resizing of images, selection of images and other generated content with cursor keys (38129), and drag-and-drop relocation of images and other nodes. For references (39599) we added some infrastructure support for references. For templates (39598) we ensured that templates re-serialise to their original HTML if unchanged (47394).

A complete list of individual code commits is available in the 1.22/wmf3 changelog, and all Bugzilla bugs closed in this period on [//bugzilla.wikimedia.org/buglist.cgi?query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&target_milestone=VE-deploy-2013-04-29&product=VisualEditor&list_id=194766 Bugzilla's list].<section end="2013-04-29 (MW 1.22wmf3)"/>

2013-04-monthly
<section begin="2013-04-monthly"/>In April, the team continued their work on the major new features that will be added in the coming months. Our objective is for VisualEditor to be the default editor for all Wikipedia users, capable of letting them edit the majority of content without needing to use the wikitext editor, in July 2013. This means we have been focussed on four substantial areas of work: adding support for references, templates, categories and media items. During this time the main area of our work was editing around images, which is now designed and partially implemented in our experimental code, and around categories, which is almost complete and nearly ready for deployment. The deployed alpha version of VisualEditor was updated thrice (1.22-wmf1, 1.22-wmf2 and 1.22-wmf3), adding speed improvements, user interface improvements and work on the back-end to better support the new features, and fixing a number of bugs. We also were able to [//blog.wikimedia.org/2013/04/25/visualeditor-alpha-in-15-languages/ deploy the VisualEditor to fourteen more Wikipedias as an opt-in alpha] (and, later, Vietnamese Wikipedia too), which has let the community give us feedback on what works and is broken, and identifying language- and locale-specific issues we are now fixing.<section end="2013-04-monthly"/>

2013-05-13 (MW 1.22wmf4)
<section begin="2013-05-13 (MW 1.22wmf5)" />VisualEditor was updated as part of the wider MediaWiki 1.22wmf4 branch deployment on Monday 13 May. In the two weeks since 1.22wmf3, the team have worked on the new features for VisualEditor's beta launch as the default way users will edit our wikis: Categories, Templates, References and Images.

The VisualEditor now lets users edit the contents of  blocks (47907) as if they were normal mark-up - though not the blocks themselves, such as setting arbitrary CSS, which will come later. Work on enabling the editing of categories is almost finished with the addition of a way of setting in the interface (46465), and support for moving, altering and inserting new images and references is also improving rapidly. Progress on template editing is at an earlier stage, with core back-end support mostly finished at this point.

We made quite a few changes to the MediaWiki integration layer. Most obviously, we now use SVGs rather than PNGs for the graphical elements of the interface, so it scales nicely for users who zoom in (48148). The "Edit source" tab now appropriate becomes active when it is being used (47452), appears on all pages, not just view (47776), and the "Edit" (VE) tab now points to the newly-updated page once you've made an edit (47420). The Vector drop-down menu's change behaviour no longer hides it behind the VisualEditor toolbar (48078)

We improved some issues with the Opera browser (47772) and now warn logged-out users appropriately about the consequences of their editing (47842). Pre-save diffs now give a more reasonable message when there are no changes to be made (43754), and now work when the diff is aborted and restarted (44446). Pages that are not wikitext content (such as user CSS or JS items) will now not trigger VisualEditor (47456). We added a new access key for accessing VisualEditor - Ctrl/Ctrl - restoring the regular edit access key to the wikitext editor (48107).

We also made a number of fixes for RTL environments. First, the link inspector now works for RTL environments, but allows LTR content for Web links (47717). For multi-script variant wikis, content displayed with one variant whilst the user's interface is in a second now works correctly (33175). Un-editable blocks ("aliens") now appear in RTL environments correctly (47746). Finally, the "Edit" (VE) tab now appears down-tab rather than up-tab of the "Edit Source" tab (48017).

On the integration with Parsoid, we cleaned up a number of items of code including removing change markers (45061), and fixed some problems with trailing whitespace on paragraphs and table cells being dropped (47712). Content with different names for the same annotation now serialises to the same wikitext (48110), and serialisation of data with DOM elements is now fixed (47948).

Finally, we fixed a number of other bugs, including ugly issues with pawn characters being created in list and paragraph editing (48287, 48286, 47817, and 48346), with indenting and outdenting of multiple list items (48390), and with splitting list items (48386). Categories that appear in sub-sub-pages don't get corrupted when the page is being edited (48408), and in Firefox, we fixed editing a page causing the entire editor to go blank (47834) and non-character keys being interpreted as real ones (48022). Trying to set a link covering the first character of the document no longer causes VisualEditor to crash (47623), and links now don't wrongly appear to extend when you type after them (48171 and 48114).

A complete list of individual code commits is available in the 1.22/wmf4 changelog, and all Bugzilla bugs closed in this period on [//bugzilla.wikimedia.org/buglist.cgi?query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&target_milestone=VE-deploy-2013-05-13&product=VisualEditor&list_id=201511 Bugzilla's list].<section end="2013-05-13 (MW 1.22wmf4)" />

2013-05-27 (MW 1.22wmf5)
<section begin="2013-05-27 (MW 1.22wmf5)" />VisualEditor was updated as part of the wider MediaWiki 1.22wmf5 branch deployment on Monday 27 May. In the two weeks since 1.22wmf4, the team attended the Wikimania Hackathon in Amsterdam, working with the community to improve VisualEditor and help them, and, ahead of VisualEditor's launch as the default way users will edit our wikis in beta, worked on the new features: Categories, Templates, References and Images.

In terms of improvements to the integration with MediaWiki, we have a number of changes. When the diff result is null because we think you've made no changes, we say so rather than give a confusing blank diff table (43754); wikitext edit conflict handling is now integrated into the save dialog rather than punting you out of VisualEditor (42522); minor edit checkboxes get pre-set (48347), and you get a warning about not having set an edit summary (47752), based on your preferences; when editing old revisions, you are now warned about this (47683); we now show "Editing …" in the browser title when in VisualEditor, like for the wikitext editor, so that it's clear which of your tabs is editing (48272).

We give a better error message if Parsoid is unavailable during diffs (47581). If the edit token we're using is detected as invalid, we ask for a new one (42984). The edit summary field correctly counts the number of characters entered when using non-ASCII characters (47718). The <visualeditor-feedback-link> message is now shown in the content language, rather than the user language (47730). We now won't load for pages which are redirects as they can't yet be edited (47329). We show "create source" rather than "edit source" for the wikitext editor tab for non-existent pages (47421). We don't disable the save dialog when editing a prior revision (48584). Pre-formatted text blocks now word-wrap rather than character-wrap (38043).

Auto-selection expansion now behaves at the ends of paragraphs as elsewhere (48487), and the link inspector now understands that the first characters of links being auto-capitalised based on wiki context doesn't make them different links (48476). The toolbar clears floated items to avoid mis-alignment (48734). VisualEditor should now work with non-BMP Unicode characters (48630). Finally, we fixed a couple of breaks in the link inspector button (48509 and 48549), in pasting text (48602 and 48603), and some problems when moving back to read mode whilst VisualEditor was loading (48520 and 47813).

A complete list of individual code commits is available in the 1.22/wmf5 changelog, and all Bugzilla bugs closed in this period on [//bugzilla.wikimedia.org/buglist.cgi?query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&target_milestone=VE-deploy-2013-05-27&product=VisualEditor&list_id=204657 Bugzilla's list].<section end="2013-05-27 (MW 1.22wmf5)" />