Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC]: stdlib API dependency explorer #79

Closed
6 tasks done
Akshat-Kob opened this issue Apr 1, 2024 · 0 comments
Closed
6 tasks done

[RFC]: stdlib API dependency explorer #79

Akshat-Kob opened this issue Apr 1, 2024 · 0 comments
Labels
2024 2024 GSoC proposal. rfc Project proposal.

Comments

@Akshat-Kob
Copy link

Full name

Akshat Shah

University status

Yes

University name

Indian Institute of Technology B.H.U. (Varanasi)

University program

Integrated Dual Degree

Expected graduation

30 June,2025

Short biography

My name is Akshat Shah, and I'm a pre-final year student at IIT BHU, majoring in Mathematics and Computing. With a strong foundation in C++, data structures, and algorithms, I've honed my skills through various projects. I'm proficient in web development technologies like HTML, CSS, JavaScript, and React, having completed projects in frontend and backend development. My diverse skill set, coupled with a keen interest in software engineering, makes me well-suited for implementing the proposed dependency explorer project.

Timezone

Indian Standard Time (UTC+5:30)

Contact details

akshat.shah.mat20@itbhu.ac.in, akshat.2k02@gmail.com, https://github.com/Akshat-Kob, https://www.linkedin.com/in/akshat-shah-420913206/

Platform

Windows

Editor

I prefer VS Code for its user-friendly interface, extensive plugin ecosystem, and seamless integration with Git and debugging tools, which enhance my productivity and streamline my development workflow.

Programming experience

In my programming journey, I've utilized HTML, CSS, JavaScript, and the MERN stack to create a variety of projects, ranging from a personal portfolio and weather app to a dynamic newspaper app and interactive games. Leveraging React, I've crafted intuitive user interfaces, while employing MongoDB for data storage in backend development. These projects showcase my ability to apply modern web technologies to solve real-world problems and my proficiency in creating engaging and functional applications across different domains. A few of them have been put up on github.

JavaScript experience

My experience with JavaScript spans across various projects, including portfolio websites, weather apps, and games. One of my favorite features of JavaScript is its flexibility in handling asynchronous operations through promises and async/await syntax, which simplifies complex asynchronous code structures. However, my least favorite feature is the loose typing system, which can sometimes lead to unexpected behavior and debugging challenges.

Node.js experience

I have intermediate experience with Node.js, having utilized it in backend development for projects like the newspaper app and note-taking app. I've leveraged Node.js for server-side logic, routing, and database interactions using frameworks like Express.js. Additionally, I've implemented authentication, data validation in Node.js applications.

C/Fortran experience

No Experience

Interest in stdlib

What interests me about stdlib is its comprehensive collection of standardized JavaScript libraries, offering a wealth of functionalities for various domains. One of my favorite features is its mathematical functions, providing robust tools for numerical computation and statistical analysis. As someone with a background in mathematics and computing, I find these functions particularly valuable for implementing algorithms and solving mathematical problems efficiently. Additionally, the ease of integration and consistency across the stdlib ecosystem make it a reliable resource for developing JavaScript applications.

Version control

Yes

Contributions to stdlib

No contributions till now

Goals

To achieve this, we'll develop a web application using JavaScript, Node.js, HTML/CSS, and JSX. The application will feature React components for the dependency explorer, fetching and rendering package dependency data dynamically. We'll integrate interactive functionalities for users to navigate through the graph and explore package documentation seamlessly. To ensure accessibility, we'll adhere to web accessibility principles and implement SSR for SEO purposes. Additionally, we'll carefully manage application dependencies to minimize bundle size impact and optimize performance. Through iterative development, testing, and documentation, we'll deliver a robust and user-friendly tool for enhancing stdlib API documentation.

Why this project?

This project excites me because it addresses a fundamental challenge in software development: navigating complex codebases efficiently. By visualizing package dependencies in the stdlib documentation, we can gain deeper insights into API relationships, improving their understanding and productivity. I'm enthusiastic about leveraging modern web technologies like Javascript, Node.js, ReactJS to create an intuitive and interactive tool that empowers developers to explore the stdlib codebase with ease, fostering collaboration and innovation in the open-source community.

Qualifications

As someone proficient in HTML and CSS with experience in JavaScript and Node.js through various projects, I possess a strong foundation in web development. While I'm currently unfamiliar with JSX, I'm eager to learn and apply it to this project. My hands-on experience with web technologies, coupled with a proactive attitude towards learning, equips me to effectively contribute to the implementation of the proposed visual dependency explorer for stdlib documentation.

Prior art

Other projects have addressed similar goals by visualizing package dependencies in software projects. Additionally, libraries such as D3.js and Vis.js provide visualization capabilities. Numerous blog posts and research papers explore techniques for visualizing software dependencies, offering valuable insights and methodologies for implementing similar projects.

Commitment

I'm fully committed to investing approximately 15-20 hours per week into the project throughout the Google Summer of Code program. I don't anticipate any significant commitments, vacations, or exams that would interfere with my availability during this period. I'm dedicated to delivering high-quality work and actively participating in the project's development, both during and beyond the GSoC program.

Schedule

Community Bonding Period:

  • Familiarize myself with the stdlib codebase and documentation structure.
  • Set up the development environment and discuss project details with mentors.
  • Explore existing visualization libraries and research best practices for dependency visualization.

Week 1:

  • Define the data structure for representing package dependencies.
  • Set up basic React components for rendering the dependency explorer UI.

Week 2:

  • Implement data fetching functionality to retrieve package dependency information.
  • Integrate data into the dependency explorer components and render a basic graph.

Week 3:

  • Enhance the visualization with interactive features such as zooming and panning.
  • Implement tooltips or labels for displaying package names on hover.

Week 4:

  • Improve the user interface by refining the layout and styling of the dependency explorer.
  • Test the visualization with sample data and gather feedback for improvements.

Week 5:

  • Implement functionality for clicking on nodes to navigate to package documentation.
  • Ensure seamless integration with the existing API documentation website.

Week 6 (Midterm):

  • Conduct a midterm evaluation with mentors to review progress and make any necessary adjustments.
  • Address any feedback and refine features based on user testing.

Week 7:

  • Implement SSR (Server-Side Rendering) to support SEO requirements.
  • Optimize performance and bundle size by applying code-splitting and other optimization techniques.

Week 8:

  • Enhance accessibility by implementing keyboard navigation and ARIA attributes.
  • Conduct accessibility testing to ensure compliance with web accessibility standards.

Week 9:

  • Conduct comprehensive testing across different browsers and devices.
  • Address any bugs or issues identified during testing and ensure cross-browser compatibility.

Week 10:

  • Document the implementation details, including setup instructions and usage guidelines.
  • Prepare for final project submission by organizing code and documentation.

Week 11:

  • Conduct final testing and ensure all features meet project requirements.
  • Prepare the final project report and blog post summarizing the development process and outcomes.

Week 12 (Final Week):

  • Submit the final project deliverables, including code, documentation, and project report.
  • Participate in any final discussions or presentations related to the project.
  • Celebrate the completion of the project and reflect on the overall experience.

Related issues

No response

Checklist

  • I have read and understood the Code of Conduct.
  • I have read and understood the application materials found in this repository.
  • I understand that plagiarism will not be tolerated, and I have authored this application in my own words.
  • I have read and understood the patch requirement which is necessary for my application to be considered for acceptance.
  • The issue name begins with [RFC]: and succinctly describes your proposal.
  • I understand that, in order to apply to be a GSoC contributor, I must submit my final application to https://summerofcode.withgoogle.com/ before the submission deadline.
@Akshat-Kob Akshat-Kob added 2024 2024 GSoC proposal. rfc Project proposal. labels Apr 1, 2024
@kgryte kgryte closed this as completed Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2024 2024 GSoC proposal. rfc Project proposal.
Projects
None yet
Development

No branches or pull requests

2 participants