Consider moving VM Service Manager logic into `devtools_shared.dart`
- Dominant language
- Dart
- Stars
- 1.7k
- Forks
- 404
- Avg merge
- 6d 17h
- Merged PRs (30d)
- 18
Description
Moving this logic to `devtools_shared` would allow using the `ServiceManager` and related classes (like `IsolateManager`, `ServiceExtensionManager`) etc. in non-Flutter packages. One place where we'd like to use this logic is in https://github.com/dart-lang/ai/tree/main/pkgs/dart_tooling_mcp_server.
The https://github.com/flutter/devtools/blob/master/packages/devtools_app_shared/lib/service.dart library currently exports code that contains Flutter imports, mainly for use of the `ValueNotifier` and `ValueListenable` classes. So we'd have to modify this code to remove the Flutter dependency in order to move this code to the `devtools_shared` package. This is the **first step** required for this change, and it would be a **breaking change** since several of the public APIs use these classes.
Provide that we can remove all the Flutter dependencies, the next step would be to move the code to the `devtools_shared` package, which would also be a breaking change for the `devtools_app_shared` package.
CC @jakemac53
Contributor guide
Research direction
Start with packages/devtools_app_shared/lib/service.dart, the library named in the issue, and inventory its Flutter imports and public APIs using ValueNotifier or ValueListenable. Determine how those dependencies could be removed without Flutter, then verify that the first step is complete when the service manager APIs no longer require Flutter classes; moving them to devtools_shared is a later step.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100