Skip to content

Dart GSoC 2020 Project Ideas

Ben Konyi edited this page Feb 21, 2020 · 17 revisions

A list of Google Summer of Code project ideas for Dart, students are obviously invited to invent additional proposals.

Potential mentors

Remark, dedicated chat rooms and mailinglist will be created later.

Idea: FFI Bindings generation from header files

  • Possible Mentor(s): [email protected]
  • Difficulty: Medium
  • Skills: Dart programming skills; C programming skills.

Description: Write a (Dart) program that generates dart:ffi bindings from a .h-file. A possible approach could be to use the FFI to bind to clang. This would greatly reduce the amount of effort developers using dart:ffi would have to do. For more info dart-lang/sdk#35843.


Idea: Flutter testing sample app

  • Possible Mentor(s): [email protected]
  • Difficulty: Medium
  • Skills: Dart, Flutter coding skills.

Description: One area in which the Flutter samples repo is lacking is automated testing. We've always wanted a sample app set up to demonstrate the proper techniques for testing Flutter apps -- not so much the testing philosophy involved, but the tech that powers Dart and Flutter's testing architecture. This project would involve creating a simple sample application for the repo, and include unit, widget, and integration tests as the real prize.


Idea: Platform channel sample app

  • Possible Mentor(s): [email protected]
  • Difficulty: Advanced
  • Skills: Dart programming skills; C programming skills.

Description: The Flutter samples repo has a few apps that touch on platform channels, but nothing dedicated to the topic. A sample app that showed event channels, method channels, moving structured data, and other related topics would be a welcome addition to the codebase.


Idea: Programmatic YAML modification package

  • Possible Mentor(s): [email protected]
  • Difficulty: Easy to medium
  • Skills: Parsing; abstract-syntax-trees; programming skills in Dart or similar language.

Description: Write a Dart package for programmatically modifying a YAML file while preserving comments. Figuring out the exact data structure and API for modification is part of this project, though inspiration may be drawn from package:yaml. The goal is to use this for implementing a pub add <package> command, which modifies the pubspec.yaml without throwing away comments. Stretch goal might be to preserve as much whitespace and YAML style as possible.


Idea: TAR-stream reader package

  • Possible Mentor(s): [email protected]
  • Difficulty: Advanced
  • Skills: Dart programming skills; reading binary data; man files.

Description: Write a Dart package for reading tar archives as a stream of objects, similar to the golang API, and ideally being able to read the same test cases. This involves reading man-files, and figuring out how to represent all objects (or throw them away). A stretch goal would be to replace the use of native tar in pub for reading and writing tar-files. This would naturally include being able to read all packages on pub.dev.


Idea: SPDX license detection package

  • Possible Mentor(s): [email protected]
  • Difficulty: Medium
  • Skills: Dart programming skills; text parsing.

Description: Write a Dart package for detecting SPDX license from a LICENSE file following the SPDX License List Matching Guidelines. A goal would be properly represent the license of a package on pub.dev with an SPDX identifier. Stretch goal might be to handle LICENSE files with multiple licenses and display an SPDX license expression on pub.dev.


Idea: Flutter Background Execution - Media Player Example

  • Possible Mentor(s): [email protected]
  • Difficulty: Medium
  • Skills: Dart, Java / Kotlin, Objective-C / Swift, Flutter programming skills; Android / iOS native development experience

Description: The Flutter repository is lacking any example applications which perform tasks that require background execution. There have been multiple requests for a sample media player application, which would involve building an audio player plugin for both Android and iOS in addition to a UI in Flutter.


Template for additional ideas

## **Idea:** {{title}}

 - **Possible Mentor(s)**: `{{email}}`
 - **Difficulty**: {{easy | medium | advanced}}
 - **Skills**: {{keyword}}; ...

**Description**:
{{description}}

----
Clone this wiki locally