Session
- Track: Local Development and onboarding
- Topic: On-wiki documentation & documentation as code: strengths, weaknesses, and compromises
- Location: Azalea room
- Time: Wednesday 2019-11-13 13:30 EST
Description
Wikimedia technical documentation lives both on wiki (mediawiki.org, wikitech.wikimedia.org, meta.wikimedia.org, etc) and off wiki (through the source repository, https://doc.wikimedia.org/, etc). In this session, we’ll compare the advantages and disadvantages of these two approaches and discuss ways to improve the experience for both.
Questions to answer and discuss
Discoverability
On-wiki docs are searchable within a single wiki, but these searches don’t include content from other wikis or from off-wiki docs. How can we improve the discoverability of off-wiki docs?
Discussion topics:
- Creating on-wiki landing pages that link to off-wiki docs.
- Transcluding off-wiki docs into wiki pages
- Example extension: https://www.mediawiki.org/wiki/Extension:GitHub
- Technical challenges
- Update process
- Caching
- Security
- Expanding the reach of search to include content across wikis or across sources
- Code search: https://codesearch.wmflabs.org/search/
Maintenance
When docs are stored in the same repository as the code they describe, either as separate files, code comments, or generated using a tool, doc updates can be made in the same patch as code updates. In this case, code reviewers should request that patch authors add docs if needed before patches are merged. For docs stored on-wiki, it can be more difficult to keep the docs in sync with code changes. What workflow improvements could be made to make on-wiki docs easier to maintain?
Discussion topics:
- Linking to applicable wiki pages in code comments
- Continuous integration that looks for the patch ID in an edit summary
- Publishing wiki docs with an “open patch” label that can be removed once the patch is merged
Translation
While on-wiki docs can take advantage of established translation workflows, translation for off-wiki docs can be challenging to support. What processes or tooling can we put in place to make translation easier for off-wiki docs?
Discussion topics:
- Example: The generated docs for MediaWiki Action API support localization through https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/master/includes/api/i18n
- Publish guidelines for off-wikis docs wanting to support translation
Related Issues
- T91626: Technology to transclude git content into wiki pages
- T155024: Store structured data needed for MediaWiki documentation
- T155029: MediaWiki.org: Generate infoboxes from extension.json in git
- T222479: Display autogenerated extension information in Template:Extension
- T157757: Multiple MediaWiki hooks are not documented on mediawiki.org
Pre-reading for all Participants
- Technical documentation templates and suggestions: Overview of various technical documentation types and their characteristics
- Technical writer guide
- Maturity model for MediaWiki technical documentation
Notes document(s)
https://etherpad.wikimedia.org/p/WMTC19-T234634
Notes and Facilitation guidance
https://www.mediawiki.org/wiki/Wikimedia_Technical_Conference/2019/NotesandFacilitation
Session Leader(s)
- Bryan Davis (@bd808)
Session Scribes
- Chris Koerner (@CKoerner_WMF)
Session Facilitator
- Derk-Jan Hartman (@TheDJ)
Session Style / Format
World Cafe discussion and list generation.
The room will be setup with 3 stations, one for each of the Discovery, Creation, and Translation topics. Participants will be divided into 3 groups, one for each station, and rotate through the stations with 10 minutes for each group to discuss each topic. The goal of each group during each rotation should be to generate new ideas related to the station's topic, build on existing ideas left by prior groups, and cluster ideas which are similar in approach. During the final rotation, the goal expands to include producing a high level summary of the ideas generated in all 3 rotations to be used in a 5 minute summary to the whole room in the report back phase.
Tentative agenda:
- Welcome and introduction (10m)
- World Cafe round 1 (10m)
- World Cafe round 2 (10m)
- World Cafe round 3 (10m)
- World Cafe report back (15m)
- Wrap up and next steps (5m)
Post-event summary:
- Introduction
- Hello I'm Bryan Davis, Docs, docs, docs. Sarah R. as technical writer since S Page. Worked with Sarah and Alex to think about this space of documentation and distill it down into some things we can make some tangable progress on in an hour.
- Three questions to do some idea generation around. Not magically sovling problems, not getting into the weeds of tech details. High level tactics and ideas. So others can go back and look at them, and turn into projects.
- world cafe style. 3 groups, rotate through all three stations as long as we keep moving.
- the last round should also focus on clustering the elements found during the previous rounds
- Any questions?
- Q: 1. Is there any scope limitations - are only talking tecnical documenation or any documentation - tutorials, social, etc?
- Q: 2. Documentation as code, we all have an idea, what do you personally propose and understand under this umbrella?
- 1. Technical documentation, API, how to write code to extend or consume other code - Overarching Examples and FAQs are important but not in scope
- 2. Anything that does not require wiki-edits.
- Q: is the other direction of doc maintance in scope? Not so easy on gerrit, but easier on wiki.
- for doc maintanance question yes. Translation and discoverability, orthogonal.
- Session Questions
- Documentation discoverability
- On-wiki docs are searchable within a single wiki, but these searches don’t include content from other wikis or from off-wiki docs. How can we improve the discoverability of off-wiki docs?
- cluster: aggragation
- unifying and centralizing documentation
- cross wiki search
- creating a documenation search
- improving mw.org documentation
- cluster: consolidate
- remove outdated documentation
- define where docs should line/live?. In a single system, not in seperate systems.
- Add Tags to docs - like labels
- define clear entrypoints for different steakholders and provide good structure for their needs
- clear boundaries of software components. a library would have: readme, clear purpose, staffed
- better version tracking for docs
- remove duplicate/deprecated docs
- cluster: Use the content itself to be more discoverable
- SEO research to improve Google discoverability,
- make Youtube videos
- using github byline (repo description area) more actively,
- link to doc.wm.org from each repo readme
- use visitor statistics to highlight where your changes are effective etc.
- cluster: Content organization
- Structuring the content of documentation to be easier to navigate.
- High level tutorials (show relevant documentation for problem solving)
- create documentation that is workflow oriented.
- cluster: search improvements
- add option to search external sources to the global-search tool in toolforge
- cross wiki search of wikitech, mediawiki.org, and meta
- make docs.wikimedia.org searchable from mediawiki.org
- transclude markdown files in git repos to the wiki
- make doc search that merges wiki search and code search
- improve doc.wikimedia.org portal--design, examples, links to other document collections
- link to doc.wikimedia.org on Special:APISandbox
- Crosslink doc.wikimedia.org source and readme
- list of all doc locations. hub with search forms for each (SUL, wikitech, docs.wm.o, codesearch) or enter text once, click search, and it opens in a new tab for each backend
- cluster: higher level documents
- tutorials: people want to solve a problem. show them the relevant documentation based on that problem
- link to everything from a tutorial
- create workflow oriented documentation: problem -> find the code -> get into the code -> how to gerrit -> how to get review -> how review works -> have clear workflow
- cluster: aggragation
- On-wiki docs are searchable within a single wiki, but these searches don’t include content from other wikis or from off-wiki docs. How can we improve the discoverability of off-wiki docs?
- Documentation discoverability
- Documentation maintenance
- For docs stored on-wiki, it can be more difficult to keep the docs in sync with code changes. What workflow improvements could be made to make on-wiki docs easier to maintain?
- cluster: Just do it
- actually update docs
- implement a process of reviewing docs
- define per team quality standards for documenting/ set goals to improve
- just link to repos/document how to contribute docs
- link to affected docs from gerrit changesets
- cluster: reduce documentation in wiki
- Remove all docs from wikis and give up on making that happen
- make docs visible in IDE so good that documentation elsewhere is less important
- removing dud????? of on/off wiki by picking one per doc area
- cluster: automate all the things
- make it easier to/it is easier to/Autogenerate, documentation on-wiki from code
- bidirectional git <-> wiki sync on edit
- sync from git to wiki in the background
- automate detecting documentation touched/affected by patch
- autogenerate wiki pages (protected) from code
- parser function for telling wether a gerrit patch has been merged (and add a maintenance category)
- having tests be a place to check and validate what docs say is true
- cluster: unnamed
- transclude documentation into wiki content from code document (assuming it's better in code)
- put documentation in the code, allows for contributions like github inbrowser edit (even for non-techs)
- cluster: who should document/ensure documentation
- Hiring professionals to write/update the documentation, or poke people to do this (awerness).
- Or task QA people with this role.
- organize monthly/quarterly documentation sprints
- cluster: loose stuff/comments ?
- QUESTION: how to match knowledge to documentation needs
- PROBLEM: Translation pings for watchlisted pages are noisy
- Lead by example and others will follow
- bind documentation to the version of api/lib
- Extension.json is hard to document - configurations do have a description need to update to version 2. You can use a specific key (@ sign) for comments (https://www.mediawiki.org/wiki/Manual:Extension_registration#Retaining_documentation)
- cluster: Just do it
- For docs stored on-wiki, it can be more difficult to keep the docs in sync with code changes. What workflow improvements could be made to make on-wiki docs easier to maintain?
- Translation of documentation
- While on-wiki docs can take advantage of established translation workflows, translation for off-wiki docs can be challenging to support. What processes or tooling can we put in place to make translation easier for off-wiki docs?
- cluster: using structured data to generate documentation, using translatewiki
- Translatewiki integration with generated documentation
- Merge Translatewiki and mediawiki.org to share community
- have a code comment annotation like @translation {some-string-used-on-translatewiki followed by comment, then end with @endTranslation
- Translatewiki integration with SWAGGER
- Structured docs are easier to translate
- Reduce API, code & programming languages written
- cluster: make a comparative analysis to see what others are doing in the open source space for document translation
- cluster: having a single place for translation- move all the docs from the code to the wiki
- Move documentation from code to wiki
- sync code documentation with wiki; let it be translated on wiki; have links in ht ecode to the wiki page
- Put some basic docs from wiki into code; it could be translated there and synced back to the wiki; e.g. extension help page
- Translating code-docs in the repository itself and update it there
- cluster: technical solutions - machine generated solutions, using multi content revisions (for what we don't know, doesn't say) <-- Seems covered by line below...
- cluster: Using MCR to improve the onwiki translations system - onwiki translations can suck because process/system is complicated. MCR might enable several language versions of the same wikipage.
- Using MCR to store the data pulled from git.
- cluster: Don't do any translation of code docs - always going to be out of date, and hard to translate
- move mediawiki.org documentation to the respective repository
- do not translate code-level docs at all
- cluster: Celebrate translation 🎊
- get analytics of people who use machine translation instead of manual translations (can Google share this with us?)
- measure reach/return on investment for translation of docs by type (e.g. web api docs, tutorials, code internals, etc)
- Google translate (=automatic translation)
- cluster: using structured data to generate documentation, using translatewiki
- While on-wiki docs can take advantage of established translation workflows, translation for off-wiki docs can be challenging to support. What processes or tooling can we put in place to make translation easier for off-wiki docs?
- Conclusion
- Bryan thinks it went well! [it did].
Post-event action items:
- ...
Summary:
- Accepting the reality that there will be both on-wiki documentation and other general documentation that lives off-wiki.
- Improving discoverability and workflows
- Management of off-wiki documentation translations
- The results of this discussion were sent to full-time technical writers at the Foundation