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

Rebrand to Checker Node. Closes #676 #677

Open
wants to merge 28 commits into
base: main
Choose a base branch
from

Conversation

juliangruber
Copy link
Member

@juliangruber juliangruber commented Feb 7, 2025

Closes #676
Blocks CheckerNetwork/desktop#2049

Renames:

Before After
Filecoin Station Core Checker Network Node
Station Core Checker Node
Station Checker
CheckerNetwork/core CheckerNetwork/node
Binary Module Runtime
Module Subnet
Station Id Checker Id

Before, we were using "module" both for binaries like Zinnia and sources like "spark". Since part of the rebrand is to rename module to subnet, I split up this term into runtime and subnet, to avoid any confusion.

After merge

  • Rename repo to node
  • Publish new major version
  • Deprecate old node module
  • Update Station Desktop

@juliangruber juliangruber changed the title Rebrand to checker. Closes #676 Rebrand to Checker Node. Closes #676 Feb 7, 2025
@juliangruber juliangruber marked this pull request as ready for review February 7, 2025 17:32
@juliangruber juliangruber requested a review from bajtos February 7, 2025 17:33
Copy link
Member Author

Choose a reason for hiding this comment

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

Since the directory names changed, every instance will also get a new ID

@bajtos
Copy link
Member

bajtos commented Feb 10, 2025

Before, we were using "module" both for binaries like Zinnia and sources like "spark". Since part of the rebrand is to rename module to subnet, I split up this term into runtime and subnet, to avoid any confusion.

IIRC, we used to have the concept of two kinds of modules - a "trusted module" where we run a precompiled binary provided by the subnet (e.g. Saturn L2 node) and "trustless module" where we run JavaScript/WASM in Zinnia runtime.

I agree with using the term "runtime" for the Zinnia runtime binary (zinniad).

Are trusted subnets something to support in the new naming?

modules/zinnia/zinniad Outdated Show resolved Hide resolved
lib/runtimes.js Outdated Show resolved Hide resolved
lockFile: join(stateRoot, '.lock')
})

export const getDefaultRootDirs = () => {
switch (platform()) {
case 'darwin': {
const appId = 'app.filstation.core'
const appId = 'network.checker.node'
Copy link
Member

Choose a reason for hiding this comment

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

I believe this is a breaking change for existing users as it will change the location where Checker Node keeps the state, e.g. the number of jobs completed.

In other words, people running Checker Node via station CLI will see their job count drop to zero after the upgrade.

I think people running the node via Docker will be affected too, because the instructions in README mount the entire /home/node/.local/state/ directory.

Are we fine with that?

Copy link
Member Author

@juliangruber juliangruber Feb 10, 2025

Choose a reason for hiding this comment

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

Indeed this is a breaking change, I pointed part of that out in https://github.com/CheckerNetwork/core/pull/677/files/57a25a2730b1658784b12261ae9b4606e34e780c#diff-5af41a7c365c40a642be45fcfff655a897ea5a92e384196ec65d4110f80f2714.

I hadn't realized it would also reset the local job count. Thank you for pointing that out!

Are we still concerned about per-instance job count?

If we were, I guess we would need to add migration logic, or documentation at least.

Copy link
Member Author

@juliangruber juliangruber Feb 10, 2025

Choose a reason for hiding this comment

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

I suggest we add migration logic to Checker App (if we decide to change storage paths there), because that's supposed to be the nice / no understanding necessary deployment type.

Copy link
Member

Choose a reason for hiding this comment

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

Are we still concerned about per-instance job count?

I am concerned about the impact on checker node operators. If the job count drops to zero without an obviously visible explanation, will our users lose some trust in the reliability of our software?

How much effort & complexity is required to implement the migration path? Can we find a solution that's simple enough so that it's easier to implement the migration path instead of figuring out how to tell our users about the change?

For example:

// executed at startup 
const migrate = async () => {
  const newStateDir = paths.stateRoot
  const oldStateDir = await getOldStateDir()
  if (/* newStateDir does not exist and oldStateDir exists */) {
    // move oldStateDir to newStateDir
  }
}

const getOldStateDir = () => {
  switch (platform()) {
    case 'darwin':
      return join(homedir(), 'Library', 'Application Support', 'app.filstation.core')
    case 'win32':
      return join(LOCALAPPDATA, 'Filecoin Station Core')
    case 'linux':
      return join(XDG_STATE_HOME, 'filecoin-station-core')
    default:
      throw new Error(`Unsupported platform: ${platform()}`)
  }
}

I suggest we add migration logic to Checker App (if we decide to change storage paths there), because that's supposed to be the nice / no understanding necessary deployment type.

Agreed.

Copy link
Member Author

Choose a reason for hiding this comment

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

Done :) It was a tiny bit more complex, since more paths changed, but very doable after all

@bajtos bajtos self-requested a review February 10, 2025 16:20
@juliangruber
Copy link
Member Author

Before, we were using "module" both for binaries like Zinnia and sources like "spark". Since part of the rebrand is to rename module to subnet, I split up this term into runtime and subnet, to avoid any confusion.

IIRC, we used to have the concept of two kinds of modules - a "trusted module" where we run a precompiled binary provided by the subnet (e.g. Saturn L2 node) and "trustless module" where we run JavaScript/WASM in Zinnia runtime.

I agree with using the term "runtime" for the Zinnia runtime binary (zinniad).

Are trusted subnets something to support in the new naming?

Good point, I've made the decision in this PR that there will only be subnet source files and runtimes. This architecture would be nice as only open source modules can be run. I'm not sure if this decision is correct, but at the same time it makes things easier. Before, we were calling Zinnia a module of Station, and Spark a module of Zinnia (but defined in Station, not Zinnia). This encapsulation was confusing as I was looking over the code.

Since the changes here are relatively simple, and we don't plan to add native / trusted subnets, I suggest we go ahead.

@juliangruber
Copy link
Member Author

We have agreed to also add migration logic to this repository

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

Successfully merging this pull request may close these issues.

Rebrand to Checker Node
2 participants