Devolutions / Devolutions/IronRDP

Create the `ironrdp-sequence` crate and move the framework into it

Open
#1,426 0 comments 0 reactions 0 assignees View on GitHub
kind/technical-debt scope/core
Dominant language
Rust
Stars
3.2k
Forks
275
Avg merge
1d 11h
Merged PRs (30d)
189

Description

Extract the shared, sspi-free state-machine framework into its own low-deps crate so both `ironrdp-connector` and `ironrdp-acceptor` share a clean contract instead of the acceptor leaning on the client connector.

### Scope
- [ ] New crate `ironrdp-sequence` (deps: `ironrdp-pdu`, `ironrdp-core`, `ironrdp-error`). Move `Sequence`, `State`, `Written`, `SequenceError`, `ServerName`, `DesktopSize`.
- Note: with #1423 landed, a `ReactivationSequence` trait is unnecessary — session no longer takes a trait object. Add one only if another consumer needs it; otherwise skip.
- [ ] Re-point `ironrdp-connector` and `ironrdp-acceptor`; keep `ironrdp-connector` re-exports (`pub use ironrdp_sequence::{...}`) so downstream paths stay stable. These are permanent facade re-exports (debt-free kind, per the meta's compatibility policy) — **no** `#[deprecated]`.
- [ ] Add `ironrdp-sequence` to the workspace + `xtask` crate lists.

### Acceptance criteria
- `ironrdp-sequence` has no dependency on `ironrdp-connector` or `sspi`.
- Public API of `ironrdp-connector` unchanged for downstream (verified by re-exports / `cargo public-api` if available).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the existing Sequence, State, Written, SequenceError, ServerName, and DesktopSize definitions, then inspect the workspace and xtask crate lists. Re-point ironrdp-connector and ironrdp-acceptor while preserving connector re-exports, and run the relevant Cargo checks plus cargo public-api if available. Done means the new crate has only the listed dependencies, no connector or sspi dependency, and the connector API remains unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, build-system
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.