User:Cscott/Ideas

This page contains quick drafts of various "ideas" for Wikimedia projects.

Idea List

 * /Improved for-loops for Lua, an implementation based on ideas from User:Matmarex
 * /A Dozen Visions for Wikitext, thoughts for a possible talk at Wikimania
 * I should update and record the "wikitext WAT" talk; it's been a while since we talked about wikitext 2.0 as well
 * Unifying argument and return value types for transclusions
 * Dynamic typing (inspired by unEx/unCx/unNx in Chapter 7 of Appel's "Modern Compiler Implementation"): transclusion arguments (and return values!) should be an opaque type, with methods such as,  ,   etc to coerce to different forms.  If the argument is an HTML tree but the transclusion expects wikitext, it gets a strip marker; similarly if the transclusion returns HTML but is passed into a context expecting wikitext, the HTML gets stuffed into strip state.  If the argument is provided as raw text but the consumer wants wikitext, then appropriate wikitext escaping is done etc.  More thoughts here.
 * Somewhat orthogonally, there should be syntax forms for providing arguments as "expanded wikitext", "raw text" etc. Heredocs and extension tags provide some of this already, and    is another pattern commonly used; further discussion here.
 * Marking "Parsoid-generated content" (aka "HTML content compliant with the MediaWiki DOM Spec") in the DOM so that it can be distinguished from "raw HTML"/"extension-generated HTML" for proper post-processing; see T214994#9323382 for one proposal involving  and   on subtrees
 * Types for TemplateData: maybe JSON-LD? Use jsonschema or OO-LD/schema?
 * See also MCR slots for TemplateData: T56140 and TemplateData for extensions, parser functions, etc.
 * Put the "fetchTemplateDataFor($tranclusion): TemplateData" interface in core, leave details of extraction/mapping to extensions.
 * Opportunities for Content Transform Team
 * Rich Attributes in HTML (T339927) and OutputTransform/HtmlHolder
 * On the related question of marking subtrees for postprocessing: T214994#9323382
 * See also "embedsHTMLInAttributes" property in Parsoid's ExtensionTagHandler
 * On page data contexts: T122934#9196348
 * /Some thoughts on Global Templates, so called
 * Writing Scribunto modules in JavaScript w/ our existing production platform!
 * See User:Cscott/LuaTurtle -- the JavaScript code is at User:Cscott/LuaTurtle/JsCode and it uses the JavaScript-to-Lua compiler from https://github.com/cscott/lua-turtle, modified to work with Lua 5.1.
 * /Wikitext Composition and Extension
 * Orthogonal syntax for parser functions, magic words, and extensions: T204370, T204283, T204371
 * New Wikitext for Discussions
 * /On Resilience
 * 2030 Vision
 * 2018 Dev Summit Dreams (the five projects I'd like to see WMF undertake)
 * 2018 Dev Summit Position Statement ("one world, one wiki")
 * Wikimania 2018 poster
 * See also "Beyond Automatic Translation: Aligning Wikipedia sections across multiple languages".
 * https://direct.mit.edu/coli/article/48/3/673/111479/Survey-of-Low-Resource-Machine-Translation
 * Integrating MediaWiki
 * Amazing Article Annotations
 * Merge tools for draft namespace (also T105173)
 * Wikimania 2018 poster
 * See also User:HaeB/Timeline of distributed Wikipedia proposals
 * Native script editing (pig latin/en, en-gb/en-us, zh-hans/zh-hant) (T17161, T113002, T87652)
 * See also English is a Dialect of Germanic
 * Wikimania 2017 talk
 * 2013 notes on language conversion
 * Wikimania 2018 poster
 * T33015: Convert between English variants
 * libicu and/or FST-based converters
 * See also https://crates.io/crates/zhconv and https://crates.io/crates/zhconv-cli (which also reference several other similar projects in the credits!)
 * https://github.com/wikimedia/mediawiki-libs-LangConv is a bidirectional FST-based converter
 * Real-Time collaboration
 * Chat rooms per article (w/ harassment reporting mechanisms which save logs): Tackling chat
 * Making WikiProjects into user groups
 * Start session (w/ explicit link, from wikiproject page)
 * Surfacing existing edit sessions
 * Prototyping the majority-vote session save
 * saving in-progress sessions in transient storage
 * From Stas Malyshev on wikitech:
 * Ability to comment directly on parts of text. Right now to discuss the paragraph you need to go to talk, and then each time go back and  forth to keep in mind what we're talking about. High friction.
 * Ability to submit/approve changes. I know "be bold" works well in some cases, but in others I wouldn't presume to edit somebody's text  without their approval. However, if I could submit an edit for their  consideration, which they might approve - that might work better.
 * Better diff notifications
 * 2016 Editing Offsite notes (officewiki)
 * Wikimania 2017 panel
 * HTML-only or markdown or wikitext 2.0 wikis (T112999, T112996)
 * Wikitext 2.0
 * "Grunge" strawman: T149659 (and slides from a 2017 devsummit here)
 * Visual Template Editing
 * Integrated video
 * [[File:"Rethinking the layout of Wikipedia articles" by users cscott, Daniel Case & Ter-burg 1.jpg|thumb|Discussion "Rethinking the layout of Wikipedia articles" at Wikimania Esino Lario 2016. Design by [[User:cscott]], User:Daniel Case and User:Ter-burg. Notes of the session: https://etherpad.wikimedia.org/p/Wikimania2016-discussion3b|none]]
 * Integrated VR/panorama
 * [[File:"Rethinking the layout of Wikipedia articles" by users cscott, Daniel Case & Ter-burg 2.jpg|thumb|Discussion "Rethinking the layout of Wikipedia articles" at Wikimania Esino Lario 2016. Design by [[User:cscott]], User:Daniel Case and User:Ter-burg. Notes of the session: https://etherpad.wikimedia.org/p/Wikimania2016-discussion3b|none]]
 * Better styles
 * HTML backend for OCG
 * Better server infrastructure for OCG
 * Beautiful print styles (see T151952 and linked tasks) and Rethinking the layout of Wikipedia articles; TheDJ has also prototyped some improvements as discussed here
 * Integrated Node.js/PHP runtime: see T114457 for philosophy and node-mediawiki-express for implementation
 * IdeaLab for WMF staff
 * Balanced templates
 * Heredoc arguments for templates
 * Glossaries
 * Proper offline support. This is a very deep topic!  Some pointers:
 * Kiwix
 * olpc nell-wikipedia
 * See this description of Android Go: https://arstechnica.com/gadgets/2017/09/android-8-0-oreo-thoroughly-reviewed/8/#h1
 * ...especially the description of the "YouTube Go" interface. They actually seem to understand their userbase; eg "users can even share downloaded videos locally over Wi-Fi rather than re-downloading them from the Internet": v. important when paying by the byte
 * Redo the geo-located maps of "articles by region", which distort the significance of regions with zero articles but also zero population. Instead map the inverse: put one icon on the map for every 10,000 people (say) w/o a Wikipedia article without 10 miles (say) of their location.  Now clustering of icons accurately portrays underrepresented people. (Inspired by https://xkcd.com/1939/).

Big picture
Annotation Service -> Content Translation paragraph relations -> Better UI for finer grained relations -> Maintaining translated content

Annotation Service -> Comments in VE

Annotation Service -> Precise citations

Merge tools -> Resolve edit conflicts w/ save

Merge tools -> Offline editing

Merge tools -> Maintaining translated content (ultimately replacing language converter)

Merge tools -> multiway merge (both english & german -> czech)