teammates icon indicating copy to clipboard operation
teammates copied to clipboard

Remove "archive courses" feature

Open wkurniawan07 opened this issue 2 years ago • 5 comments

Problem Statement

The "archive courses" function was introduced when all courses are loaded in instructor's home page without any lazy loading, in order to reduce both the backend load and the page load time (and those are pre-V7 time where backend and page load are essentially the same thing).

However, not only that we now have lazy loading, but also the data for courses, no matter how large, are fetched asynchronously (REST architecture).

  • Unless the scale is in hundreds of thousands of courses, loading all courses (skeletons) for any user will not put any significant load to the backend.
    • The bottleneck is in fact the frontend who unfortunately have to "display" those large number of courses.
  • Even if the above (number of courses causing page to be cluttered) does happen, "archiving courses" is not the proper solution because it assumes that some courses are "less active" than the others. The only true solution is applying pagination.

Right now, "archive courses" is no longer justifiable to be kept around.

Solution

  • Remove the feature entirely
  • (lower priority) Introduce pagination for courses in the instructor home page and/or instructor courses page and/or instructor students list page

wkurniawan07 avatar May 22 '22 03:05 wkurniawan07

Indeed, we don't have the 'faster page loading' incentive that was one reason behind the archiving feature. So, it is timely to explore if this feature is still needed. I myself used to use this feature earlier, but I haven't used this feature in the past few years, which shows that it is less useful than before.

I'm interested to know if the feature has some impact on costs. Does it save some database reads or add to our costs by increasing reads/storage. As always, database cost is not the only cost, as the cost of maintaining the feature is significant too. A feature like archiving can have widespread implication on many other features, and its removal will likely result in significant maintenance cost savings.

Another motivation for this feature was to declutter the instructor view. This is not simply a cosmetic matter, as instructors tend to teach the same courses repeatedly, there is a risk of performing an action on a past version of the course by mistake. Even with the archiving feature in place, we still have cases of users reporting "Hey I tool this course last semester; how come you send me submission emails again?". This is probably why 'archive course' in a standard feature in LMS'es e.g., LumiNUS. A sensible (and possibly intelligent -- e.g., it can detect which courses are current) pagination implementation can definitely go a long way in alleviating this problem. It is true that most instructors will have a small number of active courses at a time but there are instructors who have 20-30 active courses too (e.g., academic support users that help academic staff setup TEAMMATES for cohort-wide courses taught by multiple instructors, such as capstone projects)

damithc avatar May 22 '22 05:05 damithc

@damithc If we remove the archive feature, we can save some cost because of less write actions. But since this feature is rarely used, the saved cost will probably not be significant. That said, I think we can remove this feature and replace it with pagination as @wkurniawan07 proposed

daongochieu2810 avatar Jul 06 '22 09:07 daongochieu2810

@daongochieu2810 monetary cost is not really the saving I was looking at even when creating this ticket. It's the code maintenance cost; this feature introduces a not small amount of logic and dedicated APIs to support.

wkurniawan07 avatar Jul 07 '22 06:07 wkurniawan07

@wkurniawan07 what do we do with the currently archived courses? Set the status to active?

daongochieu2810 avatar Jul 07 '22 11:07 daongochieu2810

currently archived courses

You should know the answer if you know which entity actually marks the archived status.

wkurniawan07 avatar Jul 11 '22 03:07 wkurniawan07