Open Bad-Science opened 6 years ago
@YACS-RCOS/summer-squad Can you all please comment, edit, and approve the proposal? We will set dates for each part of these systems tomorrow in class.
@sydtaylo We've discussed improving the search system but have not worked out exactly what we want to do. Could you post what you were thinking so we can define that in the proposal? thanks!
Found a typo: "This document is intended to be internally by RCOS."
Also @wdturner, this is the draft of our proposal
Looks good. Just get some dates in. Any progress on NYU? I will be talking with a professor there Sunday-Tuesday of next week, so if you have a name or contact information it might be useful.
This is the master issue thread for the Summer 2018 Yacs @ RCOS Roadmap.
Please make suggestions and comments!
TODO:
Yacs Summer 2018 Roadmap
This document serves as the roadmap and development plan for Yacs for the Summer of 2018, beginning Monday, May 21st and ending Friday, August 17th. This document is intended to be used internally by RCOS. A modified public-facing blog post will be created.
Team
Overview
We aim to begin and/or complete work on several systems over the course of the summer. These systems include: the Notification System, the Event Analytics System. We will also make improvements to the Schedule System, and the Core Data Model and APIs. These systems and their goals are described below.
Notification System
The notification system is a user-facing feature that will provide users with live notifications regarding updates to courses and sections they are interested in. Notifications will be presented to the user in a list view, and selectively as desktop notifications. Users will be able to specify, either implicitly or explicitly which courses and sections they are interested in. Implementing the notification system will require creating a new event stream (Kafka topic(s)) originating from yacs core, creating a Websocket API service to read from said stream and provide an web API (yacs-notification-service), and adding an event stream UI to yacs-web.
Event Analytics System
After the Notification System has been completed, we will begin work on the Event Analytics system. The Event Analytics System leverages the data pipeline created in the Notification System phase. We will create a new consumer of the event stream topic, which will aggregate and eventually provide a platform for analytics on the streamed data. For the purposes of the Summer 2018 roadmap, we will attempt to aggregate the changes in section seat availability over time, and time permitting, attempt to visualize this data. Ultimately, we would like to be able to present this data to students and faculty.
Schedule System
After the frontend components of the notification system have been implemented, we will be able to make significant improvements to the schedule view. First, we will implement a new design and layout for the selections view that After the new selections view is implemented. After the selections view is complete, we will apply the new designs to the general courses view as well.
Schedule System Stretch Goals
There are many other improvements that can be made to the schedule system. For example, adding drag-and-drop functionality, highlighting, and the ability to save multiple different schedules or combinations of courses.
Core Data Model and APIs
In parallel to the rest of the work, we will be implementing our new data model and corresponding schema. This new data model will support storing data from multiple semesters and will support a higher level of granularity in general. Once the new data model is implemented, we will create a new API version. This API will be version 6 and will follow the JSON:API specification. Last, we will also design and implement a new schedule API that is denormalized and supports arbitrary events. While building API version 6, we will also need to extend yacs-web to support multiple semesters, and view data from different semesters.
Timeline
Notification System Data Pipeline
Notification System API
Notification System UI & Schedule Selection UI
Subscription UI/UX
Subscription Storage
Course/Section List UI Updates
Event Analytics Pipeline
Schedule Time Constraints UI
Schedule Preferences UI
Schedule Algorithm Changes