TL;DR Jump to the Ideas list.
Introduction
Each year since 2015, we have participated in Google Summer of Code as the Radare2 project and accomplished many goals. This year we participate as a fork - Rizin, but effectively continuing the same process and the same mentors.
Mentors
Members of the Rizin and Cutter core teams have volunteered to guide students for GSoC’21. They were already guiding the students for the GSoC and RSoC in past years as part of the Radare2 project. Please feel free to reach out to any of them in case you need any help in selecting a project.
- Anton Kochkov Mattermost: xvilka – @akochkov
- Riccardo Shirone Mattermost: ret2libc
- Florian Märkl Mattermost/Telegram: @thestr4ng3r – @thestr4ng3r
- Antide Petit IRC/Telegram: xarkes – @xarkes_
- Itay Cohen Mattermost/Telegram: @Megabeets @Megabeets_
- Giovanni Dante Grazioli Mattermost/Telegram: @deroad @der0ad
- Yossi Zapesochini Mattermost/Telegram: @yossizap
- And many others
Development methodology
Currently, all repositories are hosted on GitHub main organization account, bugs are tracked on GitHub issues too. We are mostly using our own Mattermost instance, IRC, and Telegram) for communication. We have a testsuite (that is running on GitHub Actions, Travis CI, AppVeyor and SourceHut) to test and verify that all the features are still working and that a pull requests or commits don’t break anything, to ensure the support of different operating systems (Linux, MacOS, Windows, FreeBSD, OpenBSD), different architectures (x86/x86_64, ARM64, PowerPC, SystemZ), and to find regressions. We encourage contributors to write test cases and documentation in order to verify the implementation and ensure that everything fits well together. For complex bugs and examples we’re using ASCIInema for recording the sessions.
See also our guides for corresponding projects:
- Rizin Contributing Guide and Developers Intro
- Cutter Contributing Guide and Developers Intro
For those who want to get introduced to the Rizin codebase and practices, we recommend to pick one of the easy issues for Rizin or Cutter to start with.
License
Rizin is modular: this means that it aims to make all the elements and features easily reusable from other projects. The choice of LGPL3 as a license is the minimum requirement to get code merged in Rizin. Contributors can choose Apache, BSD, MIT, Public Domain, or other similar licenses. The reason to exclude GPL as a valid license for the project is because we aim to support proprietary software that uses Rizin, while protecting our free codebase.
Instructions for students
It is a requirement that students who want to apply to the Rizin project for the Google Summer of Code 2021 should submit a small pull request accomplishing one of the microtasks (see below) as part of their application. Though you can also choose any of the GitHub issues for Rizin if they are big enough to be a qualification task, and still small enough to be finished no more than in a couple of weeks.
Programming languages
Most of Rizin is written in C (conforming C99 standard) and hence we expect students to be familiar with C programming language. For some of our tasks or microtasks, such as collaborative RE or rz-pm, students should know the Go programming language. For the Cutter tasks, students should know C++ and Qt framework basics.
Recommended steps
- Read Google’s instructions for participating
- Grab any of the project from list of ideas that you’re interested in (or propose your own).
- Write a first draft proposal using Google Docs and our template and ask one of the mentors or administrators to review it with you.
- Submit it using Google’s web interface.
Student proposal guidelines
- Keep it simple enough to fit in no more than a couple of pages. Try to be clear and concise in your writing.
- Try to split GSoC period into tasks, and each task into subtasks. It helps us to understand how you plan to accomplish your goals, but more importantly, it’ll help you to understand the task deep enough before starting, and prioritize important things to do first.
- Please, note, how much time a day/week you are able to spend on this project.
- Specify your timezone, since so we can assign you a mentor in the same one, to ease communication.
- Submit your proposal early, not in the last minute!
- Be sure to choose a “backup” idea (the second task you want to do), so that conflicts (two students for one task) can be resolved.
Project Ideas
Rizin
Type Analysis Improvements
Currently we have types support in Rizin, including basic (low-level) ability to edit type with pf
and higher-level,
diff --git a/gsoc/2022/index.html b/gsoc/2022/index.html
index a100b88..0e7996c 100644
--- a/gsoc/2022/index.html
+++ b/gsoc/2022/index.html
@@ -6,7 +6,7 @@
Mentors Members of the Rizin and Cutter core teams have volunteered to guide participants for GSoC’22. They were already guiding the participants for the GSoC and RSoC in past years. Please feel free to reach out to any of them in case you need any help in selecting a project.">