Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename any usage of “Hedera”, “Swirlds” or “Hashgraph” to “Hiero” #2017

Open
2 of 3 tasks
0xivanov opened this issue Oct 1, 2024 · 6 comments
Open
2 of 3 tasks
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@0xivanov
Copy link
Contributor

0xivanov commented Oct 1, 2024

Problem

Solution

Alternatives

No response

@0xivanov 0xivanov added enhancement New feature or request good first issue Issues which are ideal for a first time or new project contributor. labels Oct 1, 2024
@hendrikebbers hendrikebbers added good first issue candidate Issues that can become a good first issue but need more description/context. and removed good first issue Issues which are ideal for a first time or new project contributor. labels Oct 1, 2024
@SimiHunjan SimiHunjan removed the good first issue candidate Issues that can become a good first issue but need more description/context. label Oct 15, 2024
@SimiHunjan SimiHunjan added this to the v2.43.0 milestone Oct 15, 2024
@0xivanov
Copy link
Contributor Author

The renaming is done for /sdk module:
#2045

We would need someone from devops to rename the gradle files in order to build the other modules.

@rwalworth rwalworth removed this from the v2.43.0 milestone Oct 29, 2024
@0xivanov 0xivanov added this to the v2.47.0 milestone Dec 10, 2024
@0xivanov 0xivanov self-assigned this Dec 19, 2024
@SimiHunjan SimiHunjan modified the milestones: v2.47.0, v2.48.0 Jan 9, 2025
@jjohannes
Copy link
Collaborator

I just noticed that the packages after the rename are org.hiero.sdk. My understanding by now is that it should rather be
org.hiero.<some-product-name>.sdk

This mainly concerns the group defined in settings.gradle.kts:

    module("sdk") { group = "org.hiero.<some-product-name>" }
    module("sdk-full") { group = "org.hiero.<some-product-name>" }

If that is changed. For consistency I would also

  • Change all Java packages to org.hiero.<some-product-name>.sdk
  • Change the name of the sdk module to <some-product-name>-sdk (ideally by renaming the sdk folder).

For more context, see this Slack message: https://swirldslabs.slack.com/archives/C058265B2BS/p1736924474202549

NOTE: I only put this comment here so that these things are considered before the final release of 2.47.0. Not to force any change. But after the first release to Maven Central with the new name, it can't really be changed anymore.

@0xivanov
Copy link
Contributor Author

Hi @jjohannes ,FYI - I am unable to see the slack conversation.
What would be the product name in this case?

@jjohannes
Copy link
Collaborator

The message is about the general pattern to name things. Which I wrote down for the hedera-services modules.


A good pattern that is commonly used (e.g. by apache libraries) would be to follow this naming scheme consistently:

  • GA domain.product:product-modulename
  • Java Module Name domain.product.modulename
  • Folder in repository product-modulename

For example:

  • domain = org.hiero.node
  • product = consensus
  • module-name = state-api

Then:

  • GA org.hiero.node.consensus:consensus-state-api (G defined in settings.gradle.kts, A derived from folder name)
  • Java Module Name org.hiero.node.consensus.state.api (defined in module-info.java)
  • Folder in repository consensus-state-api (ideally as a subfolder of a folder called like the product, here consensus/consensus-state-api)

But maybe I am wrong with what I wrote above. Here is no "product name" as there is only one module (sdk). Which is itself the "product".

I just remembered a conversation on Slack (hope you can follow this link).
It says that we need a group (domain) of three segments. Which can be org.hiero.sdk

That means in settings.gradle.kts we would then have:

    module("sdk") { group = "org.hiero.sdk" }

So if we use sdk for the group, it would already fit the pattern. We would have:

  • domain = org.hiero
  • product = sdk
  • module-name = N/A (because the product consists of one module only)

That would then lead to:

  • GA org.hiero.sdk:sdk (G defined in settings.gradle.kts, A derived from folder name)
  • Java Module Name org.hiero.sdk (defined in module-info.java)
  • Folder in repository sdk

Then things already fit, despite the change of the group to org.hiero.sdk in settings.gradle.kts we still need to do.

Sorry for the fuzz. Hope it makes sense. I just would like to make sure this is all correct before the first release with the new name. 😅

@jsync-swirlds
Copy link
Member

jsync-swirlds commented Jan 16, 2025

This is well explained.

I would note that there are multiple SDKs. Each language has its own, so we might consider using that as a module name in this layout.
i.e.

  • domain = org.hiero
  • product = sdk
  • module-name = java (because the product consists of multiple language SDKs)

That would then lead to:

  • GA org.hiero.sdk:java (G defined in settings.gradle.kts, A derived from folder name)
  • Java Module Name org.hiero.sdk.java (defined in module-info.java)
  • Folder in repository sdk-java

I believe this might be more consistent across the full array of tools and projects.

The message is about the general pattern to name things. Which I wrote down for the hedera-services modules.

A good pattern that is commonly used (e.g. by apache libraries) would be to follow this naming scheme consistently:

  • GA domain.product:product-modulename
  • Java Module Name domain.product.modulename
  • Folder in repository product-modulename

For example:

  • domain = org.hiero.node
  • product = consensus
  • module-name = state-api

Then:

  • GA org.hiero.node.consensus:consensus-state-api (G defined in settings.gradle.kts, A derived from folder name)
  • Java Module Name org.hiero.node.consensus.state.api (defined in module-info.java)
  • Folder in repository consensus-state-api (ideally as a subfolder of a folder called like the product, here consensus/consensus-state-api)

But maybe I am wrong with what I wrote above. Here is no "product name" as there is only one module (sdk). Which is itself the "product".

I just remembered a conversation on Slack (hope you can follow this link). It says that we need a group (domain) of three segments. Which can be org.hiero.sdk

That means in settings.gradle.kts we would then have:

    module("sdk") { group = "org.hiero.sdk" }

So if we use sdk for the group, it would already fit the pattern. We would have:

  • domain = org.hiero
  • product = sdk
  • module-name = N/A (because the product consists of one module only)

That would then lead to:

  • GA org.hiero.sdk:sdk (G defined in settings.gradle.kts, A derived from folder name)
  • Java Module Name org.hiero.sdk (defined in module-info.java)
  • Folder in repository sdk

Then things already fit, despite the change of the group to org.hiero.sdk in settings.gradle.kts we still need to do.

Sorry for the fuzz. Hope it makes sense. I just would like to make sure this is all correct before the first release with the new name. 😅

@jjohannes
Copy link
Collaborator

That sounds like a good alternative to me.
One small correction: when strictly following the pattern, the folder/project name would be sdk-java
(as the "product" is repeated in the name)

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

No branches or pull requests

6 participants