This report consolidates the progress made during the first phase of Google Summer of Code 2024 coding period for the Simulator Version Control project with CircuitVerse.
My Project aims to implement a version control system for the CircuitVerse Vue simulator to maintain compatibility of circuits while allowing for independent simulator updates and version switching.
We had our first meeting with all the mentors and contributors, and it was a pleasure to meet everyone. The meeting was very productive, allowing us to learn more about CircuitVerse’s culture and its mission to provide free digital logic circuit simulators to over half a million people. These exchanges promoted understanding and laid the groundwork for effective teamwork through shared experiences and technological discussions.
Tasks Completed So Far:
The foundational task for the simulator versioning was to create separate directories for different versions of Vue simulator. I moved the src directory of the vue simulator to different versions (v0 and v1) and adjusted the required imports in the files.
Vue Simulator Architecture
Pull Requests
With the directories restructured for different simulator versions, the build configurations needed to be changed to serve the correct version when required.
version.json
file was created to store the description, date, and name of each version.The build script in the Vue simulator was modified to build different versions based on the version variable, iterating through the version.json file.
Separate files were created for the two versions and built using a bash script.
public/simulatorvue/v0
and public/simulatorvue/v1
in the Main CircuitVerse repository.Pull Request
To store the version of the circuit in the database, a new column named version
was added.
Pull Request
To swap versions of the simulator, I used a query parameter (simver) in the URL to serve the appropriate version. If simver=v0
, version v0 is served; if simver=v1
, version v1 is served.
src/main.ts
to version/main.ts
to modify the serving file accordingly.simver
variable.Pull Request
In this video, the version is specified on the navbar soleley for representation purposes. It is not included in the actual project or code.
Phase 1 of GSoC 2024 at CircuitVerse focused on implementing a simulator version control system, enhancing technical skills in Vue.js and scripting, and reinforcing best coding practices.