Uploaded by Sarthak Singh

Joint-Code - Signed Report-1 (1)

advertisement
• Title of the Project:
Joint-Code: A real-time Code Collaboration and Execution Platform
• Name of the Supervisor:
Dr. Vishal Krishna Singh
• Abstract:
1. This pandemic has hit us hard, but with time everything is starting to come online so is the case with our colleges. All lectures
and coding practicals are being conducted online, mostly through
PPT’s and screen sharing, while this way is sufficient for theory
lectures but it becomes really hard to cope up with online practicals.
2. Our solution for this is a platform that will allow us to have multiple users to join a single session where they can start creating files
and coding in real-time. Each file can be modified by multiple
users at the same time, and changes will be reflected to all the
users and can be executed too.
3. This project implements a technique called "Operational Transformation" as an algorithm for automatic conflict resolution which
proves to be quite helpful when handling real-time edits on a single
file.
4. This particular project is a challenge for us because it combines
various fields such as DevOps, Frontend, Backend and the implementation of this algorithm under one sinlge roof.
• Learning Objectives:
– Knowledge to Acquire:
1
1. Theory of Operational Transformation: Collaborative editing
is a difficult task to solve from a development point of view
because clients can be doing changes in the same parts of text
at almost the same time.
2. Microservices: An architectural design for building a distributed application using containers. This architecture allows for each service to scale or update without disrupting
other services in the application.
3. Knowledge of DevOps: A software development and operations approach that enables faster development of new products and easier maintenance of existing deployments.
4. Understanding of database management: The data storage,
operations, and security practices in this project requires a
level of knowledge on how to organize, store and retrieve data.
5. Linux Kernel: Containerization in Linux i.e. they share the
same operating system kernel and isolate the application processes from the rest of the system.
– Skills to Acquire:
1. Docker with DevOps: Through Docker DevOps, developers
can pack all parts of an application like libraries and other
dependencies easily and ship it out as a single package making
it easy to create, deploy, and run the applications by using
containers.
2. MongoDB, NodeJS: Backend languages for communication
using websockets between the different users. The database
keeps track of the user management and auth server. the
database for OT server will be OrientDB as it is a great
database for modelling data with complex relationships.
3. ReactJS: For providing a simple user friendly frontend we have
chosen ReactJS and its ability to work with a virtual browser.
4. Traefik proxy: Traefik is a modern HTTP reverse proxy and
load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components
and configures itself automatically and dynamically.
– Competences to Acquire:
2
As mentioned in the knowledge and skills required to complete
this project, we need a high competence of Backend languages
like NodeJS, MongoDB, DevOps using Docker, Linux kernel commands and its containerization feature and various microservices ;
an average competence of the OT algorithm, ReactJS for frontend
; and basic understanding for using Traefik for load balancing.
– Attempting to solve any Research Problem?:
Yes.
We are implementing an algorithm called "Operational Transformations" which resolves conflicts in collaborative editing.
– Overview of Research Problem/Project:
1. All students does not have same coding environment and some
of them don’t even have Linux installed.
2. If the student want to share code or even if teacher wants to
share a code, they need to send file which then needs to be
run locally,hence consuming more time.
3. Debugging and doubt solving in a code is really cumbersome
and teacher cannot help student in real-time. Poor network
connection is the biggest hurdle of all due to which quality of
share maybe bad and code may not be visible clearly.
On our platform teacher will create a room, will share the invite
link. After the room is created a Linux container will be created
and all users will be able to access that Linux environment putting
the students and the teacher in same coding environment. Now
they can create files and start coding in real-time using our online code editor. Each file can be modified by multiple users at
same time, and changes will be reflected to all the users using the
algorithm Operational Transformation.
• Signature of all the students along with the signature of their
supervisor
Sign of team members:
Niharika Kabra (LIT2019053)
3
Sarthak Singh (LIT2019068)
Adarsh Kumar (LIT2019051)
Sign of Supervisor:
Dr. Vishal Krishna Singh
Dr. Deepshikha Agarwal
Date: January 28, 2022
4
Download