VisualEditor/2012-13 Q1 forward-look

This is the forward-looking plan for the VisualEditor team (including Parsoid) for the 2012-13 Q1 cycle (i.e., from the start of July through to the end of September 2012).

Priorities for this quarter

 * Getting the APIs formulated (so we can check that our plans work for us)
 * Getting other people involved (so we can check that our plans work for people other than us)
 * Working through the core functions and types of content ("nodes") that people will expect for MW

Browser matrix

 * This is not final, but work-in-progress for the VE team; data current as on end-June 2012.

The unofficial rule for Wikimedia's browser support is that we try to support reading'' (and not necessarily other functions) for all browsers used by at least 0.1% of page hits based on the WikiStats data. However, VE is complex and requires some specific advanced browser features (most specifically, ContentEditable support, but also very wide JavaScript support), which limits the platforms we can support either technically (indicated by being struck through) or resource-wise (indicated with a ).''

Removed from plan

 * Mobile
 * Sentence-level editing on wikitext editor(?)
 * This is no-longer deemed to be part of the VisualEditor work; for people that can use VE, this would be redundant with the way VisualEditor works nowadays, as edit mode is similar to view mode, so sentences are not visually "lost". We will pass this to the Mobile team to see if they want to implement it for non-VE ("Wikitext") editing, e.g. on mobiles that do not support

Areas of work
In general, for "alien nodes", adding support for templates, parser hooks and other generated content, which is relatively much more work for Parsoid than for VisualEditor itself (which 'just' needs alienation support in DM and UI/CE support generally).


 * Data Model
 * List operations (splitting, adoption, indent/outdent) (inc. DLs?)
 * 


 * ContentEditable
 * Support for IME
 * -> Inline images handling
 * -> Thumbnails for files
 * Alien Node handling (cursor interaction)
 * Improve support for keyboard text insertion (it still breaks in certain cases)
 * 


 * UI
 * Object inspectors (how to edit parameters to template, options for thumbnail, etc)
 * Scalable toolbar design?
 * 


 * APIs!
 * And, in general, moving to dynamic rather than static registration of node handlers/etc.
 * Switch Parsoid and VE to RDFa - http://www.mediawiki.org/wiki/Parsoid/RDFa_vocabulary - Roan & Gabriel
 * DM API that's kind of jQuery-like - Roan lead
 * APIs(?) for toolbar buttons, inspectors and keyboard events (key-bindings) - Trevor & Rob as leads
 * API for node types (based on both HTML node name and RDFa type) - Trevor & Roan
 * Plan
 * Documentation first - http://etherpad.wikimedia.org/VE-API ?
 * Encourage a FEW people to look at using it - and tell us what's missing/what would be good to have, perhaps try implementing it in a dev env'ment
 * A few core methods, as different as possible
 * mediawiki.org-deployed extensions (e.g. Cite)
 * Wikia extensions (e.g. YouTube embeds, Polls!)
 * Diverse extensions by our valued volunteer developers


 * Parsoid
 * template range identification
 * parser function / magic word APIs in core
 * misc work in http://www.mediawiki.org/wiki/Parsoid/Todo
 * chase long compat tail
 * start port to C library? (perhaps 2nd Quarter - Oct-Dec 2012)
 * integrate with Lua binary / PHP extension
 * parallelize and memory-optimize
 * see what else we need to integrate into core
 *  - especially, how to extend Parsoid with funky functionality
 * Work out what our tarball strategy is. :-) (the same as Lua, if that works out)

Open Questions

 * Edit conflicts?
 * Editing of non-content syntax
 * Categories and their sort keys
 * Language links (interwiki langlinks)
 * Behaviour magic words like
 * Magic words (content syntax)