Skip to content

Google Summer of Code projects

Beta Ziliani edited this page Feb 28, 2022 · 9 revisions

Crystal Google Summer of Code project ideas

Here we list potential projects that fall withing the expected workload of a GSoC project. Interested participants might choose a different topic of their liking; a good source of inspiration being the issue tracker. If a different topic is picked, the participant should write to crystal@manas.tech with the desired topic, and a mentor will contact they to shape the scope.

Potential mentors

Mentors include:

Projects

Completing Windows support

There is ongoing efforts to allow Crystal to work in a native fashion in Windows. From tidying up platform agnostic abstractions, to deal with specific OS API, representation, and setting bases for CI you can help Crystal reach a new land.

The related issue shows the progress made so far.

Possible mentor: @straight-shoota
Required skills: Windows SDK, Crystal or Ruby
Difficulty: Medium / Advanced
Expected outcome: 2 to 4 approved PRs
Size: 175 or 350hs depending on the selected tasks


A New Garbage Collector for Crystal

Currently Crystal uses libgc/bdwgc. While a great collector that works out of the box, we believe a specific collector for Crystal could benefit from the knowledge of the types of objects. Interestingly, this could be done in Crystal itself. @ysbaddaden has a prototype implementation in C of an alternative generic collector for Crystal. Your work will be to first port it to Crystal, and then complete it with different optimizations (some details are in the prototype's page).

Possible mentor: @beta-ziliani
Required skills: C, Crystal or Ruby, basics of garbage collection
Difficulty: Advanced
Expected outcome: A working algorithm
Size: 350hs


A framework for getting reliable benchmarks

As the compiler and stdlib evolves it's important to know easily if there were performance improvements (or unimprovements) due to recent changes. The goal would be to build a benchmark framework, the suite of code samples to measure, and reporting output that would allow to depict relevant changes across Crystal versions. You can read more in the associated ticket.

Possible mentor: @straight-shoota or @bcardiff
Required skills: Crystal or Ruby
Difficulty: Medium
Expected outcome: The framework set up in the CI
Size: 175hs


Help Crystal reach new places

Crystal can serve many purposes. CLI, Gaming, Web apps, UI, etc. For each scenario sometimes bindings to C libraries are needed, sometimes guides and documentation might be needed (even reporting or solving some issues!). Pick your beloved niche and improve the state of art around it.

Possible mentor: @straight-shoota or @bcardiff
Required skills: Crystal or Ruby
Difficulty: Medium
Expected outcome: A guide or documentation explaining how to use Crystal for the selected topic, with the required code/changes to make it work
Size: 175 or 350hs


Formalizing the language

There is no formal document for the semantic of the language. Although there are tons of test in the spec of the compiler to ensure things work as expected, it would be great to have a proper specification of how the language works (or should work). This is not a simple document task. Checking if the compiler complies with the specs in one of hidden challenges in this journey.

Possible mentor: @beta-ziliani
Required skills: Programming language semantics
Difficulty: Advanced
Expected outcome: A document or runnable specs (e.g., in PLT Redex) with the specification of a substantial fragment of the language
Size: 350hs