project-proposal-2024

neo - Your Virtual IDE

Abstract

IDE’s are a programmer’s work area, a place to maximize the programmer’s productivity. But usually, they take a fair bit of customising and setting up on your local machine to get your dream workspace. Working on a new device always takes some gimmicking.

So why don’t we bring it online?

(This is like GitHub Codespaces, but better)

For these reasons, Availability, Extensibility and Security are the most critical qualities for neo’s success.

Neo, like in The Matrix is an anagram for “one” - This IDE aims to be the one. 😎

Author

Name: Kevin Luo

Student number: 46986139

Functionality

The following features would be required for the full system:

Need to connect to GitHub to pull a repository to work on.

Scope

For the MVP (minimum viable product), we should have the following essentials:

For the IDE and Terminal, neo should just focus on one language - Python

Moreover, we should focus on support of the PC web browser only.

Quality Attributes

Availability: how accessible a software is at any time and/or on any platform.

In neo, the primary goal for the project is to allow access to a coding environment anywhere, anytime on any device. Any changes to the configurations should be synchronised on every device. If servers are down, users should not be effected. This could be done by doing quick recovery or backup servers.

Extensibility: how easily a system’s architecture allows for new additions.

Like any IDE around, developers should be able to add whatever features that are desired. The proposed project itself should be intentionally bare-bones in functionality, to encourage the support of adding additional features.

Security: the software’s ability to maintain functionality during attacks, and the system resources remain safe.

A software system being secure is a given, but for neo it is even more crucial as code is an individual’s, organisation’s or enterprise’s IP. To ensure this, encryption should be enforced to and from the server and within the database. Web tokens and multi-factor authentication should be considered to prevent unwanted access.

Evaluation

Availability: Since we are only focusing on PC for python. Users can technically open the service on phone, but this shouldn’t be optimised. The prototype should be able to perform under basic tests enforced using stress tests. Health checks in the system should also notify faults in the system and be able to spin up another system to be used during downtime.

Extensibility: The system is extensible if the backend is able to support additional components and modules without the need to affect the bare-bones, each extension should be independent of the base system and other extensions.

Security: To evaluate the system’s security, we can try testing SQL injections and simulated DOS attacks, the system should hold. We can also perform tests (to look for human readable data) to determine and ensure all personal data is encrypted.