Migrate the Developer Portal v2 prototype from github to GitLab as production version. The prototype should not be seen as a copy-over artefact, but rather a reference to know what elements and behaviors to bring over to production with a more maintainable and sustainable structure. Scripts and production processes might be good ideas to bring over with some tidiness.
Migration status
Everything that needs to happen to move the prototype across. Ticked items are done and are merged.
NOTE: Some of those items can be canceled if we think we should not migrate those behaviors, change the way they're done completely, or rewrite them in the new site.
This list should be a helpful reference, not a prescriptive work order.
Pages and content
- Markdown pages, one route handling every language
- Basic page styling: headings, lists, tables, code, quotes, images
- A page that isn't translated falls back to English, with a note to the reader
- Error page, in the site shell and the reader's language
- Richer page blocks: code tabs, callouts and alerts, highlight panels, cards, link rows, reusable snippets
- Content for 40 of the 42 menu destinations (Talk to @apaskulin before moving content)
Page shell
- Header with the Wikimedia mark and the site name
- Top menu, built from one configuration file
- Side menu showing the current section, which a page can switch off or swap
- "On this page" list of the page's sections
- Footer with the content licence and the policy links
- Light and dark mode, with a control in the header
- Right to left
- Phone, tablet and desktop
- Copyright line in the footer. Waiting on a decision about who it should credit.
Languages and translation
- Interface text comes from translatewiki (74 messages, each documented for translators)
- Catalogue of 575 languages, generated by a script we run by hand
- A language is only offered once enough of it is translated
- Separate thresholds for interface text and page text
- A language that has qualified stays, even if its percentage later drops
- Simple language picker in the header
- Full language picker: type to search, shows each language's own name and its English name
- Translated page content through translatewiki. Needs the changes the documentation team asked for first. (Talk to @apaskulin)
- Confirm the repository is registered with translatewiki. Nothing in the repository does this, so no translations will arrive until it is.
- Decide whether the threshold check stays in the build or moves to a script we run and review
API reference and explorer
- API reference embedded and styled (Scalar)
- The explorer itself: picking a wiki and a module (community api reference)
- Enterprise version: bespoke widget lightly displaying Enterprise's OpenAPI spec
- Wiki and module catalogues. A script sweeps the Wikimedia wiki fleet and saves what it finds as "source of truth" of available modules and which instance they are available on. The explorer can't work without it, and it's the biggest script in the prototype. It is also used for "deep linking" directly into the explorer, especially for "quick" links that do not include wiki instances (module-only links)
- Links that open the explorer at one wiki, module and endpoint (deep linking)
- Translated labels inside the API reference
Search
These are likely one of the bigger challenges given our breadth of language support and number of instances: ~800 instances, each with ~25 modules, each can be served in ~400 languages, and each module can have anywhere from 5 to 50 endpoints. There are explorations to be made here on how to resolve search (is it multilingual or English only, is it per-module or endpoint-specific, etc) and then see what product (@HCoplin-WMF ) decides for scoping, depending on available solutions.
- Content search
- Multilingual search
- Endpoint search
Exposure
These require some exploration:
- SEO support (sitemap? robots.txt? etc)
- AI Optimization (llm.txt? static module catalog?)
Build and hosting
- Every page built as static HTML
- Automatic checks on every merge request: tests, types, translator documentation, generated files
- Netlify preview for every merge request
- Keep the _dev pages out of the production build
- Make missing pages fail the build instead of just being counted
- Run the static build in CI, not only the normal build
- Decide where the site is hosted, and write down the deploy steps