Skip to content

Instantly share code, notes, and snippets.

@yash-yp
Last active February 5, 2022 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yash-yp/887c3e68ff3ff222f941402ceb7bf0dc to your computer and use it in GitHub Desktop.
Save yash-yp/887c3e68ff3ff222f941402ceb7bf0dc to your computer and use it in GitHub Desktop.
GSoC'21- Final Project Report

GSoC logo

GSoC'21 - Final Project Report

The following report summarizes the work done during Google Summer of Code 2021 along with the results, scope for improvements and future work. This also serves as the final project report with all the contributions.

Basic Info

Background

Ever since I attended the first workshop on open-source projects, I have actively been on the lookout for opportunities to contribute and interact with people. The best part is that not only do I get to learn a lot and make new friends, but also the fact that I’m able to collaborate on projects which have a global impact.

I learned about CHAOSS while looking for organizations that participated in GSoC'21. I have been actively contributing to the CHAOSS project since March 2021. I received the GSoC project acceptance on May 17, and that is when I realized that it was going to be an unforgettable summer.

About the Project

MARS logo

Metrics Automated Release System

CHAOSS metrics are created to give an in-depth look at the various aspects of an open-source project. The metrics are extremely valuable since, as an open-source project gets more prominent, it becomes increasingly difficult to keep track of its demands, implementation, and future requirements. These metrics are a crucial component in assisting organisations in establishing smart resource allocation decisions.

The metrics are released biannually in the form of a report. These metrics exist in the form of markdown files that are compiled together to generate the release report. Additionally, CHAOSS also translates the metrics into different languages to increase global accessibility.

The majority of the work in this project focuses on extracting raw data in the form of markdowns, processing it, and then outputting a single PDF file containing all the required information.

Goals:

  • Automate the English metrics release process to create PDF from Github markdown files.
  • Develop a process to ensure the translations and release of metrics in different languages.
  • Automate the process of report generation for the translated versions of the metric markdowns.

Approach and Workflow

The following flowchart summarizes the workflow of the project:

MARS workflow

For more details, refer to the main project README.

Communication and Work Management

  • Weekly video conferences over Google Meet were used as the primary mode of communication with the mentors
  • The CHAOSS slack workspace was used to resolve any doubts, suggestions and comments instead of Github Issues for faster coordination.
  • The complete project is hosted on the MARS repository under the CHAOSS organization on Github.
  • Weekly blogs and updates were provided in the community to ensure everyone was updated with the project.

Pull Requests and Issues

chaoss/MARS

  • #2: Add automation system (English) for further development & review
  • #3: Shift automation system from dev branch to main
  • #4: Change subsidiary filenames and fix headings in TOC
  • #5: Fix bug in table generation and minor code improvements
  • #8: Fix bugs in image copying & nested list levels.
  • #10: Include front and end matter docs to the PDF
  • #12: Update README.md and Create CONTRIBUTING.md
  • #13: Add error messages and summary
  • #14: Fix bug and Update active user input
  • #20: Add support for translations (Python venv)
  • #24: Add README for language support & Minor code changes
  • #25: Update YAML file and change order of TOC
  • #27: Modify code to enhance readability
  • #28: Rename directories & Remove inessential files
  • #29: Merge 'english_release.py' and 'translations_release.py' to 'metric_release.py'
  • #31: Divide table_templates.py into common templates & word-translations.yml
  • #33: Reformat and clean scripts

chaoss/translations

  • #12: Added Images & Fixed their links
  • #13: Sample PR for Restructuring the Repository
  • #14: Sample PR for Restructuring the Repository
  • #17: Restructured Chinese translations & Added images
  • #18: Restructured Spanish translations & Added images
  • #30: Standardize Chinese WG-Common metrics & READMEs
  • #31: Add placeholder READMEs & create 'focus-areas' directory in WG-DEI translations(Chinese)
  • #32: Add placeholder READMEs & create 'focus-areas' directory in WG-Evolution translations(Chinese)
  • #33: Add placeholder READMEs & create 'focus-areas' directory in WG-Value translations(Chinese)
  • #34: Add placeholder READMEs & create 'focus-areas' directory in WG-Risk translations(Chinese)
  • #60: Standardize Spanish WG-DEI
  • #61: Standardize Spanish WG-Evolution
  • #62: Standardize Spanish WG-Value
  • #29: Guidelines for Metric Translations and Release
  • #39: Placeholder README files in some translations

chaoss/governance

  • #278: Add templates for standardization of files in each WG
  • #277: Standardization of files in each WG repo

chaoss/website

  • #571: Fixed Hyperlink
  • #583: Fixed wrong question for 'contributor location' metric
  • #629: Rename contributors.md to chaoss-contributor-list.md & Change headings
  • #645: Create latest release notes and decrease heading levels (MARS)
  • #608: Header overlapping with navigation menu on metrics webpage

chaoss/wg-common

  • #110: Updated LICENSE Year
  • #112: Renamed images and updated links to images
  • #121: Update README.md to follow new template
  • #116: Standard Structure for README.md in each WG repo
  • #123: Inconsistency in focus area goals

chaoss/wg-diversity-inclusion

  • #355: Standardized Repo Structure
  • #364: Standardize focus area READMEs
  • #365: Rename images and add spaces
  • #358: Standard Structure for README.md in each WG repo

chaoss/wg-evolution

  • #406: Standardized Repo Structure
  • #407: Delete inessential metric folders & Update README.md
  • #413: Fix minor issues in metrics for proper display of PDF (MARS)
  • #414: Standardize & remove extra content from focus-area READMEs
  • #408: Standard Structure for README.md in each WG repo

chaoss/wg-risk

  • #131: Modify metrics to follow updated template
  • #133: Add source file for table image
  • #128: Standard Structure for README.md in each WG repo

chaoss/wg-value

  • #140: Updated LICENSE Year & Fixed Capitalizations
  • #145: Replace HTML tags and tables
  • #143: Standard Structure for README.md in each WG repo

Future Scope

The MARS project is designed keeping in mind the current and future demands as the CHAOSS Project grows. Certain features, however, can be added to increase flexibility and simplify the release process. Some of them are listed below.

Suggestions for MARS

  • Use of one Dockerfile for Linux as well as MacOS.
  • Support to run the scripts on Windows OS.
  • Incorporate file formats other than markdown.
  • Provide support for the release of metrics in languages that may be housed in a separate repository in future
  • Provide support for tables in markdown format.
  • Remove the metrics template's one-line gap rule between text and images.
  • Autodetect and warn the use of HTML in metric markdowns.

Suggestions for Translations Process

  • Automatically create an issue in the translations repo whenever a metric is updated (Github Actions)
  • Maintain a database for individual metrics to keep track of their update status
  • Use of translations-tools such as Weblate to provide version control.

My Learnings

Throughout the duration of the project, I have grown a lot. Participating in GSoC has definitely improved my interpersonal and technical skills. Here are some of the prominent ones:

  • Collaborating with different teams across different time zones.
  • Understanding and implementing the opinion and suggestions of different stakeholders in the project
  • Studying the workflow of projects and possible customizations that can be made
  • Analysing different approaches to solve a problem along with their pros and cons
  • Making a simple and easy to follow process that can easily be understood and followed by the community members.
  • Writing clean and well-commented code
  • Understanding and reviewing code written by someone else and modifying it.
  • Implementing checks and error handling to alert the user in case of any malfunctioning.
  • Realizing that a strict timeline is not necessary to successfully complete a project.
  • Working with different tools such as DVCS (Git), Gitbook, Python, Docker, Shell, LaTeX, Pandoc, Lucidchart and many more.
  • Effectively communicating the project details by writing weekly blogs and sending updates to the whole community

Note of Thanks

The project would not have been possible without the ongoing support of many people. I would especially like to thank

  • Ritik Malik for being a fantastic partner and coding together with me.
  • Georg Link, Kevin Lumbard, Matt Germonprez, and Jaskirat Singh for discussing, suggesting improvements and patiently answering my questions about the project.
  • CHAOSS community for discussing the project during community calls and being so appreciative about it.
  • Srijan Misra Sir and COPS-IIT(BHU) for their continuous guidance and help.
  • Friends and family for their encouragement and assistance throughout this project.

Footnotes

@Raeskaa
Copy link

Raeskaa commented Feb 5, 2022

Hey Yash,
image
the meeting minutes doc link you provided is open for everyone to edit- it'll be better if you change the link to "just view" and not "edit"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment