Skip to content

Commit 3a4277b

Browse files
dcharkesCommit Queue
authored andcommitted
[docs] Add GSoC 2025 project ideas
Change-Id: I24b4f4d0dedbcae5450cdf569e62b77fbd9632a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/407720 Reviewed-by: Hossein Yousefi <[email protected]> Commit-Queue: Daco Harkes <[email protected]>
1 parent 0dfbab8 commit 3a4277b

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed

docs/gsoc/Dart-GSoC-2025-Project-Ideas.md

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,69 @@ We expect a proposal for this project to include:
5454
Write a test cases that tests the different kinds of errors and exceptions that can be thrown by `RsaPssPrivateKey.generateKey`, run the tests across desktop, Chrome and Firefox. Consider extending the tests to cover all members of `RsaPssPrivateKey`.
5555
Try to generalize these test cases to avoid repetitive code, see the existing [TestRunner](https://github.com/google/webcrypto.dart/blob/5e6d20f820531d2b7b05935c1d78f38a036035e8/lib/src/testing/utils/testrunner.dart#L227) for inspiration.
5656

57-
5857
**Expected outcome**: PRs that land in `package:webcrypto` and increases our confidence in correctness cross-platforms.
5958

59+
60+
## **Idea:** Pigeon generating FFI/JNI code
61+
62+
- **Possible Mentor(s)**: `[email protected]`
63+
- **Difficulty**: Hard
64+
- **Project size**: Large (350 hours)
65+
- **Skills**: Dart, FFI, Java
66+
67+
**Description**: Modify the existing pigeon tool to use dart:ffi through ffigen, jnigen, and swiftgen instead of method channels.
68+
69+
Pigeon should continue to generate interfaces for all languages which the user would have to implement. However, instead of generating method channels for the methods, it will use direct native interop using jnigen, ffigen, and swiftgen tools.
70+
71+
The generation tools should also be slightly modified to generate pigeon compatible bindings, for example data structures and strings should be deeply serialized to Dart data structures and strings similar to how pigeon generates the binding code.
72+
73+
The new version of pigeon can be used as a drop-in replacement without any major work to update all the plugins already using pigeon to use direct native interop.
74+
75+
**Good Sample Project**:
76+
* Take the example from pigeon: https://github.com/flutter/packages/tree/main/packages/pigeon/example .
77+
* Convert one of its platforms to ffigen/jnigen, for example convert Android to use jnigen instead of the default method channels.
78+
79+
**Expected outcome**: A new backend for Pigeon.
80+
81+
82+
## **Idea:** Use an LLM to translate Java/Kotlin tutorial snippets into Dart JNIgen code
83+
84+
- **Possible Mentor(s)**: `[email protected]`, `[email protected]`
85+
- **Difficulty**: Hard
86+
- **Project size**: Large (350 hours)
87+
- **Skills**: Dart, FFI, Java
88+
89+
**Description**: This project will be very exploratory. We’ll explore how much is needed to make an LLM generate Dart snippets that call JNIgen-generated code. The snippets should be the equivalent of the original native code. How much will be needed? Is a single shot prompt enough? Or do we need to teach an AI how to run JNIgen and make it generate code that is subsequently analyzed with the Dart analyzer and the errors are fed back in to the AI to improve its answer.
90+
91+
If we get this working, we’ll want to explore how to make such a tool useful to users. For example, we could make a browser extension that automatically adds the generated code snippets to documentation websites.
92+
93+
Inspired by this issue: https://github.com/dart-lang/native/issues/1240
94+
95+
**Good Sample Project**:
96+
* Get a Gemini API key https://ai.google.dev/gemini-api/docs/api-key
97+
* Follow https://developers.google.com/learn/pathways/solution-ai-gemini-getting-started-dart-flutter
98+
* Write a Dart script that invokes the API with a prompt containing a Java snippet (for example from https://developer.android.com/media/camera/camerax/take-photo#take_a_picture) and try to come up with a prompt that will make it generate code that would work on the Dart API generated with JNIgen for this Java/Kotlin API.
99+
100+
**Expected outcome**: A tool for translating code samples usable by users.
101+
102+
103+
## **Idea:** package:coverage + LLM = test generation
104+
105+
- **Possible Mentor(s)**: `[email protected]`
106+
- **Difficulty**: Medium
107+
- **Project size**: Medium (175 hours)
108+
- **Skills**: Dart, LLMs
109+
110+
**Description**: This is a very experimental project. The idea is to use `package:coverage` to identify uncovered code, use an LLM to decide if that code needs a test (not all code actually needs to be tested), then use an LLM to write tests that hit those cases, and then use `package:coverage` to verify that those lines are covered.
111+
112+
**Good Sample Project**:
113+
* Get a Gemini API key https://ai.google.dev/gemini-api/docs/api-key
114+
* Follow https://developers.google.com/learn/pathways/solution-ai-gemini-getting-started-dart-flutter
115+
* Try generating tests for any old Dart API. Don't try to integrate `package:coverage` yet.
116+
117+
**Expected outcome**: A package on pub.dev for increasing test coverage.
118+
119+
60120
## TODO: More ideas as they come!
61121

62122
# Template:

0 commit comments

Comments
 (0)