linux-credentials / linux-credentials/credentialsd

Rewrite webextension shim in Rust

Open
#71 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help wanted
Dominant language
Rust
Stars
259
Forks
19
Avg merge
1d 2h
Merged PRs (30d)
12

Description

The web extension shim translates between the native messaging protocol and the D-Bus API for credentialsd. It's currently written in Python using the dbus-next Python package.

We target Ubuntu 22.04 as our oldest supported OS, but the dbus-next package isn't packaged until 25.04. To make it easier for people to test using the extension, it may be worth rewriting this in Rust.

However, part of the purpose of using a different language, namely Python, was to catch discrepancies between docs and the implementation. If we do rewrite it, it might be good to use a different library than zbus (like dbus-rs) or not to use the proxy macros from zbus and craft messages manually. This might be overkill, and maybe we just need to write better integration tests.

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 webext/app and compare its native messaging and D-Bus behavior with the documented interfaces. Evaluate whether a Rust rewrite or better integration tests would address the Ubuntu 22.04 packaging constraint, and define done as preserving the shim's behavior without relying on the unavailable dbus-next package.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, python, rust
Domain
api, backend
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.