-
Notifications
You must be signed in to change notification settings - Fork 35
Long Term Goal
After two full years of development and two Senior Project classes, the Linux-in-a Browser project has made considerable progress towards achieving its initial goal, which is to provide an all-inclusive learning environment for System Programming that is entirely contained within the web browser. As the completion of this goal approaches, it is beneficial to examine the longer term goal of this project.
Overtime, we hope to create an in-browser computation environment that is top of its class. Rather than having a single specialized solution for CS 241 System Programming, we can extract the core components of this project and create a genericized environment that is independent of the chosen application. Other organizations would then be able to use this computation environment to build any other specialized browser IDE -- R, Python, Swift.
Placing this in context of the current state of this project, we would ideally create two independent components. The first component would be considered the core component. It would be comprised of the Jor1k VM, the file system, the file browser, the GitHub integration, the editor, and all of the relevant UI. The second component would be the System Programming component that would include the videos, the lessons, the man pages, the syntax highlighting, and error annotations.
The first step in this process would be to further decouple the current modules into distinct parts. For example, Sys-Runtime and Live-Edit contain interwoven interactions of compiling C code and interacting with the VM. This interaction blurs the line between core and application specific modules. These singletons should be decomposed into parts that utilize and other parts that implement a standard application independent interface. After the separation is complete, we would subsequently hope to separate these two components into two independent projects where the System Programming project would depend on the Core project, just as our project currently depends on Jor1k. Development of each project could then proceed independently.
It is understood that this is a rather large undertaking with very little immediate benefit. However, it is our hope that future teams and contributors keep this goal in mind while developing, so they too can help further define this separation and at the very least develop their features accordingly.