|
| 1 | +> [!warning] |
| 2 | +> **Google Summer of Code 2025 is not accepting applications yet**. |
| 3 | +
|
| 4 | +------ |
| 5 | + |
| 6 | +A list of Google Summer of Code project ideas for Dart. |
| 7 | + |
| 8 | +For GSoC related discussions please use the [dart-gsoc group](https://groups.google.com/forum/#!forum/dart-gsoc). |
| 9 | + |
| 10 | +**Potential mentors** |
| 11 | + * Jonas Jensen ( [jonasfj ](https://github.com/jonasfj)) `[email protected]` |
| 12 | + * Daco Harkes ( [dcharkes ](https://github.com/dcharkes)) `[email protected]` |
| 13 | + * Hossein Yousefi ( [HosseinYousefi ](https://github.com/HosseinYousefi)) `[email protected]` |
| 14 | + * Liam Appelbe ( [liamappelbe ](https://github.com/liamappelbe)) `[email protected]` |
| 15 | + * More to come! |
| 16 | + |
| 17 | +## Project Application Process |
| 18 | +All projects assume familiarity with Dart (and sometimes Flutter). Aspiring applicants are encouraged to [learn Dart](https://dart.dev/guides/language/language-tour) and try to write some code. |
| 19 | + |
| 20 | +Applicants are welcome to find and fix bugs in [Dart](https://github.com/dart-lang/sdk) or some of the [packages written by the Dart team](https://pub.dev/publishers/dart.dev/packages). However, getting reviews can take a long time as code owners may be busy working on new features. So instead of requiring applicants to fix a _good first bug_, we |
| 21 | +suggest that applicants write a working code sample relevant for the proposed project. |
| 22 | + |
| 23 | +The code sample can be attached to the application as a [**secret** gist](https://gist.github.com/) (please use _secret gists_, and do not share these with other applicants). Suggested ideas below includes proposed "Good Sample Projects". |
| 24 | + |
| 25 | +**Do not spend too much energy on this piece of sample code**, we just want to see |
| 26 | +that you can code something relevant -- and that this sample code can run and do something non-trivial. Be aware that we have a limited number of |
| 27 | +mentors available, and will only be able to accept a few applicants. |
| 28 | + |
| 29 | +Applications can be submitted through the [summerofcode.withgoogle.com](https://summerofcode.withgoogle.com/) website. Applicants are encouraged to submit draft proposals, linking to Google Docs with permission for mentors to comment. See also the [contributor guide](https://google.github.io/gsocguides/student/writing-a-proposal) on writing a proposal. |
| 30 | + |
| 31 | +**IMPORTANT**: Remember to submit _final proposals_ before [the April 2nd deadline](https://developers.google.com/open-source/gsoc/timeline). |
| 32 | + |
| 33 | +## **Idea:** Exception testing for `package:webcrypto` |
| 34 | + |
| 35 | + - **Possible Mentor(s) **: `[email protected]`, |
| 36 | + - **Difficulty**: Hard |
| 37 | + - **Project size**: Large (350 hours) |
| 38 | + - **Skills**: Dart, FFI, JS |
| 39 | + |
| 40 | +**Description**: `package:webcrypto` ([github.com/google/webcrypto.dart](https://github.com/google/webcrypto.dart)) is a cross-platform implementation of the [Web Cryptography API](https://www.w3.org/TR/WebCryptoAPI/). |
| 41 | +It is important that it behaves the same way whether it's running on Windows, Linux, Mac, Android, iOS, Chrome, Firefox, or Safari. Towards that end, it has a lot of test cases. We could and should probably make more test cases. |
| 42 | +But we should also test that it throws the types of exceptions when given incorrect parameters. This probably needs a small test framework to ensure good test coverage. |
| 43 | + |
| 44 | +We expect a proposal for this project to include: |
| 45 | + * A sample showing how to test exceptions for `RsaPssPrivateKey.generateKey`. |
| 46 | + Ideally, the sample project includes parts of a generalized framework for testing exceptions. |
| 47 | + * An outline of what kind of exceptions should be tested? |
| 48 | + * A design for extending `TestRunner`, or creating a new framework, to test exceptions thrown by all methods. |
| 49 | + * Illustrative code for how test cases would be configured |
| 50 | + * Pros and cons of the design (especially when multiple choices are available) |
| 51 | + * Timeline for the project |
| 52 | + |
| 53 | +**Good Sample Project**: |
| 54 | +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`. |
| 55 | +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. |
| 56 | + |
| 57 | + |
| 58 | +**Expected outcome**: PRs that land in `package:webcrypto` and increases our confidence in correctness cross-platforms. |
| 59 | + |
| 60 | +## TODO: More ideas as they come! |
| 61 | + |
| 62 | +# Template: |
| 63 | + |
| 64 | +Copy this template. |
| 65 | + |
| 66 | +## **Idea:** ... |
| 67 | + |
| 68 | + - **Possible Mentor(s)**: |
| 69 | + - **Difficulty**: Easy / Hard |
| 70 | + - **Project size**: Small (90) / Medium (175 hours) / Large (350 hours) |
| 71 | + - **Skills**: ... |
| 72 | + |
| 73 | +**Description**: ... |
| 74 | + |
| 75 | +**Good Sample Project**: ... |
| 76 | + |
| 77 | +**Expected outcome**: ... |
0 commit comments