Skip to content

dushimsam/GSoC-23

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 

Repository files navigation

Google Summer of Code 2023

A full report on my Google Summer of Code 2023 work with FOSSology

Project: "REST API Improvements" 👨‍💻

image

Google Summer of Code 2023 🚩 Report: "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.

🌏 CONTRIBUTIONS Overview

During my participation in the Google Summer of Code (GSoC) program, I focused on implementing and enhancing eight key features within the project:

  1. License File View Management:

    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.
  2. License Browser:

    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.
  3. Folder and Content Management:

    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.
  4. Admin Dashboard Management:

    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.
  5. License Admin Management:

    I developed REST APIs that helped the system Admin to handle different operations on acknowledgments and standard comments related to licenses.
  6. CSV Operations:

    Another aspect of my work involved designing REST APIs for importing and exporting licenses and obligations using CSV files.
  7. Manual Scheduling of Operations:

    I created REST APIs that allowed administrators to schedule and execute various operations manually.
  8. FOSSology API V2 configuration:

    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.

License File View Management ✨

  1. Setting the clearing decision for a particular file #2460 image

  2. Setting the main license for the Upload #2462 image

  3. Removing the main license from the Upload #2463 image

  4. License Decision Management (Add, edit & delete License Decision) #2509

    Request

    image

    Response

    image

  5. Get all main licenses for the the Upload #2465 image

  6. List all the license decisions for the item #2470 image

  7. Get the clearing history for a specific item #2477 image

  8. Schedule the bulk scan #2483 image

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

  10. Get the bulk history list of the upload & item #2481 image

  11. Get the positions to be highlighted in the contents of the file #2484 image

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

License Browser ✨

  1. Get the clearing progress status of the upload #2494 image

  2. Get the scanned licenses for the upload #2495 image

  3. Get the licenses histogram for the upload #2497 image

  4. Get the edited licenses for the upload #2498 image

  5. Get the licenses's count summary for the upload #2499 image

  6. Get the licenses' reuse summary list for the upload #2501 image

  7. Get all the agents for the upload #2502

  8. Get all the agents' revisions for the upload #2506

License Admin Management ✨

  1. Get all the licenses admin acknowledgements #2512 image

  2. Manage (Add, Edit & toggle) license admin acknowledgment #2516 image image

  3. Get all the standard comments #2517 image

  4. Search and suggest license from the given reference text #2524 image image

  5. Verify a particular license as a new or a variant #2528 image image

  6. Merge a license into an existing one #2529 image

  7. Manage (add, edit & toggle) the standard license comment #2518 image image

Admin Dashboard Management ✨

  1. Get the database contents for the dashboard overview #2530 image

  2. Get the database metrics for the dashboard overview #2532 image

  3. Get the active queries for the dashboard overview #2533 image

  4. Get the disk space usage details for the dashboard overview #2534 image

  5. Get the current PHP info details for the dashboard overview #2535 image

  6. Get the server jobs for the Admin Dashboard #2536 image

  7. Show the summary statistics for all jobs #2537 image

Manual Scheduling of Operations ✨

  1. Get the scheduler options for the given operation #2538 image

  2. Run the scheduler based on the given operation #2539 image image

Folder and Content Management ✨

  1. Get all the contents of the given folder #2555 image

  2. Get all removable contents for the given folder #2551 image

  3. Unlink the folder contents #2552 image

CSV Operations ✨

  1. Export the lisenses-list as a CSV #2562 image
  2. Export the obligation-list as a CSV #2574 image
  3. Import the obligations from the CSV #2563 image

FOSSology API V2 configuration ✨

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

Documentation:📄

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

👨🏻‍🏫 DELIVERABLES

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

Future enhancements:🚀

In the pipeline are several exciting improvements to look forward to:

  • Updating REST APIs to Version 2 Standards:

    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.
  • Integration of New APIs with FOSSology UI:

    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.
  • Performance Boost for APIs:

    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.
  • Enhanced Compatibility between the Architectures:

    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.

Major Takeaways: 📚

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

Links of work done: 🎯

Pull Requests 🔗

Let's get connected!

About

A full report on my Google Summer of Code 2023 contributions with FOSSology

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors