Google Summer of Code
Enjoy Google Summer of Code 2018 while collaborating with Crystal
Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school. read more
Choose Your Own Adventure
This is a list of some ideas we think might be interesting and welcome in the community, but we encourage you to propose other projects aligned with your own interests (as long as they’re still related to the Crystal ecosystem ^_^).
- Benchmarks framework
- 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. read more
- Crystal bootstrap lineage
- Originally the Crystal compiler was written in Ruby. At some point it grow enough to be bootstrapped and from that moment each releases used the previous one. It would be great to have a procedure to rebuild from sources the crystal versions. Most, or all, the information is available in the repository. This would be valuable not only because is neat, but because it would help Crystal to reach other platforms.
- Put some Windows in Crystal
- 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.
- Documentation & Guides
- 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 (and fighting some issues) might be needed. Pick your beloved niche and improve the state of art around it.
- Academy & Science
- We'd also love to see Crystal flourish in the academy and science. From improving low level numeric treatment to improving or creating state of the art algorithms used in the area, there are lots of things that can be done.
- Formality for the good
- 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 work (or should work). This is not a simple document task. Checking if the compiler comply the specs in one of hidden challenges in this journey.
- Meet the shards dependency manager
- Shards allows anyone to consume crystal libraries produced by others. Our approach is to avoid a centralized repository. Although it's working good enough for today uses there are lots of ideas to improve how dependencies are solved, fetched and published in order to support more scenarios in the near future.
- Dig into the compiler
- Jump into the internals and defeat some pending issues to make the compiler more robust and consistent. Note: the compiler is written mostly (~98%) in Crystal.
- Tidy up the stdlib
- The compiler and stdlib have evolved across the years. Help us tidy up, improve and fix bugs of the stdlib.
- Database access
-
crystal-db
is the abstraction layer for relational databases as sqlite,
mysql, and postgresql.
Drivers could be added for other databases. Each specific driver could be
improved. And there are cross cutting concerns that can be tackled in
crystal-db
itself. - Web frameworks
- Kemal, Amber, and Lucky are some of the top options to develop web app, microservices and all kinds of http backed services. There are lots of things to do still. Having great frameworks is helps to boost productivity and joy while programming. Join and help them evolve.
- New shards
- Can't think of anything? Check for this community maintained list of ideas for shards missing in the ecosystem.
Next steps
If you are interested, join the community through your channel of preference. You’re welcome whether you participate in the Google Summer of Code or not.
Check the Google Summer of Code page to enroll as a student.
Happy crystalling!