Skip to content

Conversation

lempira
Copy link
Collaborator

@lempira lempira commented Aug 20, 2025

ADR for the target lib package naming convention

@Copilot Copilot AI review requested due to automatic review settings August 20, 2025 01:01
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces an Architecture Decision Record (ADR) documenting the naming convention strategy for AlgoKit libraries across multiple programming languages. The decision proposes transitioning from the current "utils" naming pattern to an "SDK" naming pattern to better reflect the comprehensive nature of these libraries.

Key changes:

  • Creates ADR 0001 documenting the package naming strategy decision
  • Updates the decisions README to include reference to the new ADR
  • Establishes naming conventions for six target languages (TypeScript, Python, Go, Kotlin, Swift, Rust)

Reviewed Changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 2 comments.

File Description
docs/book/decisions/README.md Adds entry for new package naming strategy ADR
docs/book/decisions/0001-package-naming-strategy.md Complete ADR documenting the naming convention decision and rationale

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@lempira lempira force-pushed the docs/target-lib-naming-adr branch from ee77b30 to 885b49f Compare August 20, 2025 01:16
@lempira lempira force-pushed the docs/target-lib-naming-adr branch from 885b49f to 6fe7484 Compare August 20, 2025 01:20
- Strong AlgoKit brand association
- Language designation still clear

**Cons:**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this also have the similar cons with algokit-sdk-{lang} as well, i.e. this is a breaking change?

- "Utils" implies limited utility functions rather than full SDK capabilities
- Inconsistent with the evolving AlgoKit ecosystem strategy

### 2. Adopt SDK naming: `algokit-sdk-{lang}`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this name the most for the reasons stated in the pros list. An advantage of moving away from the name algokit-utils-ts is that it decouples the 2 packages and make migration easier. Taking lora as an example. It has algokit-utils-ts and algokit-subscriber as dependencies. If we release a new version algokit-utils-ts without upgrading algokit-subscriber, this could cause package conflicts. However, if we release algokit-sdk-ts, the user can point to algokit-sdk-ts and they can still use the old algokit-subscriber if they need to.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd likely be releasing algokit-utils-ts as a breaking change, in which case the package manager should handle any package conflict issues as algokit-subscriber-ts would be depending on the previous version. Am I missing something?

- Breaking change requiring migration from existing packages
- Requires documentation updates and migration guides
- Temporary confusion during transition period
- Migration coordination needed with major version releases
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Migration coordination needed with major version releases
- Migration coordination needed with major version releases
- Two parallel codebases need to be supported during the migration period

This means we'll have duplicate code and need to manage changes between the codebases until the repo is archived.

- "Utils" implies limited utility functions rather than full SDK capabilities
- Inconsistent with the evolving AlgoKit ecosystem strategy

### 2. Adopt SDK naming: `algokit-sdk-{lang}`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd likely be releasing algokit-utils-ts as a breaking change, in which case the package manager should handle any package conflict issues as algokit-subscriber-ts would be depending on the previous version. Am I missing something?

**Pros:**
- No breaking changes required
- Existing users familiar with naming
- No migration effort needed
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should be noted there will be migration effort because we break compatibility with SDK. I would imagine there are legacy codebases out there that use both algosdk and utils. I think the fact that migration is inevitable to some degree makes it a pro for SDK because it allows gradual migration. A codebase can use both utils in old code paths and the core SDK in new code paths.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A codebase can use both utils in old code paths and the core SDK in new code paths.

We could also do something similar without having another package by adding a new namespace to the existing utils package which contains the core SDK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants