Skip to content

Final report about my GSoC 2020 contributions to Catrobat/Catroweb.

Notifications You must be signed in to change notification settings

dmetzner/GSoC-2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

Background

The Share community platform is a web application responsible for hosting dynamic user data of Catrobats' app users, including more than 180 thousand projects. Besides, the platform provides various recommendations, social features, tutorials, and much more. The platform, also often referred to as Catroweb, is developed using the Php web-framework Symfony in a test-driven development. However, over the years, many components of the project became outdated and broken, leaving the project hard to maintain with low usability. The Catroweb team does its best to refactor and update every feature to increase software quality. Nevertheless, the resources are limited in the Catrobat project.

Google Summer of Code (GSoC) is a global program that matches students up with open-source, free software, and technology-related organizations to write code and get paid to do it. This GSoC project is fully dedicated to further improve the performance, code quality, and design to satisfy the requirements of customers and developers in the Catrobat/Catroweb project.

This report describes my GSoC 2020 contributions to the Catroweb project. A significant part of my work started with the research and planning aspects of the refactoring. Every pull request of other developers during this project was extensively reviewed and discussed. Apart from that, various measurements and new features have been implemented by myself.

Phase 1 - Identification of issues

Code quality:

  • The CI/CD system currently in development (not part of this project) using GitHub actions introduced various static analysis tools in addition to the dynamic tests. Using their results enables quick localization of code smells and bad practices hidden deeply in the project.

  • With manual code reviews of new contributions and also of the existing codebase, many issues can be detected.

Performance:

  • To analyze the platform's performance, a development tool provided by Google called PageSpeed Insights is used. PageSpeed Insights offers extensive details about the impact of possible issues.

Design:

  • No research was needed. It was already clear that the whole page should get a new skin.

Phase 2 - Planning

  1. All the identified issues tickets have been created to keep track of their state in Jira. Jira is a tool to manage and monitor the development process heavily used in the Catrobat project and its agile development. Various tickets required the input of the UX-team. The UX-team is responsible for creating mock-ups and defining the workflow of a new feature. However, a part of this project was to constantly provide the UX team with extensive feedback to ensure the features are fully specified. The conversations are not publicly available. (PM, or Catrobats confluence pages)

  2. Presenting all issues in a planning game to the whole team collectively estimate the required work to implement the tickets. Besides, this provides all developers with a short overview of the topic. This way, everyone can quickly start to work on any of the defined issues. Here is the Google spreadsheet created for this process.

Phase 3 - Implementing all tickets

CodeReviews

Other members of the Catroweb team coded many of the specified issues. However, I did the code reviews. Some reviews were quick, while others, especially those for junior developers, were more extensive.

  • For example, the first part of the new Notifications Design can be seen here: Example code review. However, most conversations at Catrobat happened in Slack/Discord.

Here is the whole list of (~200) pull requests I have reviewed: Reviewed pull request newer than 2020-05-01 (Catrobat/Catroweb), Reviewed pull request newer than 2020-05-01 (Catrobat/Catroweb-API).

Coding

My created pull requests can be seen here: Only pull request newer than 2020-05-01). However, some of the pull requests were not created for GSoC, but the CI/CD system I am working on right now. Therefore, here is an explicit list of most commits that were done as a GSoC contribution.

New Features
Redesign of:
Refactor of:
Removed dead/broken/duplictaed code in:
Fixed Bugs/Issues:

Future work

The Catroweb project slowly finds itself in a stable state again. A software product will never be perfect. The goal is to find a balance between software quality and the required resources to achieve it. The following bullet points represent actions with a high return of investment. However, they were not possible to be implemented at the moment.

Currently NOT possible
  • Php 8: The next release of Php brings various new features such as the JIT compiler, union types, and attributes. The deprecations are already resolved. An upgrade should be easy.

  • Symfony 5: The newest release of Symfony comes with several improvements. One of them is a better performance. However, several dependencies block the upgrade at the moment (SonataUserBundle, FOSElasticaBundle). Other deprecations are already almost all resolved. Once there is no problem with the dependencies, the update should be easy.

Not possible in the given time frame:
  • The recommendation system must be refactored. A single run takes 90 days + it always starts from scratch.

  • The remix graph system must be refactored. Remixes for projects with many remixes load very slow + DB queries are executed with a size of multiple KB.

About

Final report about my GSoC 2020 contributions to Catrobat/Catroweb.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published