Differences between revisions 45 and 46
Revision 45 as of 2024-02-21 23:48:58
Size: 13915
Editor: mkoeppe
Comment:
Revision 46 as of 2024-02-21 23:50:20
Size: 13802
Editor: mkoeppe
Comment:
Deletions are marked like this. Additions are marked like this.
Line 38: Line 38:
If you are interested in contributing to open-source mathematics software, note also these [[https://summerofcode.withgoogle.com/programs/2024/organizations|GSoC 2024 organizations]]: If you are interested in contributing to open-source mathematics software, note also these [[https://summerofcode.withgoogle.com/programs/2024/organizations|GSoC 2024 organizations]], all of which have their own GSoC Ideas pages:
Line 44: Line 44:

Prospective GSoC Contributors typically begin by browsing the Ideas Pages of various participating open source organizations (orgs) such as !SageMath and

SageMath Google Summer of Code (GSoC) Contributor Application Guide

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 12+ week programming project under the guidance of mentors.

Originally created as a program for (university) students, since 2022, Google Summer of Code has been open to students and to beginners in open source software development that are over the age of 18 at time of registration.

Interested?

Step 1 (now): Check whether you satisfy the Eligibility Criteria.

Step 2 (now): Review the GSoC Timeline and mark it in your calendar:

  • Apr 2, 2024 final deadline for application (with detailed project description)
  • May 1, 2024 notification
  • May 27, 2024 coding begins
  • Aug 26, 2024 coding ends (end date is flexible)

Step 3 (now): Check whether the stipends paid by Google will make it economically feasible for you to participate.

What is SageMath, and what other GSoC organizations are there?

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 Sage 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 Sage, most notably via Jupyter notebooks.

Sage 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.

SageMath has participated in GSoC as a mentoring organization since 2008 and was again selected for participation in the 2024 program.

Step 4: Explore the SageMath GSoC 2024 Ideas Page for information on potential projects prepared by our experienced mentors. If you are interested in contributing to open-source mathematics software, note also these GSoC 2024 organizations, all of which have their own GSoC Ideas pages:

Step 5: Join the sage-gsoc mailing list. The purpose of this mailing list is to facilitate and streamline communication between prospective GSoC Contributors and potential mentors.

Communication with potential mentors is crucial for writing and submitting well-defined and meaningful project proposals. These proposals are reviewed by the SageMath GSoC organization as well as by Google.

The selected contributors will then spend 12+ weeks in the summer writing code and receive a stipend from Google for their work.

Contacting Us

Sage maintains three primary mailing lists, namely:

  • sage-gsoc - discussions specific to the GSoC program

  • sage-devel - primary discussion group for development pertaining to all of Sage

  • sage-support - help in running/using Sage

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

Interacting with the Sage Community

Sage, as an open source project, 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. Following are some tips to keep in mind.

  • Set up Sage on your system - If you are planning on applying to Sage for GSoC or if you wish to contribute, first make sure that you've installed Sage on your personal system and that you've completed the rest of the pre-requisites before posting to the mailing list. The Getting Started section below provides a checklist and links to detailed documentation.

  • Don't Send Generic Introductory Emails - Posts such as "I am interested in open source. How can I get started with Sage?", "How can I proceed?", "How do I use this module?" are very time-consuming to answer and can get ignored. At best, these will get a response containing a link to the documentation and request for further information. Save yourself the time and do your homework. Briefly describe your background and ask easily answerable questions by indicating the field and project you are interested in.

  • Be Specific and Precise - Spend a little time in crafting good emails with helpful titles. Provide context to the problem you are facing and include relevant details such as describing what you have done so far, the error message, development environment, etc. Make it easy for the reader to understand what you are asking for.

  • Do Your Homework - Please check the information pages and past discussions on forums to ensure that you are not reposting or crossposting the same question. Attempt to first resolve the problem yourself before asking and demonstrate willingness and capability to help yourself. This will go a long way in creating a positive impression. (How To Ask Questions The Smart Way? is a wonderful read on how to ask questions in a way more likely to get you a satisfactory answer.)

  • Don't Ask to Ask - Don't hesitate to ask questions but when you do, don't ask questions of the type "Can anyone help me?". Simply go ahead and state the issue you are facing.

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, even before the complete project ideas list is out. By becoming actively involved, you can significantly improve your GSoC proposal and also help us in deciding how you stand out from the rest of the applicants. But first, you should complete the checklist below to ensure that you are ready to contribute.

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

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

  3. Install Sage 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 will take a few hours).

  4. Read Sage'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.

First Contributions

There are two primary ways to contribute and acquaint yourself with the various aspects of Sage development namely, writing an Issue and/or PR, and reviewing a PR. You should first figure out which module(s) of Sage you are interesting in contributing to (possibly through the list of available project ideas) and then find a suitable open easy Issue to resolve. Alternatively, if you don't find something specific, you can always ask on the sage-gsoc mailing list.

  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 on GitHub.

  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 Sage. This is a very important component of Sage development which 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.

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. 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:

  • Name
  • Contact Information (email, instant messaging, …)
  • Location/Timezone
  • University

Background:

  • What are your technical skills, education, experience, etc. Especially make sure to explain with what level of mathematics you are comfortable with and on what level you would like to program.
  • Who are you? What makes you the best person to work on this particular project? Your personal motivation?
  • What platform and operating-system are you using on your computer? (Sage development is done best on Linux and macOS; and on Windows through WSL)
  • Are you or have you been engaged in other open-source projects?
  • Do you code on your own pet projects?
  • Are you a Sage user, how long do you know Sage?

Project:

  • Title, Project Synopsis: a short description and summary of its aim and scope.
  • What is your personal involvement or relationship with your proposed project?
  • Details: describe all the details and explain modules or parts of your whole project. Break down the whole project into individual tasks - as good as possible - and describe deliverable and quantifiable results for each of them. It also helps if you have already discussed this with a possible mentor.
  • Schedule: A timetable, including special circumstances like exams or holidays, for the individual tasks.
  • Risk Management: Try to anticipate potential problems and explain, how to mitigate them. Propose alternative scenarios, if a particular milestone isn't reached, to still successfully complete the 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)