Skip to content

Commit

Permalink
docs: added application for GSoC 2023 (#99)
Browse files Browse the repository at this point in the history
  • Loading branch information
ice0 committed Jan 26, 2023
1 parent f7f8089 commit 9bd74db
Show file tree
Hide file tree
Showing 4 changed files with 338 additions and 0 deletions.
11 changes: 11 additions & 0 deletions docs/gsoc/2023.rst
@@ -0,0 +1,11 @@
.. _gsoc:

Google Summer of Code 2023
==========================

.. toctree::
:maxdepth: 2
:glob:

2023/*

132 changes: 132 additions & 0 deletions docs/gsoc/2023/application.rst
@@ -0,0 +1,132 @@
Application
===========

Synfig GSoC application 2023
------------------------------------

| **How did you first find out about Google Summer of Code?**
| Found that on the web in announcement from Blender Foundation
| **Website URL for Organization:**
| https://synfig.org
| **Tagline:**
| Open-source 2D animation software
| **Primary Open Source License:**
| GPLv3
| **What year was your project started?**
| 2006
| **Link to your source code location:**
| https://github.com/synfig/synfig
| **Organization Categories**
| Media (graphics, video, audio, VR, streaming, gaming, content management, etc)
| **Organization Technologies:**
| C++, Python, GTK, GTKmm
| **Organization Topics:**
| Vector graphics, Animation, 2d/3d graphics
| **What would your organization consider to be a successful GSoC program?**
| This summer we plan to help newcomers to the open source world and attract new contributors.
| **How will you keep mentors engaged with their GSoC contributors?**
| Every contributor opens GitHub’s issue, which is corresponding to his project and there provides weekly public reports about his progress. Every mentor should follow reports and provide on-time feedback and consultation to contributor via public discussion in relevant GitHub’s issue or privately via email/IM. Also, every mentor is required to contact contributor at least twice a week to check for the progress.
Administrator of the project also watches reports and ensures that feedback provided by mentors on time.


| **How will you keep your GSoC contributors on schedule to complete their projects?**
| Every contributor is required to write a short report about his progress every week, answering those questions:
- How was the last week? What did you accomplish?
- What is the #1 thing slowing you down?
- What do you want to have done by the end of next week?

These weekly blog posts will allow the contributor’s mentors and org admins to notice if a contributor is falling behind right away.

| **How will you get your GSoC contributors involved in your community during GSoC?**
| Considering that there are no mechanics to 100% guarantee contributor involvement after the program, we aim to maintain a community with a special attitude, where a contributor can have a home-like feeling, where he know his work is valued and appreciated by community other members and creative people from all around the world. This is the main motivation to contribute for all current project members.
Given that we put initial contributor motivation in the first place, we understand that there are situations where a massive and long-term contribution effort it not possible without monetary reward. So, thanks to a regular income of donations we can afford to pay a small grants for implementing some features, for contributors who have proven their abilities and skill to carry and complete projects. The money for such grants are collected via continuous crowdfunding and other means (see https://www.synfig.org/donate/ for details).


| **Why does your org want to participate in Google Summer of Code?**
| GSoC gives us an opportunity to grow our community of contributors. With GSoC contributors can work on Synfig full time for 175 hours and that's a great advancement to our project. But that's not all - the fact of participation in GSoC attracts attention to our project: before GSoC coding period starts, we get many contributions from aspiring contributors, who wish to proof their skills to be selected for participation. That's also a great boost for our project.
| **How many potential mentors have agreed to participate?**
| 1-3
| **Has your org been accepted as a mentoring org in Google Summer of Code before?**
| Yes.
**Which years did your org participate in GSoC? [Checkboxes]**

- 2019
- 2020
- 2021
- 2022


**Proposal Process / Application Instructions**

::

Before applying, please make sure to read [getting started page](https://synfig-docs-dev.readthedocs.io/en/latest/gsoc/2021/getting-started.html).

Application Template
====================

**Name**

Please provide your full name

**Email / Social / Web**

Where can we contact you? If you have a web page you'd like us to know about, please include it. Make sure to mention your Facebook, Twitter or other identities.

**Synopsis**

A short description of your planned GSoC project.

**Benefits**

Describe how your project will benefit Synfig. Will it benefit artists using Synfig? Will it be an aid for future Synfig development?

**Deliverables**

Provide a user-level summary of the final output or results of your project. How does it integrate in Synfig, and how does it cooperate with the rest of Synfig's features? Note that end-user documentation should be one of the deliverables as well.

**Project Details**

A more detailed description.

**Project Schedule**

How long will the project take? When can you begin work?
Include an estimated timeline of the project with mini-milestones.
Do you have any possible school or work conflicts with your schedule?

** Short Bio**

Please let us know who are you, what are you studying (and where), and what activities do you enjoy? What is your experience using Synfig or animation or other computer graphics programs? What code development projects you've participated in? What makes you the best person to work on this project? If you have any history submitting bug fixes or patches to our issue tracker at GitHub, please indicate what you have done.

**Proposal Tags**

improvement, bugfix, infrastructure

**Contacts Methods:**

Mailing List: https://forums.synfig.org/c/development

General Email: contact -AT- synfig -DOT- org

**Links**

Twitter: https://twitter.com/synfig

Blog: https://www.synfig.org/news/
69 changes: 69 additions & 0 deletions docs/gsoc/2023/getting-started.rst
@@ -0,0 +1,69 @@
.. _getting-started:

Getting Started
=====================

When applying for a Google Summer of Code grant to work with the Synfig, your application must follow our application template below (much of which we have borrowed from the Blender Foundation, with gratitude).

Before applying, please check with our `ideas page <https://synfig-docs-dev.readthedocs.io/en/latest/gsoc/2022/ideas.html#projects-ideas>`_ for our requirements for acceptance.

Also, please make sure to read the following tips:

Application FAQs
~~~~~~~~~~~~~~~~

**Q: What will most help my odds of acceptance?**

A: There are a number of things you can do to help your odds

1. A quality proposal - a well thought out proposal that shows you understand what you want to do and have reasonable expectations about what can be accomplished in the time you will have available.
2. Show evidence of past experience or achievements related to the proposal.
3. We require you to have 1-2 useful contributions to Synfig before the program starts - this show that you can successfully read, edit, and compile our code.
4. Discuss your application with us and get some feedback. The best way to do so is to open an issue on GitHub with description of your proposal (make sure to specify in title that is is GSoC-related).

**Q: Is there some place that tells me the process of compiling Synfig?**

A: See `this documentation <https://synfig-docs-dev.readthedocs.io/en/latest/common/building.html>`_.

**Q: Where can I learn basics of Synfig's functionality?**

A: We recommend to become familiar with existing Synfig functionality before you start any coding. You can start with `beginner's tutorials <https://wiki.synfig.org/Category:Tutorials>`_. Also, you can request a free access to `our video training course <https://www.udemy.com/synfig-studio-cutout-animation-en/>`_, which allow you to grab all basicsin the shortest time. Just mail us via `contact page <https://www.synfig.org/contact/>`_ letting us know that you are aspiring GSoC contributor - and we will send you a link for free access.

After watching the course we recommend to get familiar with Synfig's code by reading `this page <https://synfig-docs-dev.readthedocs.io/en/latest/common/structure.html>`_.

Application Template
~~~~~~~~~~~~~~~~~~~~

**Name**

Please provide your full name

**Email / Social / Web**

Where can we contact you? If you have a web page you'd like us to know about, please include it. Make sure to mention your Facebook, Twitter or other identities.

**Synopsis**

A short description of your planned GSoC project.

**Benefits**

Describe how your project will benefit Synfig. Will it benefit artists using Synfig? Will it be an aid for future Synfig development?

**Deliverables**

Provide a user-level summary of the final output or results of your project. How does it integrate in Synfig, and how does it cooperate with the rest of Synfig's features? Note that end-user documentation should be one of the deliverables as well.

**Project Details**

A more detailed description.

**Project Schedule**

How long will the project take? When can you begin work?
Include an estimated timeline of the project with mini-milestones.
Do you have any possible school or work conflicts with your schedule?

**Short Bio**

Please let us know who are you, what are you studying (and where), and what activities do you enjoy? What is your experience using Synfig or animation or other computer graphics programs? What code development projects you've participated in? What makes you the best person to work on this project? If you have any history submitting bug fixes or patches to our issue tracker at GitHub, please indicate what you have done.
126 changes: 126 additions & 0 deletions docs/gsoc/2023/ideas.rst
@@ -0,0 +1,126 @@
.. _ideas:

Ideas List
=====================


This year we plan to apply to Google Summer of Code. Currently we are looking for project ideas. If you are a contributor, you are welcome to explore existing project ideas towards the GSoC application phase. There are ways to reach out to mentors, and many projects have lists of newcomer friendly issues you can start from. Contributors are also welcome to propose their own project ideas.

Projects Ideas
--------------

Performance optimization (175 or 350 hrs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Description:**

| Improve Synfig rendering speed.
| If you want to learn about how to find bottlenecks in an application, especially in a complicated one like Synfig, and fix them - select this project :)
**Requirements: Linux (perf) / Windows (MSVC)**

- add flag to synfig CLI binary for performance test (it should measure the time taken to render the file, and allow to set the number of repeats)
- optimize rendering of the Solid Color layer
- test and optimize standard layers (circle, rectangle, gradient, etc)
- using multithreading to render the Solid Color layer
- fix the issue with creating unnecessary render threads

**Where to begin:**

Calculate the theoretical number of operations required to draw a Solid Color layer (without blending). Find why the Solid layer in practice spends more operations than in theory.

**Expected results:**

- At least 4 standard layers are optimized and the performance is close to theoretical (175 hours)
- At least 8 standard layers are optimized and the performance is close to theoretical (350 hours)

**Difficulty:** Medium/High

**Skills required:** C++

**Planned mentor(s):** Ayush Chamoli, `Rodolfo Ribeiro Gomes <https://github.com/rodolforg>`_

macOS app bundle (175 or 350 hrs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Requirements:** macOS

- add script/program to collect executable/library dependencies (python/c++ preferred) to SynfigStudio.app folder
- add support for signing binary files (this should be done in reverse order, files without dependencies should be signed first, SynfigStudio.app should be signed last)
- remove the macOS launcher script, add the code to set up the required macOS environment from the synfig/synfigstudio apps
- add cpack support to build installer on macOS
- add python and lxml packaging to .app (with signing))
- interface/menu improvements for more native macOS support

**Where to begin:**

- create prototype script/program to collect executable/library dependencies

**Expected results:**

- CMake/CPack builds SynfigStudio.app ready for distribution (175 hours)
- Synfig Studio is better adopted to macOS guidelines (350 hrs)

**Difficulty:** Medium

**Planned mentor(s):** `Dhairya Bahl <https://github.com/DhairyaBahl>`_, `Rodolfo Ribeiro Gomes <https://github.com/rodolforg>`_

Optimization of internal operations with layers (175 or 350 hrs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Description:**

The goal of this task is to introduce caching mechanism to allow Synfig work faster with layers and their parameters.

There are two places where it is possible to introduce cache optimizations:

1. The “set_time()” function. In current implementation, the “set_time()” is called every time when Synfig retrieves value of any layer parameter. This function recalculates parameters of all layers for specific moment of time, and writes them directly to layer objects. This is a slow operation and also leads to some bugs when using TimeLoop layer, time shift feature for groups and exported canvases. Instead of writing values into layer objects every time, it would be better to cache them.
2. Converting layers into rendering tasks. When rendering process started, it reads layers tree and converts it into tree of “tasks” (structures, understandable by render engine). When any change is made to document, Synfig have to re-render everything again, so it reads full tree again and makes new set of tasks. When document have many layer, then this process takes much time and even with a small change to single parameter it repeats the whole process (reads full layers tree). This process can be optimized by introducing an algorithm, which analyzes the change made to layers (their parameters) and propagates this change to the tree of rendering tasks.

Depending on available time and project size, aspiring contributor can choose to implement only first issue or both.

**Expected Results:**

- Synfig will work faster on complex animations with many layers.

**Difficulty:** Medium

**Skills required:** C++

**Planned mentor(s)** `Anish Gulati <https://github.com/AnishGG>`_, `Ankit Kumar Dwivedi <https://github.com/ankit-kumar-dwivedi>_


Propose a Project
------------------
If you have a project idea, edit the "Project Ideas" section below by filling the required details and sending a pull request (this page is editable at https://github.com/synfig/synfig-docs-dev/blob/master/docs/gsoc/2022/ideas.rst), even if you could not mentor (we will find a mentor).

**Required information for project proposal**

::

A descriptive title (175 or 350 hrs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**- Description**

A brief description about the project

**- Expected Results**

What benefit this deliver?

**- Difficulty** Easy | Medium | High

**- Skills required** Knowledge Prerequisite

**- Mentor(s)** Put your name if you are willing to mentor + other mentors.

*Please mention the following as comment on your proposal pr*

:Your name: :)
:Your profile: github | linkedin | etc
:Your role: I am a making this proposal as a <student | mentor | community member | contributor | etc>

Contacts
--------

https://www.synfig.org/contact/

0 comments on commit 9bd74db

Please sign in to comment.