posit-dev / posit-dev/positron

Move Positron-specific Ark features into the Positron repository

Open
#3,608 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: builds enhancement lang: r
Dominant language
TypeScript
Stars
4.3k
Forks
184
Avg merge
1d 11h
Merged PRs (30d)
206

Description

Today, Positron includes a copy of Ark built from the Ark repository.

This means that making a change to Positron that also requires a change to Ark requires a lot of extra paperwork. You need to have copies of both repositories, make two separate commits, bump versions on both sides, and wait for a build. Since we have a monotonically increasing version count, we can safely say we've had to do this over a hundred times.

graph TD
ark --> e[ark executable]
comms -- included in --> ark
amalthea --> e
harp --> e
e -- released in --> github
github -- bundled in --> positron

However, there are also good reasons for Ark to be in its own repository. Its license is different than Positron's, and it produces binary artifacts that are useful outside Positron, e.g. as Jupyter kernels for other applications.

I'd propose that we move the Positron-specific parts of Ark into Positron. This mostly means moving the comm definitions and implementations out of Ark and into Positron.

flowchart TD
subgraph "Ark repository"
ark --> e[ark executable]
amalthea --> e
harp --> e
e -- released in --> github
end
subgraph "Positron repository"
ark --> ark-positron
comms -- included in --> ark-positron[ark-positron executable]
ark-positron -- bundled in --> positron
end

In this world we have two Ark executables -- one MIT licensed one built for use outside Positron, and a Positron specific one built for use with Positron that includes extra code to handle the backend of Positron UI features/comms.

This will probably require some light factoring on the Ark side to make it possible for us to inject comms. It will also require us to either re-introduce the requirement for all Positron developers to have a Rust toolchain, or to start making binary releases of Ark with Positron extensions that can be downloaded by engineers who don't have Rust.

This would not completely free us from having to coordinate commits across repositories, but should reduce it by a healthy margin, and will also allow us to change the frontend and backend of most Positron features in a single commit in a single repository.

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 by locating the Ark comm definitions and implementations, then inspect how Positron bundles the Ark executable. Determine the factoring and packaging work needed for a Positron-specific Ark executable with injected comms while preserving a standalone Ark build. Done means the two executable paths and their release or download workflows are documented and working.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, typescript
Domain
backend, build-system, developer-experience
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.