Public Lab Research note

GSoD : System diagram and Roadmap for Plots2

by bansal_sidharth2996 | April 22, 2019 16:07 22 Apr 16:07 | #19140 | #19140


Name: Sidharth Bansal

Affiliation (school/degree) 4th yr, B. Tech, Software Engineering Course at Delhi Technological University, India

Location (where you are): New Delhi, India (GMT +5:30)


LinkedIn Profile:

IRC nick: Sidharth

Project(s) you're working on or want to: plots2

Project description

Abstract/summary (<20 words)

Describe the need your project fulfils:

How will your project meet this need?


Community Bonding period ()

Phase 1 Work Period ()

Evaluation ()

Phase 2 Work Period ()

Evaluation ()

Phase 3 Work Period ()

Evaluation ()

Outreach plan: The second part of the project that is upgradation to the bootstrap 4 from bootstrap 3 is a big project. There I will like to invite new contributors to join the public labs and to contribute to my project and thus, ultimately to the public labs.

As I did earlier, I will be engaged in making fto issues related to other ongoing milestones too.

What is broader goal your project working towards?

Socialisation and code enhancement

What resources will you need: people, documentation, literature, sample data, hardware if applicable

The contributors, mentors and the team members of the open source community are the most relevant resources for completion of the project. Also, I will be learning more from their official documentation. I believe my Mentors guidance will perhaps be the greatest resource for me.

Getting more people involved in open projects is not an easy task. Lowering the barrier for non-technical people will lower the effort that needs to be taken to get enough volunteers. As a side-effect, more people get in contact with science and they will see that it does not need an academical background to be a scientist. This surely is a benefit in multiple ways.


Have you forked the relevant codebases? Installed them in a dev environment such as Need help doing so? Please provide a link to each of the above.

Yes, I have forked the GitHub repo and deployed it on my local machine.


Describe your technical background; what languages you use, what projects you've contributed to before, links to GitHub or other code repositories or samples. Have you read the Contributor Guidelines at and are you comfortable submitting pull requests?

Skills and expertise:

Languages C, C++, Java, Ruby, Javascript

Web Technologies Ruby on Rails and related skills


Version Control System Git

Yes, I have read the Contributors guidelines

More than 44 Merged pull requests for various suggestions, bug fixes, issues on plots2

Over 60 issues, bugs, suggestions reported by me

These are the links to the First Timer Issues created by me

and many more

There are also many existing issues and pull requests currently in progress by me.

Thus, I am comfortable with Pull request and Github. Yes, I have read the contribution guidelines


Describe teams you've worked with before, whether the open or closed source and in what capacity you participated. Cite examples of how you were self-motivated and self-sufficient.

I started learning RoR a year before apart from my university curriculum, so I had to learn and understand those concepts myself. I think I can achieve every goal by hard work and giving time.

Yeah, I have worked in a group of two. Nicolas Santiago Blair and I have done two small projects Contact Manager and Event Manager together with Pair Programming in order to learn. As we lived in different countries so it was developed by both of us by collaborating at cloud9. We did each commit together while having a phone call on skype.

Links to the projects GitHub repositories:,


Regarding teamwork, I found it very motivating to get support from more experienced developers, like @ebarry and @warren. I was only able to commit to open source with their help


Would you describe yourself as especially good at or interested in some aspect of coding or problem solving, or open source science? Provide examples and links. Are you particularly suited to this proposed project?

I am very good at competitive coding. I have done 500+ questions on various competitive programming websites like Codechef, Spoj, Hacker Rank, etc. One can see my stop stalk profile to see it at It lists clearly how much I have done on which site and of which category.

So, I am good at problem-solving.

Also, it has been around one and a half year learning Ruby on Rails. I have done many projects on Ruby on Rails like Pinteres_clone, Reddit_clone, Recipe box Event Manager, Podcast, Contact Manager etc. These projects are present on my GitHub account.

I have also done some projects in a group of two like Contact Manager and Event Manager by doing Pair Programming.

In open source, I have contributed to the Opensuse and Public Lab.

Yes, I think I am suitable for this project


Whom will your work serve? Lay users, other programmers, non-technical people or nerds? While exploring advanced techniques is great, we especially appreciate proposals which make technologies and techniques more legible and user-friendly to non-technical users.

My proposal's implementation will be beneficial to all users.

The proposal deals with the ease of the login for new and old users.

Also, it caters the needs of the Facebook-savvy people. People will be able to post onto the existing research notes through facebook. This will increase the number of people involved in the Public Lab community.

The second part deals with the better user experience which comes in with Bootstrap 4


What motivates you to do the proposed work? Do you also have coursework or degree related reasons for pursuing it? This wouldn't necessarily be a bad thing - if you are for example looking to explore work related to a thesis topic.

A man should always accept challenges which are difficult for him/her to come out of his/her present domain. Challenges make a man stretch over what you currently are. So, challenges motivate me.

I am a person who can't sit idle. I want to explore more and more things. So, my inquisitiveness to know more motivates me the most.

I am a second-year university student. I am inside the Computer Science Department. So, in my curriculum, I have DBMS, Web Development, Software Engineering and many other related subjects which are beneficial for the fulfilment of this project.

Also apart from my college, I am doing an online Rails Bootcamp -- The Odin Project available at So, I have related coursework and reasons for pursuing it.

Yeah, I want to write research papers in my 3rd year of the university.

Ongoing involvement

Explain how you intend to continue being an active member of your project and/or Public Laboratory AFTER the summer is over.

Even after the summer gets over I want to continue contributing to plots2 and become an active member of Publiclab community.

There are many issues related to the UI/UX at Public Labs. Also, new issues in future will evolve with time. I will give my best to make it resolve them and add new features to the codebase.


Do you understand this is a serious commitment, equivalent to a full-time paid summer internship or summer job?

Yes, I am fully aware that it is a full-time summer iinternship. As it is of three months duration and its a small period of duration so, I will only choose those online courses which are related to the completion of my project. Also, Google is paying me for it, hence, I am fully committed to working on it throughout the summer. I will give my 100% to it.


Work In progress.

Reply to this comment...

@warren I will like to define some of the basic terminologies I will be using in the proposal.

Actor: Actor is the person who interacts with the system. At Public Lab, we define actors with the help of roles and status. Here at Public Lab, the actor is classified into normal user, moderator and admin.

Flow: The sequence of events which occurs in the execution of a particular functionality is termed as a flow. Flows are of two types: Basic Flow: When everything works as expected then it is basic flow. For example, the user trying to login to the system logs into the system with consistent database state. Alternate Flow: When there is a deviation from the basic flow. Example: Username entered doesn’t exist in the database or password-username mismatch etc.

System Diagrams are used to define the system or software. So, they define the whole system with all its models, controllers, views and data flows.

Traditional diagrams involves ER diagrams, Data Flow Diagrams, Context Diagrams, Use Case Scenario etc. while the Object Oriented Diagrams involves the Unified Modelling Language based models like Class diagram, Object diagrams, Interaction diagrams, Activity Diagrams, State Chart diagrams, etc. I have explained all of these in detail as follows:

Class Diagrams: We classify the system to have model entities, view entities, controller entities, interface entities and the actors. We define all the entities present in the flows diagrammatically in a single diagram while considering the MVC pattern. As these diagrams list all the entities, they are generally of chart paper size or more. Benefit: Exact sequence of events is explored with the help of diagrams Drawback: Listing all the flows for the whole system in a single diagram results in a very huge unmaintainable diagram.

Object Diagrams: Object diagram is a more detailed class diagram with the object passing between the various functions, programs and routines. They are made in tabular fashion with formal arguments and calling functions and modules. It has a similar drawback as the class diagram of its size. Sequence Diagrams: When we jot down all the flows present in the class diagram with the entities with the timely sequence of calling of the events, then it is termed as the sequence diagram. A single MVC component of the class diagram will have many sequence diagrams. So, it is a much more detailed version of the class diagram. It is dynamic in nature as it is time dependent. As it represents all the flows, they are highly unmaintainable.

State Chart Diagrams: involves the change of state of various variables which execution of a module. Example not_logged_in to logged_in on calling the user_session_controller. These diagrams are also very large in number and hence unmaintainable.

Activity Diagrams: They represent flow in the flow chart format. They are also unmaintainable and large in number when created for the whole system.

Data Flow Diagrams: Data Flow Diagrams in short DFDs, represents the flow of the data between various data models. They are made at different levels of detail like 0 level DFD, 1 level DFD and so on. Simplest DFD is 0 level DFD which are also called Context Diagrams.

Entity Relationship Diagrams: Schema of the database is represented in the form of entity and relationships. These diagrams are at database level and doesn’t have to do with the execution of MVC pattern.

Use Case Scenarios: This lists the actors with all the subsystems in diagrammatic format. They are easy to maintain.

As far as my knowledge, it will be best to draw the Data Flow Diagram at the 0 Level( aka Context Diagrams), Use Case Scenario OR ER diagrams.

We can modify the current DFD also. The diagram will have documentation under it so that collaborators can quickly grasp plots2.

Reply to this comment... this is link to some sample diagrams I created at the university.

Reply to this comment...

Login to comment.