Skip to content

GSoC'23 Project List

Aboobacker MK edited this page Apr 17, 2023 · 19 revisions

Welcome to the projects page. We encourage candidates to come up with their own project idea.

Join our Slack Channel and stay tuned for updates.

Use our Template for the proposal. We recommend the use of google docs for the proposal.


Project 1 - Vue Simulator Integration and Typescript Initialisation

Technologies: vue, typescript, javascript

Duration: 175 Hours

Difficulty: Medium

Brief Idea

This project is a collection of features that need to be implemented in cv-frontend-vue repo to make the simulator production ready. Typescript is well-known for large-scale stability, initialising the typescript can make the simulator more stable for complex circuits.

Features to follow:

  • Vue Project Integration into the Main Repository or finding a way for the simulators to work in sync in two repositories.
  • API Integration and Testing
  • Embed Feature - Discuss and implement the embedding of circuits feature.
  • TypeScript integration in the vue-js project, the setup was already done.
  • With the removal of jQuery-UI, there is also a scope of removing the use of jQuery from the project.
  • Internationalization of Simulator - Internationalization is already set up using Vue-i18n but progressive work needs to be done on it.
  • Panels drag functionality.
  • Refactoring of Styles - Refactor the global stylesheet to local stylesheets for individual components. There is also a scope for removing - - SASS using modern CSS features.
  • Few components - Verilog Module, Quick-Button, Testbench, and Timing-Diagram are yet to be converted to Vue. (Extra.vue)

Possible Mentors:

Devjit Choudhury, Vedant Jain, Nitin


Project 2 - Simulator Real Time Collaboration

Technologies: javascript, canvas

Duration: 175 Hours

Difficulty: Hard

Brief Idea

Simulator Real Time Collaboration allows multiple users to interact with a simulation environment in real-time. The project aims to provide a seamless experience for users to collaborate on simulation tasks, share resources, and communicate with each other in real-time.The real-time collaboration feature makes it possible for users to work on complex simulations together, resulting in increased efficiency and productivity.

Follow-up features:

  • Create Sessions that people can join. This can just be the collaboration feature that already exists.
  • Display avatar and name of the users currently editing the circuit
  • Collaboration permissions.
  • Use Operational Transformation or Conflict-Free Replicated DataTypes (there might be existing good CRDTs for graphs that we can use)

Possible Mentors:

Ruturaj Mohite, Pulkit Gupta, Abhishek Zade


Project 3 - Simulator Stability Improvements

Technologies: javascript, canvas

Duration: 175 Hours

Difficulty: Hard

Brief Idea

The Simulator Stability Improvements project is focused on enhancing the stability and reliability of simulation environments. The project aims to address common issues such as crashes, slow performance, and unexpected behavior that can disrupt the simulation experience for complex circuits.

Follow-up fixes & features:

  • Find and fix Data integrity issues that cause data corruption for many users
  • Implement a debug interface on the simulator that gives us more information about the simulator state from the dev console, allow to load circuits and dynamically load and unload parts of the circuit.
    • In debug mode, there must be a way for the circuit to recover from errors if the erroneous component is removed
    • There should be a way to identify the currently selected component (on the canvas) and modify that component's object (in the globalscope)
    • In case of the 'Simulation Stack Exceeded' error, there should be a way to find the components that are being added to the simulation stack unnaturally large number of times.
    • It should also expose helpful functions such as the load() function to load circuits from circuit data.
  • Find out the areas where we need to write code in a more defensive manner instead of expecting data always in the proper format
  • Implement a safe recovery from simulator crashes
    • The safe recovery flow should ideally let user restore a previous non-errorenous state of the circuit.
  • Make a better system for high impedance (X) values -> Use it in elements like Tristate which use high impedance
    • node.js/L363 for example, has an if condition, that does not queue the nodes after a tristate if the tristate is in X state. We would want it to propagate an X state instead.

Possible Mentors:

Ruturaj Mohite, Pulkit Gupta, Pranay Simejiya


Project 4 - Improve the development experience

Technologies: Rails, Docker

Duration: 175 Hours

Difficulty: Medium

Brief Idea

The Improve Development Environment project is aimed at enhancing the tools and processes used by contributors for the development. The project is focused on streamlining the development experience, reducing barriers to entry, and making it easier for developers to setup, contribute and test.

Follow up fixes & features:

  • Integrate Language server protocol with solargraph
  • Make unit test coverage 90%
  • Cover all important workflows in integration tests
  • Introduce static typing rbs
  • Integrate undercover
  • Improve remote development environment (gitpod, github codespaces, coder etc)
  • Improve development experience with docker
  • Migrate assets to vite-rails
  • Integrate ruby debugger

Possible Mentors:

Smriti Garg, Vedant Jain


Project 5 - Improve deployment experience with 12 factor

Technologies: Rails, opentelemtery

Duration: 175 Hours

Difficulty: Easy

Brief Idea

The 12 Factor Application project is a methodology for building and deploying scalable, maintainable, and suitable software applications. The project is based on 12 key principles that outline best practices for developing and deploying software applications.

  • Make Circuitverse a 12 factor application
  • Progressively convert Circuitverse previews and profile avatars to object storage
  • Improve observability using open telemetry
  • Drop visitor tracking by storing user details and adopt HyperLogLog for project view counts
  • Zero downtime deployment pipeline with Github actions and mrsk
  • Monitoring server with monit

Possible Mentors:

Aboobacker MK


Your Idea!

Have an innovative feature or improvement in mind and want to implement it? We welcome your ideas for CircuitVerse. Your proposal will need to have the following details

  1. A brief description of the idea.
  2. Wireframes, images, screenshots etc which can illustrate your idea better.
  3. Who will this project primarily benefit?
  4. Implementation details - methodology, algorithm etc

It is recommended that you discuss your idea with one of the mentors before sending in your proposal.

Clone this wiki locally