ossu / ossu-client

:computer: Web UI for Open Source Society University
https://ossu.firebaseapp.com/
86 stars 12 forks source link

API-change-proposal: pull progress from users' own "ossu-courses" git repo #48

Open crmackay opened 8 years ago

crmackay commented 8 years ago

This is a idea/proposal that I had that would address some of the problems around:

  1. keeping the curriculum up to date
  2. allowing people to customize their curriculum
  3. allowing people to update their progress charts to newer version of the curriculum

My idea is to require every user to create a github repo called "ossu-courses" (or something similar), and in that repo would be a file (markdown, or json?) that contains all of the courses they are planning to take, have taken, or are currently taking, along with the url to their project and other info. We would provide a template file with the most current curriculum, but then students are free to change it as they see fit (as long as they use the proper formatting), or update it to a new version when a new curriculum gets released.

In addition to creating this repo, users would need to register with the OSSU-client (similar to now). The client, though, would not store the students progress directly, but instead would pull that information from https://github.com/<username>/ossu-courses for each user.

So the client would store the usernames, and other user information (social network info etc), and a regularly updated copy of each student's progress (for search purposes), but the actual record for each student is maintained by the student under their github profile in a specific repo. And, these repos are regularly checked for updates by the client to pull in up-to-date information[1].

This would potentially address #47, #42, #44, #29, and open-source-society/computer-science#326 .

[1]: i would suggest something like: everytime a user logs into the client, and also somewhere between every few hours to once a day maybe?

ericdouglas commented 8 years ago

@crmackay your suggestion is similar to what I thought some time ago https://github.com/ericdouglas/curriculum.js

This project will contain a basic frontend app that pulls data from a JSON file.

Anyone that wants to use this structure, should just make a fork and change the data.json file.

I will return to this project and after having a prototype, we can make new iterations from the basic design, what do you think?

edit: about your ideas, I think we should follow with Firebase or with a static app. I don't see the necessity in have both.

"My idea is to require every user to create a github repo called "ossu-courses" (or something similar), and in that repo would be a file (markdown, or json?) that contains all of the courses they are planning to take, have taken, or are currently taking, along with the url to their project and other info. We would provide a template file with the most current curriculum, but then students are free to change it as they see fit (as long as they use the proper formatting), or update it to a new version when a new curriculum gets released."

This is exactly the functionality that I'm thinking for the curriculum.js.

crmackay commented 8 years ago

Well without a database there is no way to allow searching or displaying a list of all students working on a particular course.

I would say you need some amount of persistence (eg a database). One possibility would be to reconfigure the current client a bit to pull data from a json or markdown file in a student's git repo and store it in the firebase database. Sadly I'm and not proficient in angular so I can't do this right now.

ericdouglas commented 8 years ago

@crmackay yes, this is a good possibility.

In fact, I'm pretty happy with the amazing work that @SergeyKhval did in the ossu-client.

I don't have an answer right now, to be honest. Both approaches work for me. We need to think which one will be more simple to maintain and for students usage.