Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
= Use xxx as programming language for the agent
= Use Rust as programming language for the agent
Sönke Liebau <soenke.liebau@stackable.de>
v1.0, 19.08.2020
:status: draft
v1.0, 02.10.2020
:status: accepted

* Status: {status}
* Deciders:
Expand All @@ -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

Expand All @@ -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
Expand All @@ -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 <!-- optional -->
=== 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 <!-- optional -->
=== 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 <!-- optional -->
== Pros and Cons of the Options

=== Java

Expand All @@ -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

Expand All @@ -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 <!-- optional -->

* [Link type] [Link to ADR] <!-- example: Refined by [ADR-0005](0005-example.md) -->
* … <!-- numbers of links can vary -->