Getting Shortlisted
To get shortlisted for the FOSSEE Fellowship/Internship, you need to complete at least one of the screening tasks given below. The selection will be purely based on the evaluation criteria. Also note, you are allowed to use only open source libraries/technologies and attribute them appropriately in your project based on the license. In case a particular technology is already adopted in the platform, you will need to use the same and extend/modify the existing one.
Technical Skills
Java
Javascript
GWT (Google Web Toolkit)
Postgres
Electron
Docker
React
Evaluation criteria
Usage of skills in locating the bugs
Clear design and documentation
API-based approach
Clear separation of backend and frontend
Coding style
Inclusion of Unit test cases
Reusable code
Introduction
There are two repositories available for circuitjs. The original one, which was written by Paul Falstad as a Java Applet, has been made to work in the browser using GWT as a web app.
Sharpie's repository for circuitjs using GWT is available here: https://github.com/sharpie7/circuitjs1
Paul Falstad later forked from the above Sharpie's repository and made more than 500 commits. The forked one is available here: https://github.com/pfalstad/circuitjs1 stating 531 commits ahead from Sharpie's master.
Paul's repository also contains Development using cloud containers, which is in addition to what Sharipe had done.
We have forked both the above repositories in our GitHub account, available at:
Looking at the above timeline, we will have to focus on the following tasks. The tasks are divided based on the above two repositories
Important note: If you are not conversant with basic system administration (Linux commands, git commands, etc), please do not apply for the Internship/Fellowship at all. This is not a one-to-one session for learning all these. You have to go on your own!
Getting Started
Fork the required repository as stated below so that you have your own repository in which you can work on.
If you are choosing S1 or S2 screening task, then fork: https://github.com/frg-fossee/circuitjs-sharpie7
If you are choosing P1 or P2 or P3 screening task, then fork: https://github.com/frg-fossee/circuitjs-pfalstad
Once you are done with the screening task do the following:
Create a file, 'SUMMARY.md' in your forked repository and write detailed steps done by you while doing the screening task (i.e. each and every command). Make a note of the SUMMARY.md URL.
Record a demo by creating either a video, screencast or animated gif of your work and include it in the SUMMARY.md file
Finally, click the Submit button to submit the task and fill in the Google Form.
Screening Tasks
To get selected for the internship, you need to complete any one of the screening tasks (S1, S2, P1, P2, or P3)
For Sharpie's repository, you are required to complete any one of the following tasks:
S1: Install/deploy the system as a web application. Explore various possibilities as mentioned in the repository.
S2: Build an Electron application by following the steps as mentioned in the repository.
For Paul's repository, you are required to complete any one of the following tasks:
P1: Install/deploy the system as a web application. Explore various possibilities as mentioned in the repository.
P2: Build an Electron application by following the steps as mentioned in the repository.
P3: Deploy the application by writing docker containers on to the VM.
Main Project Tasks
Task 1: Login on the web and electron: Single sign-on between the web app and the electron app.
Cloud app: like any other website, one should be able to signup and login on the web app. On signup a verification email should be sent to the user, and on clicking on the activation link, the account should be created. A user should then be able to log in/log out on the portal.
Electron app: If the machine is connected to the internet, using the electron app, one should be able to signup. The signup should be synchronized with the web app i.e., the account should be created on the web app. For a successful signup, the user should click on the activation link sent in the verification email. A user should then be able to log in. Signup is a one-time process, but the login on the Electron app is also a one-time process. If the machine is not connected to the internet, all the activities by the user on the electron app (circuits drawn/edited/deleted/etc.) should be saved locally on the electron app in that user's logged-in account. As and when it gets connected to the internet, these should automatically get synchronized with the web app.