SageMath Google Summer of Code (GSoC) Contributor Application Guide

Hello and welcome to SageMath's (or Sage for short) GSoC guide for contributors!

We are glad that you are interested in participating in GSoC with SageMath, and we look forward to working with you. On this page, you will find numerous application details and links to resources that can help you quickly set up SageMath and get started.

You can also explore the GSoC 2024 Ideas Page for information on potential projects.

What is GSoC?

Google Summer of Code is a global, online program focused on bringing new contributors into open source software development. GSoC Contributors work with an open source organization on a programming project under the guidance of mentors.

If you are interested in applying to be a GSoC Contributor, please review the following information:

  1. Eligibility Criteria

  2. GSoC Timeline In particular, the deadline for GSOC 2024 applications is 18:00 UTC April 2nd, 2024.

  3. Stipends paid by Google (depends on the country you reside in)

You can find complete information on the main Google Summer of Code website.

To submit a proposal to be a GSoC Contributor to SageMath, you can find the application proposal at the bottom of this page. The proposal must be submitted through the official Google Summer of Code website.

What is SageMath?

SageMath is a GPL open-source mathematical software system. It is designed to be not just a computer algebra system, but more like a complete environment for doing mathematics and related calculations. It is based on a vast collection of existing open-source software tools and libraries and ties them together via Python and Cython.

Python is also the primary interface language for the user. Behind the scenes, the SageMath library executes the commands and calculations by its own algorithms or by accessing appropriate routines from the included software packages. On top of that, there are various ways for users to interact with SageMath, most notably via Jupyter notebooks.

SageMath works hand-in-hand with other computational mathematics software systems such as GAP, Singular, and many more. A portion of a GSoC project in the SageMath organization can also be dedicated to making contributions to these systems. Some of these software packages that are called from SageMath are also GSoC 2024 mentor organizations. You can find these in the GSoC 2024 organizations list. Some relevant projects are CGAL Project, GeomScale, GNU Octave, NumFOCUS, SymPy, which a potential SageMath GSoC project would be writing an interface.

Contacting Us

SageMath maintains three primary mailing lists, namely:

For further support in using SageMath, there is also a Question-Answer forum at ask.sagemath.org.

Interacting with the SageMath Community

SageMath depends on a diverse community of volunteers to contribute and help move it forward. The mentors are here to help you and the rest of the community is eager to provide support as well. Please respect the time and efforts of the community and be courteous at all times. Here are some tips to keep in mind.

You may also want to peruse the The DOs and DON’Ts of Google Summer of Code published on GSoC's official blog.

Getting Started

Its always a good idea to get started early, and you are strongly recommended to have built SageMath from source on your computer to do the development required to be successful in your GSoC project. By becoming actively involved, you can significantly improve your GSoC proposal and can stand out from other applicants. The following is a very short guide for how to get started with contributing. For more details, see the SageMath developer's guide.

  1. Fork the GitHub repository sagemath/sage and clone it to your computer.

  2. Install SageMath on your local system - Ensure that you have the prerequisites installed on your system and then start the installation procedure on the developer version. (Note, running make the first time may take a few hours depending on the system. You may want to take advantage of the multiprocessor build features.)

  3. Read SageMath's Conventions and Browse Tutorials - Sage follows various conventions and guidelines for writing code, building documentation and running automated tests. Please make sure to follow them. Further, there are numerous tutorials available for a guided view of various Sage modules.

  4. Read the SageMath Guide - Developer Documentation is the single best resource for everything related to SageMath development and as such should be considered as required reading.

First Contributions

There are two primary ways to contribute and acquaint yourself with the various aspects of SageMath development:

  1. Writing an Issue or Pull Request - Developers, to put it simply, report on a bug or feature or enhancement that they wish to help with by opening an Issue on GitHub. Then they discuss potential solution ideas through comments and based on that write code and submit it as a Pull Request (PR) on GitHub. You can find more detailed instructions on our Development Walk-Through page.

  2. Reviewing a Pull Request - Once a developer submits code in the form of a Pull Request to resolve an Issue, it is reviewed independently by other developer(s) who may comment changes as deemed necessary. All recommendations must be incorporated before the new code can be merged into SageMath. This is a very important component of SageMath development that helps ensure quality control as well as constructive feedback. If you are reviewing a PR, please complete the Reviewer's Checklist and ask for assistance if you are not sure how to evaluate items from the list. PRs needing review are a good place to start.

Potential SageMath GSoC Contributors are encouraged to submit a PR to demonstrate knowledge of our development process. Help you decide what a good PR would be, you should first figure out which module(s) of SageMath you are interesting in contributing to (possibly through the list of available project ideas) and/or find a suitable open easy Issue to resolve. If you don't find something specific, you can always ask on the sage-gsoc mailing list.

GSoC Application Proposal

The Project Proposal is the most vital component of your application process and the primary resource available to the organization to judge your suitability for the program. Please spend time on crafting a detailed and well-thought proposal. It is a great idea to share your proposal with the respective mentors of the project you are applying to and obtain their feedback before the application deadline as communication with potential mentors is crucial for your project proposal. Determining the scope and planning a schedule in particular, can be tricky tasks. The more you think about these and the more you discuss with the mentors, the easier it will be later on when the coding period begins. Please use the following application template and make sure to be as precise and detailed as possible.

Personal:

Background:

Project:

Note: All final applications must be submitted on the official GSoC website.

GSoC/Contributors (last edited 2024-02-22 06:51:39 by tscrim)