{"id":30880103,"url":"https://github.com/salmandeveloperz/gsoc-2025","last_synced_at":"2026-02-13T12:22:21.317Z","repository":{"id":312252730,"uuid":"1046759422","full_name":"SalmanDeveloperz/GSoC-2025","owner":"SalmanDeveloperz","description":"The final Report Repo of my Google Summer of Code 2025","archived":false,"fork":false,"pushed_at":"2025-08-29T11:56:05.000Z","size":5265,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T14:18:43.935Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SalmanDeveloperz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-29T07:16:45.000Z","updated_at":"2025-08-29T11:56:08.000Z","dependencies_parsed_at":"2025-08-29T14:30:04.682Z","dependency_job_id":null,"html_url":"https://github.com/SalmanDeveloperz/GSoC-2025","commit_stats":null,"previous_names":["salmandeveloperz/gsoc-2025"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/SalmanDeveloperz/GSoC-2025","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalmanDeveloperz%2FGSoC-2025","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalmanDeveloperz%2FGSoC-2025/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalmanDeveloperz%2FGSoC-2025/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalmanDeveloperz%2FGSoC-2025/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SalmanDeveloperz","download_url":"https://codeload.github.com/SalmanDeveloperz/GSoC-2025/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalmanDeveloperz%2FGSoC-2025/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274146701,"owners_count":25230116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-08T06:46:21.260Z","updated_at":"2026-02-13T12:22:21.270Z","avatar_url":"https://github.com/SalmanDeveloperz.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eGoogle Summer of Code 2025 \u003cimg src=\"https://media2.giphy.com/media/KB8MHRUq55wjXVwWyl/source.gif\" width=\"50\"\u003e\u003c/h1\u003e \n\n![ViewCount](https://views.whatilearened.today/views/github/SalmanDeveloperz/GSoC-2025.svg)\n![GitHub](https://img.shields.io/github/followers/SalmanDeveloperz?style=social)\n![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue)\n![Twitter](https://img.shields.io/twitter/follow/chsalman199?style=social)\n![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/user-attachments/assets/94976eda-9d37-4bbe-862a-154984209d8a\"/\u003e\n\u003c/div\u003e\n\n\u003cdiv align = \"center\"\u003e\u003ch2\u003e\u003ci\u003eComplete Microservices Infrastructure\n @ \u003ca href = \"https://www.fossology.org/\"\u003eFOSSology \u003c/a\u003e \u003c/i\u003e\u003c/h2\u003e\u003c/div\u003e\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eTable of Contents \u003c/h1\u003e\n\n- [About FOSSology](#about-fossology)\n- [Project Overview](#project-overview)\n- [Project Goals](#project-goals)\n- [Work Accomplished](#work-accomplished)\n  - [Setup and Initial Configuration](#setup-and-initial-configuration)\n  - [Docker and Kubernetes Enhancements](#docker-and-kubernetes-enhancements)\n  - [Transition to CMake](#transition-to-cmake)\n  - [Scheduler Agent Development](#scheduler-agent-development)\n  - [Kustomization Setup](#kustomization-setup)\n  - [Database and Web Pod Fixes](#database-and-web-pod-fixes)\n- [Challenges and Blockers](#challenges-and-blockers)\n  - [Scheduler Instability](#scheduler-instability)\n  - [Database Migration Issues](#database-migration-issues)\n  - [Dependency and Configuration Conflicts](#dependency-and-configuration-conflicts)\n- [Unfulfilled Objectives](#unfulfilled-objectives)\n- [Future Work](#future-work)\n- [Commits and Contributions](#commits-and-contributions)\n- [Acknowledgements](#acknowledgements)\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eAbout FOSSology \u003c/h1\u003e\n\nFOSSology is an open-source compliance toolset that provides license and copyright\ndiscovery. It offers a framework for software analysis and includes tools that enable users to\ndiscover licenses and copyrights, parse package files, and categorize files and packages.\nFOSSology operates as a client-server application with a web-based front end, simplifying\ntasks such as uploading files or package archives and scheduling analysis jobs. The server\nefficiently scans through thousands of files, logging copyright statements, license statements,\nand other metadata.\nWith its combination of a command-line toolkit and a web-based compliance workflow,\nFOSSology helps organizations manage software license and copyright compliance. It offers\nflexibility and convenience, making it a powerful tool for software analysis and compliance\nmanagement.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eProject Overview \u003c/h1\u003e\n\nThe goal of my **Google Summer of Code 2025** project was to advance the **Microservices Infrastructure of FOSSology** by rebasing and enhancing Omar AbdelSamea’s prior  of **2021**, addressing issues in the Kubernetes-based deployment, transitioning the build system from Make to CMake and resolving critical blockers such as scheduler and database connectivity issues. The project aimed to deliver a functional, maintainable and scalable microservices setup for FOSSology, ensuring that all components (web, scheduler, database and agents) work seamlessly in a containerized environment.\n\nThroughout the 13-week period, I collaborated closely with mentors [Avinal Kumar](https://github.com/avinal), [Shaheem Azmal M MD](https://github.com/shaheemazmalmmd) and [Gaurav Mishra](https://github.com/gmishx), as well as the broader FOSSology community, to troubleshoot issues, refine configurations and document progress. While significant progress was made, certain challenges, particularly around the scheduler agent, remain unresolved and will require further effort beyond GSoC.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eProject Goals \u003c/h1\u003e\n\n- **Rebase and Update Microservices Architecture**: Integrate Omar AbdelSamea’s GSoC 2021 microservices work with the latest FOSSology master branch.\n- **Resolve Deployment Issues**: Fix Docker build errors, Kubernetes pod crashes and database connectivity problems.\n- **Transition to CMake**: Migrate the build system from Make to CMake for better maintainability and scalability.\n- **Stabilize Scheduler Agent**: Ensure the scheduler pod, a critical component for coordinating agents, runs reliably.\n- **Document Progress and Issues**: Provide comprehensive documentation for the final evaluation, outlining accomplishments, challenges, and unresolved issues.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eWork Accomplished \u003c/h1\u003e\n\n### Setup and Initial Configuration\n- Set up a local development environment on Ubuntu 24.04 using Docker (v27.5.1), Minikube and kubectl.\n- Cloned and rebased Omar AbdelSamea’s microservices branch [](https://github.com/OmarAbdelSamea/fossology) onto the latest FOSSology codebase.\n- Resolved initial Docker build errors by updating `debian/changelog`, `Dockerfile.pkg`, and `fo-build` to address dependency issues.\n- Fixed etcd pod issues by switching to version `v3.5.15` and reloading images into Minikube.\n- Addressed Kubernetes API issues (e.g., \"no route to host\") through Minikube restarts.\n\n### Docker and Kubernetes Enhancements\n- Successfully built and tested Docker images for key components: `packages`, `scheduler`, `web`, `ununpack`, `wget_agent`, `nomos`, `copyright`, and `ojo`.\n- Fixed the web UI issue where the default Apache2 Debian page was displayed instead of the FOSSology interface by correcting file paths in the web Dockerfile.\n![Default Apache2 Debian Page](weekly-updates/debianscreen.png)\n- Switched from Minikube to Kind for faster and more stable local development, then reverted to Minikube due to Kind’s limitations (e.g., unreliable port handling).\n![FOSSology UI](weekly-updates/fossologyUI1.png)\n![FOSSology UI Screenshot 2](weekly-updates/fossologyUI2.png)\n- Added Dockerfiles and Kubernetes configurations for missing agents (`cyclonedx`, `delagent`, `readmeoss`, `scanoss`) to ensure complete infrastructure coverage.\n- Updated Kubernetes manifests (e.g., `20-web-deployment.yaml`) with a `wait-for-db` section to ensure proper startup order for the web pod.\n\n### Transition to CMake\n- Migrated the build system from Make to CMake to improve maintainability and flexibility.\n- Created a dedicated build folder for scalable Kubernetes configuration management system using Kustomization.\nuccessfully built most components using CMake, except for the scheduler, which faced database-related issues.\n- Ensured compatibility of the CMake setup with Dockerfiles and Kubernetes configurations.\n\n### Scheduler Agent Development\n- Addressed the scheduler pod’s `CrashLoopBackOff` issue caused by a PostgreSQL error (`tables can have at most 1600 columns`) by resetting the database and updating configurations.\n\n![Scheduler Partial Running Image 1](weekly-updates/schedulerPartialRun.png)\n\n![Scheduler Partial Running Image 2](weekly-updates/schedulerPartialRun2.png)\n\n- Partially stabilized the scheduler pod through iterative debugging, log analysis and changes to `docker-entrypoint.k8s.sh` and `php-conf-fix.sh`.\n- Implemented a curl-based approach for the scheduler to track agent availability, as decided in collaboration with mentors.\n- Investigated path mismatches for `fo_scheduler` and explored evaluation metrics (e.g., job queue performance, agent execution times).\n\n![Scheduler Partial Running Image 2](weekly-updates/runningpods.png)\n\n\n### Kustomization Setup\n- Developed a Kustomization structure for managing Kubernetes YAMLs, including `base/` and `overlays/` (dev and prod) directories.\n- Ensured scalability and maintainability of Kubernetes configurations for future development.\n\n### Database and Web Pod Fixes\n- Fixed database connectivity issues by verifying PostgreSQL functionality locally (`psql -h localhost -p 5432 -U fossy`) and within containers.\n- Added missing database columns (`create_sysconfig.sql`, `create_uploadtree.sql`, `populate_sysconfig.sql`, `additional_tables.sql`, `create_additional_tables.sql`) to resolve web agent errors.\n\n![Scheduler Partial Running Image 2](weekly-updates/databaseColumnIssues.png)\n\n- Configured readiness probes (`pg_isready`) and increased init script delays to stabilize database startup.\n- Partially resolved web pod connectivity issues, though full integration with the scheduler remains incomplete.\n\n![Scheduler Partial Running Image 2](weekly-updates/webPod.png)\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eChallenges and Blockers \u003c/h1\u003e\n\n### Scheduler Instability\n- **Issue**: The scheduler pod, critical for coordinating agents like `ojo`, `nomos`, and `web`, remains partially functional despite extensive debugging. It suffers from intermittent crashes and connectivity issues.\n- **Impact**: Dependent agents cannot operate reliably, and the FOSSology UI occasionally fails to load due to scheduler-related errors.\n- **Attempts to Resolve**: Updated `docker-entrypoint.k8s.sh`, `php-conf-fix.sh`, and Kubernetes configurations; explored curl-based and shared volume approaches; reset database and PVCs; analyzed logs for errors.\n- **Status**: The scheduler is partially running but not fully stable. A potential rebuild from scratch is under consideration, pending mentor approval.\n\n### Database Migration Issues\n- **Issue**: The latest master branch introduced database migration issues, causing schema incompatibilities and errors during updates (e.g., missing columns, PostgreSQL startup failures).\n- **Impact**: Prevents seamless interaction between the web pod and database, resulting in UI errors like “Could not connect to FOSSology database.”\n- **Attempts to Resolve**: Added missing columns, reset database and PVCs, verified local PostgreSQL connectivity and adjusted Kubernetes service configurations.\n- **Status**: Partially resolved, but issues persist with the latest branch migrations.\n\n### Dependency and Configuration Conflicts\n- **Issue**: Compatibility issues arose when switching from `buster-slim` to `bookworm-slim` and during rebasing with the master branch, leading to build failures and missing dependencies (e.g., `libcurl4-openssl-dev` for scheduler).\n- **Impact**: Delayed progress and required rollbacks to maintain stability.\n- **Attempts to Resolve**: Updated `debian/changelog`, Dockerfiles and dependency lists; rolled back to `buster-slim` temporarily; synced `src/` folder with master branch changes.\n- **Status**: Most build issues resolved, but ongoing refinement of Dockerfiles is needed for long-term maintainability.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eUnfulfilled Objectives \u003c/h1\u003e\n\n- **Fully Functional Scheduler**: The scheduler pod is not fully stable, preventing dependent agents from operating reliably. A complete fix or rebuild is required.\n- **Complete Database Integration**: Persistent database connectivity issues with the web pod and schema migrations from the latest master branch remain unresolved.\n- **Simplified Dockerfiles**: While progress was made, the Dockerfiles still require simplification to reduce complexity and improve maintainability.\n- **Full Agent Integration**: Agents like `cyclonedx`, `delagent`, `readmeoss`, and `scanoss` have Dockerfiles and Kubernetes configurations but lack full integration due to scheduler issues.\n- **Evaluation Metrics**: Lack of clarity on metrics (e.g., job queue performance, resource usage) for evaluating the scheduler in a containerized setup.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eFuture Work \u003c/h1\u003e\n\nAlthough the GSoC 2025 period has concluded, I am committed to continuing my contributions to FOSSology. The following tasks are planned:\n- **Stabilize the Scheduler**: Finalize the scheduler pod by resolving remaining issues or rebuilding it from scratch, based on mentor guidance.\n- **Resolve Database Issues**: Address schema migration problems and ensure seamless connectivity between the web pod and database.\n- **Optimize Dockerfiles**: Simplify and streamline Dockerfiles for all components to improve build efficiency and maintainability.\n- **Collaborate with Community**: Work with mentors and contributors, including reaching out to Omar AbdelSamea, to align on solutions and incorporate past insights.\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eCommits and Contributions \u003c/h1\u003e\n\nKey commits made during GSoC 2025:\n- **Initial Setup and Fixes**: [Commit 1af934a](https://github.com/SalmanDeveloperz/fossology/commit/1af934a48c449a2aacdb3bdec285a79534488db4)\n  - Polished Dockerfiles and Kubernetes manifests.\n  - Fixed web and scheduler pod configurations.\n  - Added init containers for PostgreSQL readiness.\n- **Scheduler and Database Fixes**: [Commit 440f907](https://github.com/SalmanDeveloperz/fossology/commit/440f9077c7fdaafec82b3647e8759a683cb38a16)\n  - Resolved `CrashLoopBackOff` for scheduler pod.\n  - Added missing database columns and updated configurations.\n\n- **Update deps aligned with master**: [Commit 4fd4787](https://github.com/SalmanDeveloperz/fossology/commit/4fd4787936081c0c8db7df8e40d57e76e123a51a)\n  - Migrate from Make to CMake\n  - Update dependencies\n  - Added missing agent dockerfiles/deployment\n  - Aligned with master\n  - Partially Running Scheduler Agent\n\n\n- **Ongoing Work**: Contributions to `src/` folder, Dockerfiles for missing agents and Kustomization setup are available in the [OmarAbdelSamea/GSoC/Microservices](https://github.com/SalmanDeveloperz/fossology/tree/OmarAbdelSamea/GSoC/Microservices) branch.\n\nAll changes are pushed to my forked repository: [SalmanDeveloperz/fossology](https://github.com/SalmanDeveloperz/fossology).\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eDocumentation \u003c/h1\u003e\n\nThroughout the 13 weeks of the GSoC period, I consistently created weekly documentation to track and record my progress. Week-wise documentation can be found in the following links:\n\n- [Community Bonding](https://github.com/fossology/gsoc/pull/300)\n- [Week 1](https://github.com/fossology/gsoc/pull/314)\n- [Week 2](https://github.com/fossology/gsoc/pull/319)\n- [Week 3](https://github.com/fossology/gsoc/pull/327)\n- [Week 4](https://github.com/fossology/gsoc/pull/330)\n- [Week 5](https://github.com/fossology/gsoc/pull/340)\n- [Week 6](https://github.com/fossology/gsoc/pull/346)\n- [Week 7](https://github.com/fossology/gsoc/pull/349)\n- [Week 8](https://github.com/fossology/gsoc/pull/355)\n- [Week 9](https://github.com/fossology/gsoc/pull/364)\n- [Week 10](https://github.com/fossology/gsoc/pull/365)\n- [Week 11](https://github.com/fossology/gsoc/pull/371)\n- [Week 12](https://github.com/fossology/gsoc/pull/372)\n- [Week 13](https://github.com/fossology/gsoc/pull/373)\n\n\u003ch1 align = \"center\" id = \"connections\"\u003eAcknowledgements \u003c/h1\u003e\n\nI am deeply grateful to my mentors, [Avinal Kumar](https://github.com/avinal), [Shaheem Azmal M MD](https://github.com/shaheemazmalmmd) and [Gaurav Mishra](https://github.com/gmishx), for their guidance, patience, and technical insights throughout the GSoC period. Their feedback during weekly calls and community meetings was invaluable in navigating complex challenges. I also thank the FOSSology community for their support and suggestions, and Google Summer of Code for providing this incredible opportunity.\n\n![alt text](weekly-updates/fossologyxGSoC.gif)\n\nThis GSoC journey has been a tremendous learning experience, enhancing my skills in Docker, Kubernetes, CMake and open-source collaboration. While the project is not fully complete, I am excited to continue contributing to FOSSology and driving the Microservices Infrastructure to a stable.\n\n\n---\n\u003ch1 align = \"center\" id = \"connections\"\u003eLet's connect! \u003c/h1\u003e\n\n-   [Mail](chsalmanramzan422@gmail.com)\n-   [LinkedIn](https://www.linkedin.com/in/msalman199/)\n-   [GitHub](https://github.com/SalmanDeveloperz)\n---\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/SalmanDeveloperz\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Made%20With%20❤️%20By-Muhammad%20Salman-blue\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/SalmanDeveloperz\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Hello%20From-Pakistan%20🇵🇰-green\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalmandeveloperz%2Fgsoc-2025","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalmandeveloperz%2Fgsoc-2025","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalmandeveloperz%2Fgsoc-2025/lists"}