1---
2layout: page
3title: Isolate Concepts from Code
4---
5
6- **ADR:** 0007
7- **Proposal Author(s):** @eddie-knight, @jpower432
8- **Status:** Accepted
9
10## Context
11
12While [ADR-0006](./0006-unified-package-structure) served to simplify the Go SDK for
13developer users, added cognitive overhead was observed for visitors to the project repo,
14caused by the large number of Go files. The project had begun to appear as if it is
15primarily a software project, rather than a specification project with support utilities.
16
17Additionally, the previous implementation of ADR-0006 did not account for SDKs in other
18languages beyond Go, which is highly likely if Gemara evolves like other similar projects.
19
20## Decision
21
22All SDK code should be hosted in secondary repositories.
23
24## Consequences
25
26Complexity on first move — this will delay us a bit on our pursuit toward v1.
27
28Lowered complexity over time — schema changes can be incremental, and SDK doesn't need to
29be updated until a schema release is made.
30
31No additional overhead needed to manage the release processes and versioning for the schemas and different SDKs.
32
33SDKs can be adjusted to support multiple schema versions if needed later.
34
35## Alternatives Considered
36
37We could create a /go or /sdk subdirectory instead. We'd then use the website, language-specific package repositories, and some CI magic to handle the release cycles for the different types of assets.