sketch roadmap to an MVP demo #24
110
meeting-notes/2025-01-24-mvp-demo-roadmap.md
Normal file
110
meeting-notes/2025-01-24-mvp-demo-roadmap.md
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
# Target: Demo at Fediforum online conference 2025-04-01
|
||||||
|
|
||||||
|
This is a result of the [team discussion on 2025-01-23](https://git.fediversity.eu/Fediversity/intra/src/branch/main/2025-01-23-roadmap-discussion-fediforum.md).
|
||||||
|
|
||||||
|
# Goal
|
||||||
|
|
||||||
|
Demo the key aspects of Fediversity:
|
||||||
|
1. One-click deployment of Fediverse services
|
||||||
|
2. (stretch goal) One-click portability between hosting providers
|
||||||
|
|
||||||
|
The point of the demo is to communicate:
|
||||||
|
- That the project extists, what it is about, how it's special, and that it's progressing towards its goals
|
||||||
|
- That this is the infrastructure you can use to provide a micro-cloud to end users
|
||||||
|
- The ultimate goal is infrastructure portability
|
||||||
|
- That we care about technological and economic sustainability
|
||||||
|
- For organisations that want to participate in the Fediverse, we may be a good partner
|
||||||
|
|
||||||
|
Target audiences:
|
||||||
|
- Peers, potential clients, policymakers
|
||||||
|
- Hosting providers, organisations with sysadmins
|
||||||
|
|
||||||
|
# Assumptions
|
||||||
|
|
||||||
|
- There are ~47 (~9weeks) workdays between 27-01-2025 and 01-04-2025.
|
||||||
|
|
||||||
|
- Demo users will use the Fediversity infrastructure.
|
||||||
|
|
||||||
|
There are a few things we have to hard-code for now, so the backend setup won't be easily adopted by others, and this isn't the goal for the demo.
|
||||||
|
Eventually we'll also need to describe the infrastructure one needs to run the whole thing.
|
||||||
|
|
||||||
|
- At this point it's not clear if we'll manage to enable service portability.
|
||||||
|
|
||||||
|
Services ready to run on top of Garage: PeerTube, Mastodon, Pixelfed.
|
||||||
|
Making them portable is fairly involved though.
|
||||||
|
|
||||||
|
[Galene](https://github.com/jech/galene) doesn't have any state and only needs configuration files to be ported over.
|
||||||
|
But it doesn't have a NixOS service yet.
|
||||||
|
Likely we we'll only need the Nix expression once we have it.
|
||||||
|
|
||||||
|
# User story 1: Deployment
|
||||||
|
|
||||||
|
- Log in with NixPanel
|
||||||
|
- Configure a DNS domain and select services to deploy
|
||||||
|
- Observe a progress indicator
|
||||||
|
- (optional) Get a notification when the process finishes
|
||||||
|
- Check that the services are accessible under the configured domain
|
||||||
|
|
||||||
|
# User story 2: Migration
|
||||||
|
|
||||||
|
- Log in on a different instance of NixPanel
|
||||||
|
- Create a migration token (e.g. callback URL)
|
||||||
|
- Paste the token in the first instance and start migration
|
||||||
|
- Observe a progress indicator
|
||||||
|
- (optional) Get a notification when the process finishes
|
||||||
|
- Check that the services run on the new instance
|
||||||
|
|
||||||
|
# Roadmap
|
||||||
|
|
||||||
|
* Set up a Django [CRM](https://en.wikipedia.org/wiki/Customer_relationship_management) service ([as discussed 2024-11-06](./2024-11-06%20standup%20notes.md#working-session-architecture-discussion))
|
||||||
|
* Trigger NixOps4 on form submission:
|
||||||
|
* Requires a provider for the NixPanel to store deployment state and send progress updates
|
||||||
|
* Requires a Passbolt provider for dynamic secrets ([as discussed regarding secrets handling 2024-12-10](meeting-notes/2024-12-10-decision-making-meeting-dealing-with-secrets.md))
|
||||||
|
* First step: assume a fixed provisioned setup
|
||||||
|
* For (optional) migratio: VM provisioning will be handled via Ansible for now:
|
||||||
|
* A NixOps4 Terraform provider is currently planned but will not be ready in time
|
||||||
|
* Rebrand MyProtagio to Fediversity
|
||||||
|
* Remove the intermediate registrar and register DNS domains ourselves
|
||||||
|
* Demo users will register an actual domain (and a bulk service package) using a voucher token
|
||||||
|
|
||||||
|
# Next steps
|
||||||
|
|
||||||
|
* Define:
|
||||||
|
* Detailed scope
|
||||||
|
|
||||||
|
Which components need which capabilities to fulfill the user stories?
|
||||||
|
|
||||||
|
Example:
|
||||||
|
- We need a Passbolt provider for NixOps4
|
||||||
|
- We need a CRM to be set up and running, ready for triggering deployments
|
||||||
|
|
||||||
|
* Specific division of labor
|
||||||
|
|
||||||
|
Who exactly is responsible for which compononents?
|
||||||
|
Which time capcities are available for each contributor?
|
||||||
|
|
||||||
|
Example:
|
||||||
|
- Tweag: Valentin will do the data modeling, Nicolas will wire up deployment-related Nix code
|
||||||
|
- Procolix: Hans will help integrate the existing Ansible script to spin up VMs on demand
|
||||||
|
- Robert will develop a provider for NixOps4 to interact with the CRM
|
||||||
|
|
||||||
|
* Milestones (scheduled delivery of capabilities)
|
||||||
|
|
||||||
|
What are the component capabilities we can test together?
|
||||||
|
When can we provide these aggregate capabilities?
|
||||||
|
|
||||||
|
Example:
|
||||||
|
- Week 1: Spin up the CRM and configure a rudimentary data model
|
||||||
|
- Week 2: Let a fixed CRM user trigger NixOps to deploy a fixed config to a fixed existing VM
|
||||||
|
- Week 3: Configure SSH keys in the CRM, deploy to a fixed VM a NixOS config accessible with these keys
|
||||||
|
- ...
|
||||||
|
|
||||||
|
* Issues (granular tasks)
|
||||||
|
|
||||||
|
What exactly needs to be done to reach the milestones?
|
||||||
|
|
||||||
|
Example:
|
||||||
|
- Deploy CRM
|
||||||
|
- Add UI for selecting a service
|
||||||
|
- ...
|
||||||
|
|
Loading…
Reference in a new issue