posit-dev / posit-dev/positron
Move Positron-specific Ark features into the Positron repository
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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