Migrate our blueprints out of tails.git and tails.boum.org
_Originally created by @sajolida on [#9174 (Redmine)](https://public-redmine-archive.tails.boum.org/code/issues/9174)_ # Rationale We want to migrate our blueprints out of our main website and in their own ikiwiki. This will allow us to: - Be able to push more documents to our blueprints (images, office documents, etc.) without polluting our main repo. - Lock down all web editing on our main website. - Allow more people to push changes to blueprints through Git if they prefer this to the web editor. - Maybe lower the amount of spam intrigeri and sajolida have to monitor and manually revert. - Maybe some day, host our website on servers that we don't trust to push to tails.git. See <https://lists.autistici.org/message/20150327.141615.36482193.en.html> # The plan - [x] Create a new GitLab project where this wiki will live - [x] Automate the migration of the contents - [x] Create a Git repo history that only contains blueprints - [x] Replace internal ikiwiki links to outside of `/blueprint/` with hard-coded links to our website - [x] Preserve internal wiki links - [x] Replace ikiwiki shortcuts with hard-coded links - [x] Turn `tails_ticket` into GitLab issue link syntax - [x] Convert tables - [x] `german_glossary.md` - [x] `user_survey/openpgp_and_pidgin.md` - [x] `veracrypt.md` - [x] Replace other ikiwiki-specific syntax - [x] `[[!inline ...]]` - [x] `[[!tag ...]]` - [x] `[[!map ...]]` - [x] `[[!meta ...]]` - [x] `[[!toggle ...]]` - [x] Create a wiki home page - differentiate archives from non-archived - [x] Ensure resulting navigation is good enough - [x] Customize sidebar: direct links to the most commonly used pages - [x] Prepare other migration steps - [x] Figure out what to do with `monthly_report/simplified.md` - [x] Prepare `puppet-tails` branch with redirections from `/blueprint/*` to GitLab wiki - [x] Prepare `gitlab-config` branch with production settings for the `tails/blueprints` project - give RW access to the wiki to relevant folks (*Developer* status) - make the GitLab project public - [x] Prepare `tails/tails` branch - [x] Replace ikiwiki internal links to blueprints with hard-coded links to GitLab wiki - [x] Freeze ikiwiki blueprints - [x] Disable editing in `ikiwiki.setup` - [x] Ask committers to not push changes via Git - [x] Migrate the contents - **Checkpoint** — after this point, contents start diverging and rolling back the migration becomes difficult & expensive - [x] Merge !323 - [x] Merge & deploy `gitlab-config` branch (tails/gitlab-config!14) - [x] Merge & deploy `puppet-tails` branch (tails/puppet-tails!38) - [x] Delete blueprints from `tails/tails` - [x] Ensure the website builds - [x] Redirect https://tails.boum.org/blueprint to GitLab wiki - [x] Delete blueprints-specific config from `ikiwiki*.setup` in `tails/tails` - [x] Delete blueprints-specific config from `ikiwiki.setup.erb` in `puppet-tails` - [x] Merge `master` into `stable` and `devel` - [x] Ensure `stable` and `devel` build - [x] Announce the end of the migration # Our options The options we've been considering so far are: - a dedicated ikiwiki instance (blueprints.tails.boum.org) - a GitLab wiki (<https://docs.gitlab.com/ce/user/project/wiki/> - a non-wiki Git repository hosted on GitLab - [rendered example](https://gitlab.tails.boum.org/tails/tails/-/blob/master/wiki/src/blueprint/migrate_blueprints.md) | | GitLab wiki | GitLab repo | ikiwiki | | -------- | ---------- |------------ | ------- | | Edit pages | what you would expect from a wiki in 2020 | similar to wiki | nerdy, lacks basic features, preview is painful | | Create a new page | prominent _New page_ button | + button when in a directory | cumbersome: create broken link then click it | | Delete a page | _Delete page_ button on the rendered page | _Delete_ button on the rendered page | yes, in the page editor | | Rename a page | prominent in the page editor | inside edit page | yes, in the page editor | | Markdown syntax | powerful | powerful | lacks basic features (e.g. tables) | | Links to GitLab issues, MRs, commits, etc. | great | good but lacks status info such as "(closed)" | mostly manual, lacks status info such as "(closed)" | | Links to other wiki pages | great | a bit cumbersome: has to use _file_ path instead of page name | great | | Page history | simple | slightly more complex than wiki | nerdy: external cgit or similar | | Search | default gitlab search | default gitlab search | poor | | Navigation | customizable sidebar, breadcrumbs, manual index pages | plain filesystem tree, breadcrumbs, manual index pages | breadcrumbs, customizable sidebar | | Attach files | _Attach a file_ in page editor | no | yes, in page editor | | Table of contents | yes | yes | yes | | Drafting design doc | requires replacing GitLab-specific syntax | requires replacing GitLab-specific syntax | Can be seamlessly moved to our design doc (it does not rely on GitLab-specific features) | | Preserving habits | Behaves like everything else in GitLab | Behaves like everything else in GitLab | Historical contributors are used to it (whether they like it or not, is another matter, but at least they don’t have to learn anything new). | | New contributors | This is what new contributors would expect / are used to | uncommon workflow | nerdy stuff | | Access control | same as our other GitLab stuff | same as our other GitLab stuff | has to be managed independently | | Migration cost | low | low | high | | Maintenance cost | none | none | moderate | # If we decide to use ikiwiki These subtasks assume we use a new, dedicated ikiwiki for blueprints. If we decide to instead use a GitLab wiki, they'll need to be adjusted: - sysadmin#9175 - sysadmin#9176 - sysadmin#9178 - sysadmin#9179 - sysadmin#9180 - sysadmin#9181 - tails/tails#9182
issue