posit-dev / posit-dev/ark

Split `ark` from `positron` R modules?

Open
#979 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

infra: code-organization
Dominant language
Rust
Stars
337
Forks
32
Avg merge
8d 17h
Merged PRs (30d)
11

Description

Extracted from https://github.com/posit-dev/ark/pull/977#discussion_r2585988617

It's currently a bit confusing that files in https://github.com/posit-dev/ark/tree/main/crates/ark/src/modules/positron get sourced even when Ark is used outside Positron.

We could split an ark folder containing essential functionality used with other frontends (such as error handling). positron would only contain functionality used by the Positron frontend.

To further disambiguate, we could introduce .ark. as a prefix for stuff living in ark. For instance .ark.version() instead of .ps.ark.version().

Finally, to decide whether to load Positron functionality, we could introduce a new flag to the ark binary. This would be a bit more precise than the current approach of detecting the POSITRON environment variable, which could also be set even when Positron is not the frontend, for example when running jupyter-console in the terminal. Note we can't use any Jupyter information for this (such as when the UI comm is connected) because that would be racy.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the discussion in pull request 977 and the files under crates/ark/src/modules/positron. Map which modules are essential to Ark versus specific to the Positron frontend, then review how the POSITRON environment variable currently controls loading. Done means the module split, naming convention, and frontend-selection mechanism have an agreed design and implementation scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
r, rust
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.