A full report on my Google Summer of Code 2023 work with FOSSology
Project: "REST API Improvements" 👨💻
About me 👩💻
Hello, I'm Samuel Dushimimana, a proud graduate from the first class of Software Engineering and Embedded Systems at Rwanda Coding Academy. With over 4 years of hands-on experience in building full stack applications, I'm thrilled to be an active member of the FOSSology community for Google Summer of Code 2023.
In this article am going to outline the details of my contributions as a reference of project completion during the 12 weeks of coding.
During my participation in the Google Summer of Code (GSoC) program, I focused on implementing and enhancing eight key features within the project:
- I developed the REST APIs that tackled on extracting file contents and making the clearing decisions about associated licenses. This involved extracting, processing and highlighting license information from the files.
- I designed a set of APIs to facilitate the presentation of a tree view of files and their corresponding license details. Additionally, I implemented APIs that provided summary statistics about the licenses associated with a particular uploaded content.
- The task encompassed creating essential APIs for managing folder contents. This involved tasks such as retrieving removable contents from folders and unlinking contents from specific parent folders.
- I played a role in designing APIs that served different components of the Admin dashboard. These APIs provided data such as database metrics and job statistics, contributing to the effective monitoring of the system.
- I developed REST APIs that helped the system Admin to handle different operations on acknowledgments and standard comments related to licenses.
- Another aspect of my work involved designing REST APIs for importing and exporting licenses and obligations using CSV files.
- I created REST APIs that allowed administrators to schedule and execute various operations manually.
- I improved the configuration of the REST APIs to accommodate FOSSology API Version 2. This enhancement ensured compatibility with future versions and streamlined the process of incorporating upcoming changes.
Let's dive deep into each category in more details to showcase all the contributions with the corresponding tests in screenshots where applicable, and the respective links to the Pull requests.
-
Setting the clearing decision for a particular file #2460

-
Setting the main license for the Upload #2462

-
Removing the main license from the Upload #2463

-
License Decision Management (Add, edit & delete License Decision) #2509
-
Get all main licenses for the the Upload #2465

-
List all the license decisions for the item #2470

-
Get the clearing history for a specific item #2477

-
Schedule the bulk scan #2483

-
Handling three pointers functionality (moving from file to file). #2480

-
Get the bulk history list of the upload & item #2481

-
Get the positions to be highlighted in the contents of the file #2484

-
Get the license tree-view of the upload and the item #2492

-
Get the clearing progress status of the upload #2494

-
Get the scanned licenses for the upload #2495

-
Get the licenses histogram for the upload #2497

-
Get the edited licenses for the upload #2498

-
Get the licenses's count summary for the upload #2499

-
Get the licenses' reuse summary list for the upload #2501

-
Get all the agents for the upload #2502
-
Get all the agents' revisions for the upload #2506
-
Get all the licenses admin acknowledgements #2512

-
Manage (Add, Edit & toggle) license admin acknowledgment #2516

-
Get all the standard comments #2517

-
Search and suggest license from the given reference text #2524

-
Verify a particular license as a new or a variant #2528

-
Merge a license into an existing one #2529

-
Manage (add, edit & toggle) the standard license comment #2518

-
Get the database contents for the dashboard overview #2530

-
Get the database metrics for the dashboard overview #2532

-
Get the active queries for the dashboard overview #2533

-
Get the disk space usage details for the dashboard overview #2534

-
Get the current PHP info details for the dashboard overview #2535

-
Get the server jobs for the Admin Dashboard #2536

-
Show the summary statistics for all jobs #2537

-
Get the scheduler options for the given operation #2538

-
Run the scheduler based on the given operation #2539

-
Get all the contents of the given folder #2555

-
Get all removable contents for the given folder #2551

-
Unlink the folder contents #2552

- Export the lisenses-list as a CSV #2562

- Export the obligation-list as a CSV #2574

- Import the obligations from the CSV #2563

Redesigned the FOSSology API Config to support version 2 of REST APIs. Currently, the codebase was designed to support only version 1 of REST APIS which would be hard to introduce and utilize the new features offered by Version 2. #2576
Throughout the 12 weeks of the GSoC period, I dedicated time to create weekly documentation to track and record updates. The weekly documentation of updates can be accessed here
| Tasks | Planned | Completed | Remarks |
|---|---|---|---|
| Completed all the APIs that were assigned to me on the task sheet | Yes | ✔️ | Some APIs need to be improved to meet the same standards and conventions for the V2 |
| I have improved the existing functionalities for the APIs to provide better service to the consumers. | Yes | ✔️ | |
| Improved the FOSSology API's configuration for easier integration with the REST API V2 | Yes | ✔️ | There's still a lot of work ahead to ensure that all the APIs follow the new standards and conventions for their requests and response models |
| Integrating the new APIs on the FOSSology UI side | NO (WAS OPTIONAL) | ❌ | This is an ongoing work, as we will add more APIs in the future |
| Implementing the OAuth 2.0 | NO (WAS OPTIONAL) | ❌ | We are looking how to use it with Slim |
In the pipeline are several exciting improvements to look forward to:
- Planning to update the existing REST APIs to align with the latest standards of Version 2. This update will ensure enhanced functionality, better usability, and improved compatibility with evolving requirements.
- There's still a work on integrating the newly developed APIs into the FOSSology user interface to finish the work of migrating FOSSology to Full-stack architecture.
- There's a huge work on enhancing the performance of the APIs in terms of response time and speed, by incorparating different techniques like Caching.
- There's a need in improving the compatibility between the current monolithic architecture and the new REST API architecture, such that the change on one end won't affect the performance of the other.
- Work Proficiency in Remote culture.
- Getting started and contributing to Large Codebases with Confidence.
- Embracing the culture of Collaboration and Teamwork.
- Hands-On experience in Open Source Contribution.
- Growth in writing clean code and coding Proficiency.




