sketch roadmap to an MVP demo #24
					 1 changed files with 110 additions and 0 deletions
				
			
		
							
								
								
									
										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…
	
	Add table
		
		Reference in a new issue