diff --git a/adr/drafts/ADRx-choose_agent_programming_language.adoc b/adr/ADR004-choose_agent_programming_language.adoc similarity index 61% rename from adr/drafts/ADRx-choose_agent_programming_language.adoc rename to adr/ADR004-choose_agent_programming_language.adoc index 3720c1c44..7d643e578 100644 --- a/adr/drafts/ADRx-choose_agent_programming_language.adoc +++ b/adr/ADR004-choose_agent_programming_language.adoc @@ -1,7 +1,7 @@ -= Use xxx as programming language for the agent += Use Rust as programming language for the agent Sönke Liebau -v1.0, 19.08.2020 -:status: draft +v1.0, 02.10.2020 +:status: accepted * Status: {status} * Deciders: @@ -11,9 +11,7 @@ v1.0, 19.08.2020 ** Bernd Fondermann ** Oliver Hessel ** Sönke Liebau -* Date: - -Technical Story: https://hosting-jira.1and1.org/browse/DFBAICC-520 +* Date: 02.10.2020 == Context and Problem Statement @@ -25,7 +23,6 @@ Which programming language should be used in the implementation of the agent tha * Availability of well supported libraries for necessary operations ** File IO ** Network IO -** RPC depends on link:./ADRx-Protocol-to-use-for-communication-between-agent-and-orchestrator.html[ADRx-Protocol to use for communication between agent and orchestrator] ** systemd * IDE support * Debugging options @@ -38,19 +35,20 @@ Which programming language should be used in the implementation of the agent tha == Decision Outcome -Chosen option: "[option 1]", because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)]. +Chosen option: "Rust", because it came out best (see below)]. -=== Positive Consequences +=== Positive Consequences -* [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …] -* … +Rust is a Programming language +* focused on safety and +* provides memory safety without a garbage collector. -=== Negative Consequences +=== Negative Consequences -* [e.g., compromising quality attribute, follow-up decisions required, …] -* … +Rust is a Programming language +* with a steep learning curve. -== Pros and Cons of the Options +== Pros and Cons of the Options === Java @@ -67,7 +65,6 @@ Chosen option: "[option 1]", because [justification. e.g., only option, which me * Bad, because a new language to learn for many team members * Bad, because missing generics may be an issue and create less than readable code * Bad, because it is still a garbage collected language -* Todo: check library availability === Rust @@ -76,9 +73,3 @@ Chosen option: "[option 1]", because [justification. e.g., only option, which me * Good, because it enforces a high level of security * Bad, because a new language to learn for many team members * Bad, because potentially very touch to find developers - arguably not a real drawback as people will need to be willing to learn something new anyway -* Todo: check library availability - -== Links - -* [Link type] [Link to ADR] -* …