tweak project proposal #1

Open
kiara wants to merge 95 commits from rewrite into main
Showing only changes of commit 93a9eecd2b - Show all commits

View file

@ -79,90 +79,6 @@
Configuration logic specific to a runtime backend, e.g. how to deploy, how to access object storage.
## Architecture
At the core of Fediversity lies a NixOS configuration template containing selected applications.
We use this to deploy to selected run-time environments, so far targeting hypervisor ProxmoX.
We further provide a reference front-end to configure our template.
To ensure reproducibility, we also offer Nix packaging for our software.
To reach our goals, we aim to implement the following interactions between [actors](#actors) (depicted with rounded corners) and system components (see the [glossary](#glossary), depicted with rectangles).
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/interactions.svg)
### Entity relationships
Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality:
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/entity-relations.svg)
### Data model
### Host architecture
Whereas the core abstraction in Fediversity is a NixOS configuration template, a more full-fledged example architecture of the web host use-case we aim to support as part of our exploitation would be as follows, where VMs in question run Fediversity to offer our selected applications:
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/host-architecture.png)
## Break-down of project milestones
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)
- [application data back-ups](https://git.fediversity.eu/Fediversity/Fediversity/issues/123)
- [deploying Fediversity applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/99)
- [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)
- [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)
- [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 template version](https://git.fediversity.eu/Fediversity/Fediversity/issues/304)
- [security audit](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)
- [completed initial application offering](https://git.fediversity.eu/Fediversity/Fediversity/issues/350)
- [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)
## Technologies used
### [NixOS](https://nixos.org/)
@ -273,3 +189,87 @@ Considered alternatives include:
- 389 DS: older larger package
- FreeIPA: wrapper around 389 DS
## Architecture
At the core of Fediversity lies a NixOS configuration template containing selected applications.
We use this to deploy to selected run-time environments, so far targeting hypervisor ProxmoX.
We further provide a reference front-end to configure our template.
To ensure reproducibility, we also offer Nix packaging for our software.
To reach our goals, we aim to implement the following interactions between [actors](#actors) (depicted with rounded corners) and system components (see the [glossary](#glossary), depicted with rectangles).
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/interactions.svg)
### Entity relationships
Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality:
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/entity-relations.svg)
### Data model
### Host architecture
Whereas the core abstraction in Fediversity is a NixOS configuration template, a more full-fledged example architecture of the web host use-case we aim to support as part of our exploitation would be as follows, where VMs in question run Fediversity to offer our selected applications:
![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/host-architecture.png)
## Break-down of project milestones
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)
- [application data back-ups](https://git.fediversity.eu/Fediversity/Fediversity/issues/123)
- [deploying Fediversity applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/99)
- [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)
- [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)
- [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 template version](https://git.fediversity.eu/Fediversity/Fediversity/issues/304)
- [security audit](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)
- [completed initial application offering](https://git.fediversity.eu/Fediversity/Fediversity/issues/350)
- [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)