libretro / libretro/RetroArch

[Feature Proposal] OneDrive cloud sync backend (companion to google_drive.c)

Open
#19,245 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Cloud Sync recently gained a Google Drive backend (network/cloud_sync/google_drive.c, Feb 2026) alongside WebDAV/S3/SMB/iCloud, and #17972 unlocked SSL-backed sync on Android. OneDrive is one of the largest consumer clouds and currently has no backend — OneDrive users are the biggest unserved group left.

Proposal: network/cloud_sync/onedrive.c, structured directly on google_drive.c:

  • Microsoft identity platform device-code flow — public client, notably no client secret needed (simpler than the Google flow)
  • refresh token persisted in settings, same pattern as google_drive_refresh_token
  • storage via Microsoft Graph app folder (/me/drive/special/approot) so RetroArch only sees its own folder; simple PUT …/content uploads (save files are small; upload sessions only needed >4 MB)
  • same 5-function cloud_sync_driver_t vtable, C89, -Wall clean, house style

Questions before any code is written:

  1. Is this a backend the team wants?
  2. Who registers/owns the (free) Azure app client_id for official builds? A fork can use a personal registration for development, but production should be libretro-owned, like the Google credentials.
  3. Any preference on app-folder scope (Files.ReadWrite.AppFolder) vs. broader drive access?

I can have the implementation contributed and tested on Android + Windows desktop. Transparency note: the implementation would be developed with AI assistance (Claude), with human review and on-device testing — flagging this up front; happy to discuss.

CC @warmenhoven (author of the webdav/gdrive/s3 backends and the Android TLS work). Related: #6875 (native cloud saving bounty). While testing the gdrive backend I also filed #19244 (folder-creation race) — happy to help verify fixes there too.

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 network/cloud_sync/google_drive.c and the existing cloud-sync backends, then review the five-function cloud_sync_driver_t interface and the google_drive_refresh_token settings pattern. Done means an approved design and a tested network/cloud_sync/onedrive.c backend using the agreed Azure app ownership and folder scope, verified on Android and Windows desktop.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
backend, cloud
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.