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)
kiara marked this conversation as resolved Outdated

Whereas the core abstraction in Fediversity is a NixOS configuration module, a more full-fledged example architecture of the web host use-case we aim to support would be as follows. VMs in question run Fediversity to offer our supported applications. The diagram shows an example of how different components could be fit together, based on what Fediversity offers as a framework (note that this would depend on the respective services and host-facing backends to be implemented appropriately):

Whereas the core abstraction in Fediversity is a NixOS configuration module, a more full-fledged example architecture of the web host use-case we aim to support would be as follows. VMs in question run Fediversity to offer our supported applications. The diagram shows an example of how different components could be fit together, based on what Fediversity offers as a framework (note that this would depend on the respective services and host-facing backends to be implemented appropriately):
- [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)