= Move Off Trac = The goal of this page is to cover the phases of a project aiming at moving some critical features from Trac to an other solution (or combination of). More information about the start of this project can be found in ticket #4095. Discussions also happened in Nuts&Bolts meetings: see from WeeklyMeeting#April22024. == Scope == === Goals and Requirements === 1. MUST replace Trac as currently used for Ticket and Wiki by some alternative(s): * MUST look better: current UI looks old which makes the Tahoe-LAFS project looking dead * MUST be better maintained: Trac is dying? max 2 contributors per month - https://openhub.net/p/trac * MUST be easier to maintain: Trac is difficult to update (current = v1.0.13/2016-09-11, latest = v1.6.0/2023-09-23)? * MUST allow Self-Registration (Trac requires manual registration via email) * COULD support OAuth2 with Github? * MUST be (F)OSS * MUST be self-hostable * note "able": MUST be a story for getting to a self-hosted instance if we want * ..but doesn't have to be self-hosted right away 2. MUST replace the current landing page (start/home page from the Trac/Wiki): * preferably with a static blog/page generator updated from a Git repo (e.g.: (Go)Jekyll, Hugo) * possibly with a LAMP stack as discussed: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3892 3. MUST replace the current binary repository for Tahoe-LAFS releases (https://tahoe-lafs.org/downloads) * by providing at least a similar way to transfer files via ssh 4. COULD be used to replace: * Github code hosting and review (pull request), keeping only a mirrored clone * Github Actions (to avoid leaving secrets in environment variables) * Circle CI (to avoid giving them too many permissions) === Inclusions === * Trac users of the Tahoe-LAFS project * Trac issues of the Tahoe-LAFS project * Trac wiki pages of the Tahoe-LAFS project * Trac HTML home page of the Tahoe-LAFS project * Hall of Fame HTML page of the Tahoe-LAFS project * The related DNS records (mostly: tahoe-lafs.org) === Exclusions === * Other Trac projects (see DevInfra) * Buildbot master instances for some other Trac projects * DARCS SCM for some of the other Trac projects * Any other services provided by the current server and not yet documented in DevInfra === Deliverables === 1. A VPS (hosted by Hetzner) providing the following features powered by NixOS and Gitea: * a tracking system provisioned with the issues migrated from Trac (same numbers) * a Wiki system provisioned with the relevant pages migrated from Trac (same names) * a static website replacing the landing page from Trac with the code required for CI and CD * a blog post for the Hall of Fame page (if sensible - fallback = static page) * a (Git) repository defining the VPS it-self and its configuration as code (including the secrets using sops) * optionally including the terraform code allowing to manage the related DNS records (if Gandi supports it) 2. A detailed migration plan to handle the transition (DNS changes and/or redirections) * documented in a this wiki page * covering the possible manual steps related to DNS records, HTTP redirections or URL rewriting * with a (Git) repository including/referring to the tools used to actually migrate 3. An high-level migration plan for the features hosted on the VPS described to be later hosted on Codeberg SaaS (assuming it is possible) * documented in this wiki page too == Deliverable 1 - self-hosted Gitea/Forgejo on NixOS == 1. Testing * Issues and Wiki can be provided by Gitea/Forgejo: * https://code.lafs.eval.latfa.net/tahoe-lafs/trac-2024-05-23: 1st migration with many issues * https://forge.lafs.eval.latfa.net/tahoe-lafs/trac-2024-07-25: 2nd second migration with a few issues left * Known issues (#1170 is a good example): * tables are not correctly converted to MD * authors need to be created as user before the migration to link contributions to their profile * some original links are still not converted and points to tahoe-lafs.org (e.g.: http://!?) * more? * Website can be provided by Nginx and build from a Git repo hosted by Gitea: * https://www.lafs.eval.latfa.net/ * The mock is more minimalistic and the PoC site have to be rewored this way 2. Production * TBD == Deliverable 2 - migration plan from Trac to self-hosted Gitea (or Forgejo) == 1. Testing * https://github.com/tahoe-lafs/MoveOffTrac * Where to document the steps (now in org-mode) 2. Production 1. new alias legacy.tahoe-lafs.org hostname + cert renew? req: * root access > meejah OK * DNS zone access > brian + meejah OK (gandi.net) 2. migrate from Trac to new VPS 3. tahoe-lafs.org to new VPS + redirect/proxy to legacy == Deliverable 3 - high-level migration plan from self-hosted to SaaS - Codeberg == 1. Testing * Issues and Wiki page have been migrated from Forgejo to Codeberg: * https://codeberg.org/Tahoe-LAFS/trac-2024-07-25 * Known issues: * all links to contributors are broken (likely because Codeberg does not allow this? maybe the user needs to be local and in the org first?! ) * all links to comments are broken (likely because they use the ID from the source!) * all the link to attachment are broken 2. Production * TBD == Pros and Cons of self-hosted vs SaaS == === Gitea on self-hosted NixOS === Pros: * Links to issues and wiki pages should work (WiP) * Attachments are migrated and available * Links to comments and attachments work * Links to old and authors work (if pre-provisioned) * Nearly ready to MoveOffTrac (within one month) * Many options to fix content later (e.g.: full access to DB) * Website already works with CI/CD * CI/CD works like Github and CAN cover all platform Cons: * VPS required (8$/m) * Decent baby-sitting required: updates, monitoring and backup/restore (how many h/m?) * Poorly scalable, but could perform better than SaaS (DoS protection?) * Registration (spam) still need babysitting, but less than for Trac (semi automatic) Questions or remarks: * Maybe LA could manage the self-hosted instance for a short term (e.g.: 1 year)? === Forgejo on SaaS - Codeberg === Pros: * Smaller VPS (5$/m), but still required for redirection (stateless, maybe possible w/o?) * Minimal babysitting: updates and monitoring (how many h/m?) * Free of extra charge on Codeberg (20$/user/m on Gitea!) * Should be scalable, but performance could be a problem (at least on Codeberg!) * Registration (spam) is handled by Codeberg Cons: * Links to authors are broken (likely on purpose - to be verified with Codeberg) * Delays MoveOffTrac (unless we agree on 2 steps) * Reduced options to fix the content later (e.g.: no access to the DB) * Jekyll website needs to be adapted to work on Codeberg (pages) * CI/CD works differently from Github/Gitea (but possible) Questions or remarks: * Links to comments are broken: likely a bug, but on which side? * Links to attachments are broken but is there any attachment at all? * Should we test a free plan on Gitea.com (with CI/CD)? * What cost CI/CD on Codeberg vs Gitea.com? (for Win and Mac?)