diff --git a/docs/internships/gsoc/ideas-20250101.md b/docs/internships/gsoc/ideas-20250101.md index 4620470..2291bbf 100644 --- a/docs/internships/gsoc/ideas-20250101.md +++ b/docs/internships/gsoc/ideas-20250101.md @@ -71,7 +71,7 @@ Here is a list of basic skills that will be required for each repository. 1. **Talawa:** Flutter / Dart, GraphQL 1. **Talawa-API:** Typescript, GraphQL, MongoDB 1. **Talawa-Admin Portal:** TypeScript -1. **Switchmap-NG:** Python +1. **SwitchMap-NG:** Python 1. **Pattoo**: Python There are others, but these are the primary ones that will guide your contributions. @@ -138,30 +138,94 @@ We will not support administrative functions in any of our mobile apps. 9. **Difficulty:** Medium 10. **Impact Definition:** Core development -## Switchmap Areas +## SwitchMap-NG Areas -1. **Description:** Talawa's mobile application currently lacks robust offline capabilities, unlike many other social media apps. This compromises the app's stability and reliability. Additionally, the absence of a proper app state caching mechanism leads to performance issues and unnecessary network usage overhead. +SwitchMap-NG is a suite of applications that map the topology of information technology networks. + +Our v1.0 SwitchMap-NG code is used by a few organizations. There were requests to: + +1. include historical data which led to the current version that has a database backend. +1. have pollers in diverse locations with a centralized web UI + +This created additional complexity in the configuration and management of the application. It also creates opportunities for improved functionality. + +### Enhanced SwitchMap-NG Web Features + +1. **Description:** The current web UI/UX needs to be improved to increase the usage of SwitchMap-NG by the wider community. 2. **Expected Outcomes:** 1. Web UI/UX 1. The code uses deprecated python packages that prevent upgrading the rest to current versions. The flask-table package is the most notable one 1. The UI looks dated because it uses the flask-table package for HTML tables. A more modern alternative is needed. This may or may not be written in Python. + 1. The latest version offers many new features. We are eager to add new web based capabilities based on these additions that will increase the usage of SwitchMap-NG by the wider community. + 1. Repository Strategy + 1. We want to migrate from a monorepo to a polyrepo strategy. We feel this will: + 1. Allow optimization of each subsystem's code using the appropriate best practices. + 1. Reduce the learning curve to contribute. + 1. Your plan must include an approach to convert the existing repository to support only the web front end. 1. Installation - 1. The current version requires the installation of multiple system daemons. A method that uses more modern containerization for simplicity is needed. - 1. Interaction between the equivalent replacements for the daemons must only communicate via GraphQL API calls. The RESTful posting of data to the DB API server’s file system should remain to reduce the potential overload unless a suitable alternative can be found + 1. The current version requires the installation of system daemons. A method that uses more modern containerization for simplicity is needed. + 1. Interaction between the equivalent replacements for the daemons must only communicate via existing GraphQL API calls for data. + 1. We need an easy to use installation and configuration script for the web UI. + 1. The structure of the configuration files must be maintained + 1. Documentation + 1. We want to create a GitHub pages based website to: + 1. Provide an up to date user guide for the web application. + 1. Create autogenerated markdown documentation for developers from the code base based on code comments. + 1. This is already done in our Talawa\* repositories. + 1. GitHub actions must be created to ensure that the auto-generated documentation is formatted according to our standards. + 1. The site must be created using Docusaurus and the Docusaurus code must reside in the repository. + 1. The site must be autoupdated whenever the markdown mentioned in this section is changed. + 1. Testing + 1. We want to achieve 100% test code coverage for the repository using GitHub actions + 1. We also want GitHub actions to fail if codecov.io code coverage criteria are not met and coderabbit.io does not approve the PR. +3. **Repos to Update:** SwitchMap-NG +4. **Skills Required:** Proficiency in the code stacks related to the repository. Refer to the introduction section for more details. +5. **Depends on Project:** N/A +6. **Project Size:** 350 hours (Large) +7. **Possible Mentors:** + 1. TBD +8. **Difficulty:** Medium +9. **Impact Definition:** Risky/Exploratory + +### Enhanced SwitchMap-NG Scalability + +1. **Description:** SwitchMap-NG has multi-site capabilities, but we need more functionality for it to scale from a few to thousands of pollers. +2. **Expected Outcomes:** 1. Operation 1. The app isn’t suitable for a distributed deployment with groups of pollers that may not have access to the central API server. There needs to be an intuitive way for: 1. pollers to send data to an aggregator in their region 1. each regional aggregator to send data to the central API server 1. configuring this. - 1. Monolithic Repo - 1. There needs to be a way to make the mono repo intuitive to use, if necessary. It currently has separate folders for daemons responsible for polling, the API, data ingest to the API, the web GUI and shared libraries. 1. Asynchronous Polling 1. Replace threaded polling with an asynchronous polling mechanism using Python’s asyncio or aiohttp for better scalability. This would allow polling of larger networks without blocking and improve the overall speed and resource usage. This would facilitate faster data collection, more efficient resource utilization, and the ability to scale to large networks. 1. Historical Data Storage 1. Use the current state database to store and analyze historical network data, such as port utilization, device status, and ARP data over time. This would allow users to analyze trends and detect issues that may have developed gradually. 1. Additional Data Collection 1. Extend SNMP support by parsing additional MIBs for more detailed device information, such as CPU usage, memory stats, or interface statistics. This would make the inventory system more comprehensive. -3. **Repos to Update:** Switchmap-NG + 1. Repository Strategy + 1. We want to migrate from a monorepo to a polyrepo strategy. We feel this will: + 1. Allow optimization of each subsystem's code using the appropriate best practices. + 1. Reduce the learning curve to contribute. + 1. Your plan must include approaches to: + 1. Create a separate poller repo + 1. Create a separate API repo while maintaining the existing endpoint functionality. + 1. Installation + 1. The current version requires the installation of system daemons. A method that uses more modern containerization for simplicity is needed. + 1. Interaction between the equivalent replacements for the daemons must only communicate via existing API calls. The RESTful posting of data to the DB API server’s file system should remain to reduce the potential overload unless a suitable alternative can be found. + 1. We need an easy to use installation and configuration script for the web UI. + 1. The structure of the configuration files must be maintained + 1. Documentation + 1. We want to create GitHub pages based websites to: + 1. Provide an up to date user guide for the API and poller applications. + 1. Create autogenerated markdown documentation for developers from the code base based on code comments. + 1. This is already done in our Talawa\* repositories. + 1. GitHub actions must be created to ensure that the auto-generated documentation is formatted according to our standards. + 1. The sites must be created using Docusaurus and the Docusaurus code must reside in the respective repositories. + 1. The sites must be autoupdated whenever the markdown mentioned in this section is changed. + 1. Testing + 1. We want to achieve 100% test code coverage for the repository using GitHub actions + 1. We also want GitHub actions to fail if codecov.io code coverage criteria are not met and coderabbit.io does not approve the PR. +3. **Repos to Update:** SwitchMap-NG 4. **Skills Required:** Proficiency in the code stacks related to the repository. Refer to the introduction section for more details. 5. **Depends on Project:** N/A 6. **Project Size:** 350 hours (Large) @@ -172,6 +236,26 @@ We will not support administrative functions in any of our mobile apps. ## Pattoo Areas +Pattoo is a suite of ETL applications that store time series data with various visualization features. + +### Enhanced Pattoo Web Features + +1. **Description:** We want to make Pattoo more user-friendly and versatile for non-technical users and organizations that need actionable insights quickly. +2. **Expected Outcomes:** + 1. UI/UX + 1. Improve the frontend by adding a powerful, customizable dashboard where users can visualize their data in real-time. Implement features like drag-and-drop widgets, custom graph types, and time-window selection for better insights. Your solution may or may not be written in Python. + 1. Testing + 1. We want to achieve 100% test code coverage for the repository using GitHub actions + 1. We also want GitHub actions to fail if codecov.io code coverage criteria are not met and coderabbit.io does not approve the PR. +3. **Repos to Update:** Pattoo +4. **Skills Required:** Proficiency in the code stacks related to the repository. Refer to the introduction section for more details. +5. **Depends on Project:** N/A +6. **Project Size:** 350 hours (Large) +7. **Possible Mentors:** + 1. TBD +8. **Difficulty:** Medium +9. **Impact Definition:** Risky/Exploratory + ## Hybrid Areas Hybrid ideas add to the existing repos in ways we would not have foreseen. They must: