diff --git a/architecture.md b/architecture.md index e4cf8bf..9f55c0d 100644 --- a/architecture.md +++ b/architecture.md @@ -240,56 +240,91 @@ Whereas the core abstraction in Fediversity is a NixOS configuration module, a m Whereas details of the implementation may need to be decided as the technical challenges involved become clear, we can already give a higher-level planning of relevant milestones and some of their salient features: -1. [Implement a way to run online services emphasising user autonomy and portability](https://git.fediversity.eu/Fediversity/Fediversity/issues/347) - - [deploying Fediversity applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/99) - - [Initial internal user to kick-start feedback process](https://git.fediversity.eu/Fediversity/Fediversity/issues/225): - - automated provisioning of: - - [databases](https://git.fediversity.eu/Fediversity/Fediversity/issues/115) - - [object storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/185) - - [virtual machines](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) - - [DNS](https://git.fediversity.eu/Fediversity/Fediversity/issues/110) - - [admin accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/178) - - [SMTP service](https://git.fediversity.eu/Fediversity/Fediversity/issues/117) - - [email accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/118) - - [ephemeral state](https://git.fediversity.eu/Fediversity/Fediversity/issues/314) - - [specification published](https://git.fediversity.eu/Fediversity/Fediversity/issues/334) - - [ProxmoX back-end supports multiple users](https://git.fediversity.eu/Fediversity/Fediversity/issues/313) - - [user can have multiple deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/241) - - [users can update their deployment configurations](https://git.fediversity.eu/Fediversity/Fediversity/issues/158) - - [application data back-ups](https://git.fediversity.eu/Fediversity/Fediversity/issues/123) - - [migrating application data between hosting providers](https://git.fediversity.eu/Fediversity/Fediversity/issues/100) -1. [Disseminate our results by engaging the open-source community to further expand on work in this direction](https://git.fediversity.eu/Fediversity/Fediversity/issues/348) - - [automated dev-ops workflows](https://git.fediversity.eu/Fediversity/Fediversity/issues/224): - - [separate test environments for staging vs. production](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) - - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) - - [CI rejects failing deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/102) - - [Nix package overlays upstreamed](https://git.fediversity.eu/Fediversity/Fediversity/issues/248) - - [facilitate suggestions in PR reviews](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) - - [integration test](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) - - [external developers empowered to contribute](https://git.fediversity.eu/Fediversity/Fediversity/issues/288): - - [NixOS configuration as the core abstraction](https://git.fediversity.eu/Fediversity/Fediversity/issues/339) - - [integration tests](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) - - [Continuous Integration builds available in a public cache](https://git.fediversity.eu/Fediversity/Fediversity/issues/92) - - [reproducible project infrastructure](https://git.fediversity.eu/Fediversity/Fediversity/issues/336) - - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) - - [separate staging/testing environments](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) - - [code reviewers can suggest changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) - - [knowledge base](https://git.fediversity.eu/Fediversity/Fediversity/issues/288) - - [module upstreamed to nixpkgs](https://git.fediversity.eu/Fediversity/Fediversity/issues/333) -1. [Exploit our work by facilitating the sample use-case of web hosting organisations using an initial set of services](https://git.fediversity.eu/Fediversity/Fediversity/issues/349) - - [Software ready for web hosts to take into production](https://git.fediversity.eu/Fediversity/Fediversity/issues/228): - - [garbage collection of unallocated resources](https://git.fediversity.eu/Fediversity/Fediversity/issues/188) - - [Nix-less bootstrap](https://git.fediversity.eu/Fediversity/Fediversity/issues/332) - - [ensure hosts may update users' deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/159) - - [reference front-end decoupled from version of configuration module](https://git.fediversity.eu/Fediversity/Fediversity/issues/304) - - [security check](https://git.fediversity.eu/Fediversity/Fediversity/issues/291) - - [Key features improving user experience supported](https://git.fediversity.eu/Fediversity/Fediversity/issues/289): - - [enqueuing deployment syncs](https://git.fediversity.eu/Fediversity/Fediversity/issues/242) - - [provide single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/212) - - [upstream configuration options exposed](https://git.fediversity.eu/Fediversity/Fediversity/issues/195) - - [allow disabling application while retaining data](https://git.fediversity.eu/Fediversity/Fediversity/issues/186) - - [ProxmoX deployment allows scaling resources assigned to a VM](https://git.fediversity.eu/Fediversity/Fediversity/issues/119) - - [aid needed user actions on schema update](https://git.fediversity.eu/Fediversity/Fediversity/issues/214) - - [pooling application instances to shared VMs](https://git.fediversity.eu/Fediversity/Fediversity/issues/322) - - [allow use of external single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/161) - - [on migration, allow reconfiguring monolithic vs distributed](https://git.fediversity.eu/Fediversity/Fediversity/issues/341) +1. [implement a way to run online services emphasising user autonomy and data portability](https://git.fediversity.eu/Fediversity/Fediversity/issues/347) + 1. [Finalize architecture doc](https://git.fediversity.eu/Fediversity/Fediversity/issues/39) + 1. [code-based migration data model](https://git.fediversity.eu/Fediversity/Fediversity/issues/103) + 1. [migrating application data between hosting providers](https://git.fediversity.eu/Fediversity/Fediversity/issues/100) + 1. [code-based migration data model](https://git.fediversity.eu/Fediversity/Fediversity/issues/103) + 1. [enable back-ups of application](https://git.fediversity.eu/Fediversity/Fediversity/issues/123) + 1. [Create a deployment migration string](https://git.fediversity.eu/Fediversity/Fediversity/issues/77) + 1. [Start deployment migration](https://git.fediversity.eu/Fediversity/Fediversity/issues/78) + 1. [application offering generalised](https://git.fediversity.eu/Fediversity/Fediversity/issues/369) + 1. [NixOS configuration as the core abstraction](https://git.fediversity.eu/Fediversity/Fediversity/issues/339) +1. [disseminate our results by engaging the open-source community to further expand on work in this direction](https://git.fediversity.eu/Fediversity/Fediversity/issues/348) + 1. [automated dev-ops workflows](https://git.fediversity.eu/Fediversity/Fediversity/issues/224) + 1. [Backups for Forgejo](https://git.fediversity.eu/Fediversity/Fediversity/issues/29) + 1. [use dedicated Nix builder](https://git.fediversity.eu/Fediversity/Fediversity/issues/366) + 1. [initial focus on single application for development](https://git.fediversity.eu/Fediversity/Fediversity/issues/327) + 1. [unify versioning](https://git.fediversity.eu/Fediversity/Fediversity/issues/279) + 1. [Automated dependency updates](https://git.fediversity.eu/Fediversity/Fediversity/issues/65) + 1. [infrastructure automatically deployed using continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) + 1. [Full integration test](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) + 1. [CI rejects failing deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/102) + 1. [code reviewers can suggest changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) + 1. [fediversity apps reused in infra](https://git.fediversity.eu/Fediversity/Fediversity/issues/370) + 1. [derive users and their keys from the keys directory](https://git.fediversity.eu/Fediversity/Fediversity/issues/199) + 1. [Nix package overlays upstreamed](https://git.fediversity.eu/Fediversity/Fediversity/issues/248) + 1. [Separate test environments for staging vs. production](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) + 1. [support password-protected personal SSH keys for deploying services in development](https://git.fediversity.eu/Fediversity/Fediversity/issues/272) + 1. [Write all modules with destructured arguments](https://git.fediversity.eu/Fediversity/Fediversity/issues/93) + 1. [ephemeral state is automatically provisioned](https://git.fediversity.eu/Fediversity/Fediversity/issues/314) + 1. [external developers empowered to contribute](https://git.fediversity.eu/Fediversity/Fediversity/issues/288) + 1. [code reviewers can suggest changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) + 1. [Reproducible proxmox installation](https://git.fediversity.eu/Fediversity/Fediversity/issues/325) + 1. [Continuous Integration builds available in a public cache](https://git.fediversity.eu/Fediversity/Fediversity/issues/92) + 1. [docs: document having to load nix dev shell for pre-commit hook](https://git.fediversity.eu/Fediversity/Fediversity/issues/98) + 1. [Update documentation on services](https://git.fediversity.eu/Fediversity/Fediversity/issues/86) + 1. [knowledge base](https://git.fediversity.eu/Fediversity/Fediversity/issues/243) + 1. [Document the semantics of our various domains](https://git.fediversity.eu/Fediversity/Fediversity/issues/210) + 1. [Describe the hardware infrastructure needed to run Fediversity yourself](https://git.fediversity.eu/Fediversity/Fediversity/issues/68) + 1. [reproducible project infrastructure](https://git.fediversity.eu/Fediversity/Fediversity/issues/336) + 1. [NixOS configuration as the core abstraction](https://git.fediversity.eu/Fediversity/Fediversity/issues/339) + 1. [fediversity apps reused in infra](https://git.fediversity.eu/Fediversity/Fediversity/issues/370) + 1. [Generate documentation on the deployments from the code](https://git.fediversity.eu/Fediversity/Fediversity/issues/89) + 1. [Write all modules with destructured arguments](https://git.fediversity.eu/Fediversity/Fediversity/issues/93) + 1. [module upstreamed to nixpkgs](https://git.fediversity.eu/Fediversity/Fediversity/issues/333) + 1. [panel bundled into Fediversity configuration](https://git.fediversity.eu/Fediversity/Fediversity/issues/342) +1. [exploit our work by enabling reproducible deployments of an initial set of portable applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/349) + 1. [applications deployed on command](https://git.fediversity.eu/Fediversity/Fediversity/issues/99) + 1. [ProxmoX back-end supports multiple users](https://git.fediversity.eu/Fediversity/Fediversity/issues/313) + 1. [Proxmox resources are provisioned to deploy services to](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) + 1. [Deployed services are accessible under the configured domain](https://git.fediversity.eu/Fediversity/Fediversity/issues/76) + 1. [kick-started initial feedback cycle](https://git.fediversity.eu/Fediversity/Fediversity/issues/225) + 1. [ProxmoX back-end supports multiple users](https://git.fediversity.eu/Fediversity/Fediversity/issues/313) + 1. [Proxmox resources are provisioned to deploy services to](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) + 1. [Users can configure their desired sub-domains in the online panel, so that the deployed services are assigned the desired sub-domains](https://git.fediversity.eu/Fediversity/Fediversity/issues/142) + 1. [provision admin accounts for deployed services](https://git.fediversity.eu/Fediversity/Fediversity/issues/178) + 1. [users can update their deployment configurations](https://git.fediversity.eu/Fediversity/Fediversity/issues/158) + 1. [use immutable buckets from VMs](https://git.fediversity.eu/Fediversity/Fediversity/issues/185) + 1. [Databases are provisioned so that services can use a central storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/115) + 1. [VMs use central file storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/138) + 1. [reproduce DNS VM](https://git.fediversity.eu/Fediversity/Fediversity/issues/200) + 1. [SMTP service is provisioned so that applications can send emails](https://git.fediversity.eu/Fediversity/Fediversity/issues/117) + 1. [fediversity apps reused in infra](https://git.fediversity.eu/Fediversity/Fediversity/issues/370) + 1. [ephemeral state is automatically provisioned](https://git.fediversity.eu/Fediversity/Fediversity/issues/314) + 1. [panel staging/production configuration](https://git.fediversity.eu/Fediversity/Fediversity/issues/136) + 1. [code passes security check](https://git.fediversity.eu/Fediversity/Fediversity/issues/291) + 1. [brought into production](https://git.fediversity.eu/Fediversity/Fediversity/issues/228) + 1. [Have a DNS service running to allow users to tie services to their own domain](https://git.fediversity.eu/Fediversity/Fediversity/issues/104) + 1. [garbage collection of unallocated resources](https://git.fediversity.eu/Fediversity/Fediversity/issues/188) + 1. [Relevant email accounts are provisioned such that the operator may be contacted](https://git.fediversity.eu/Fediversity/Fediversity/issues/118) + 1. [reference front-end is decoupled from version of configuration module](https://git.fediversity.eu/Fediversity/Fediversity/issues/304) + 1. [specification published](https://git.fediversity.eu/Fediversity/Fediversity/issues/334) + 1. [REST API available](https://git.fediversity.eu/Fediversity/Fediversity/issues/368) + 1. [Hosting providers can update their operators' deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/159) + 1. [code passes security check](https://git.fediversity.eu/Fediversity/Fediversity/issues/291) + 1. [nix-less bootstrap](https://git.fediversity.eu/Fediversity/Fediversity/issues/332) + 1. [key features improving user experience supported](https://git.fediversity.eu/Fediversity/Fediversity/issues/289) + 1. [upstream configuration options exposed](https://git.fediversity.eu/Fediversity/Fediversity/issues/195) + 1. [allow disabling service while retaining data](https://git.fediversity.eu/Fediversity/Fediversity/issues/186) + 1. [enqueuing deployment syncs](https://git.fediversity.eu/Fediversity/Fediversity/issues/242) + 1. [user can have multiple deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/241) + 1. [ProxmoX deployment allows scaling resources assigned to a VM](https://git.fediversity.eu/Fediversity/Fediversity/issues/119) + 1. [View difference between configured and deployed state](https://git.fediversity.eu/Fediversity/Fediversity/issues/143) + 1. [visualise schema changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/213) + 1. [aid needed actions on schema update](https://git.fediversity.eu/Fediversity/Fediversity/issues/214) + 1. [single sign-on (SSO) for services](https://git.fediversity.eu/Fediversity/Fediversity/issues/212) + 1. [delegating user management](https://git.fediversity.eu/Fediversity/Fediversity/issues/337) + 1. [pooling instances to shared VMs](https://git.fediversity.eu/Fediversity/Fediversity/issues/322) + 1. [on migration, allow reconfiguring monolithic vs distributed](https://git.fediversity.eu/Fediversity/Fediversity/issues/341) + 1. [connecting an existing identity management service](https://git.fediversity.eu/Fediversity/Fediversity/issues/161)