Wikipedia Education Program/design

This page lists the thing we'll be creating for the Wikipedia Education Program in some detail and is meant to get a feel on the scope and progress of the project, as well as a way to discuss and update goals and features.

The management of types of objects is done via 3 interfaces for each type, one that lists all items, one that allows creating and editing existing items, and one that shows an item in details. (This is not that much work since a lot of common code can be used. And it makes the working of the whole thing nicely consistent.) On top of that the extension has some user/student specific pages and one for an overall summary.

Special:Institutions
Comparable to: Special:Contests

Lists institutions in a pager with filter and sort options. Clicking the name of an institution in the pager will take you to Special:Institution/$name. The following info will be listed in the pager:


 * Name (sortable)
 * City (sortable)
 * Country (sortable, filterable)

Other things that could easily be added:


 * Amount of courses (sortable)
 * Amount of active courses, or an indicator if there are any (sortable, filterable)
 * Amount of mentors (sortable)
 * Amount of students (sortable)

Furthermore, each institution will have associated edit and deletion controls for people with matching privileges.

For people that can add new institutions, a form is shown at the top of the page that takes them to Special:EditInstitution after submission.

Special:EditInstitution
Comparable to: Special:EditContest

When going to Special:EditInstitution, you can enter a new institution. Going to Special:EditInstitution/$name allows you to edit institution with name $name. The interface, which is a form with the following fields is the same in both cases.


 * Name (text field, max 255 chars)
 * City (text field, max 255 chars)
 * Country (dropdown)

It will also have a list of mentors with associated deletion control and a field for adding new mentors.

Special:Institution
Comparable to: Special:Contest

Shows summary data for a institution, comparable to what you see in the pager of Special:Institutions, as well as the edit and deletion controls for people with matching privileges. The page also holds pagers showing the associated courses and mentors, plus forms to add new such items, further explained in Special:Courses and Special:Mentors respectively.

Special:Courses
Comparable to: Special:Contests

Lists courses in a pager with filter and sort options. Clicking the name of an course in the pager will take you to Special:Course/$name. The following info will be listed in the pager:


 * Name (sortable)
 * Institution (sortable, filterable)

Other things that could easily be added:


 * Amount of terms (sortable)
 * Start date of first term
 * End date of last term
 * Amount of active terms, or an indicator if there are any (sortable, filterable)
 * Amount of mentors that have access to this, ie amount of mentors for associated institution (sortable)
 * Amount of students (sortable)
 * Course language (sortable, filterable)

Furthermore, each course will have associated edit and deletion controls for people with matching privileges.

For people that can add new courses, a form is shown at the top of the page that takes them to Special:EditCourse after submission.

Special:EditCourse
Comparable to: Special:EditContest

When going to Special:EditCourse, you can enter a new course. Going to Special:EditCourse/$name allows you to edit course with name $name. The interface, which is a form with the following fields is the same in both cases.


 * Name (text field, max 255 chars)
 * Institution (dropdown)
 * Description (big text field)

Special:Course
Comparable to: Special:Contest

Shows summary data for a course, comparable to what you see in the pager of Special:Courses, as well as the edit and deletion controls for people with matching privileges. The page also holds a pager showing the associated terms, plus a form to add new terms, further explained in Special:Terms.

Special:Terms
Comparable to: Special:Contests

Lists terms in a pager with filter and sort options. Clicking the year of a term in the pager will take you to Special:Term/$id. The following info will be listed in the pager:


 * Year (sortable)
 * Course (sortable, filterable)
 * Start date (sortable)
 * End date (sortable)

Other things that could easily be added:


 * Term active or not (sortable, filterable)
 * Amount of mentors that have access to this, ie amount of mentors for associated institution (sortable)
 * Amount of students (sortable)

Furthermore, each term will have associated edit and deletion controls for people with matching privileges.

For people that can add new term, a form is shown at the top of the page that takes them to Special:EditTerm after submission.

Special:EditTerm
Comparable to: Special:EditContest

When going to Special:EditTerm, you can enter a new course. Going to Special:EditTerm/$id allows you to edit term with id $id. The interface, which is a form with the following fields is the same in both cases.


 * Year (short text input?)
 * Course (dropdown)
 * Start date (date picker)
 * End date (date picker)

And maybe this?


 * Description/notes (specific to this term, rather then the course in general) (big text field)

It could also have a list of enrolled students and a "remove student" control. (Do we want/need this?)

Special:Term
Comparable to: Special:Contest

Shows summary data for a term, comparable to what you see in the pager of Special:Terms, as well as the edit and deletion controls for people with matching privileges. The page also holds a pager showing the associated students, further explained in Special:Students.

Special:Students
Comparable to: Special:Contests

Lists students in a pager with filter and sort options. Clicking the name of a student in the pager will take you to Special:Student/$name. The following info will be listed in the pager:


 * Name (sortable)

Other things that could easily be added:


 * List of stuff currently enrolled in
 * Date of first enrolment (sortable)
 * Date of last activity (sortable)
 * Enrolled in an active term or not (sortable, filterable)
 * Once we decide on the things we'll track for students, these can probably go here.

No edit control, since only the student should be able to edit it's own data, and having a single edit control show up in the list is silly. Also no deletion control, since you can only remove enrolment of a student from a term (on Special:Student) and not remove the student itself.

Special:Student
Comparable to: Special:Contest

Shows summary data for a student, comparable to what you see in the pager of Special:Students. Plus more extensive analytics and activity data if available.

Also shows a list of stuff the student is enrolled in plus "remove enrolment" controls for people with matching rights.

Special:Mentors
Comparable to: Special:Contests

Lists mentors in a pager with filter and sort options. Clicking the name of a mentor in the pager will take you to Special:Mentor/$name. The following info will be listed in the pager:


 * Name (sortable)

Other things that could easily be added:


 * List of associated institutions

No edit control, since only the mentor should be able to edit it's own data, and having a single edit control show up in the list is silly. Also no deletion control, since you can only remove association of a mentor from an institution (on Special:Mentor) and not remove the mentor itself.

Special:Mentor
Comparable to: Special:Contest

Shows summary data for a mentor, comparable to what you see in the pager of Special:Mentors.

Also shows a list of institutions the mentor is associated with plus "remove institution" controls for people with matching rights.

Signup
There should be a registration page for each course that has an active term, which can be linked to. Users should be able to login here with an existing account and enrol or create an account, enrolling in the process.

Special:MyCourses
Comparable to: Special:MyContests

Lists the courses in which a student is enrolled (terms are not shown here to keep it simple for the user). One list for current courses, which are the ones that have a currently running term in which the user is active, and one lists passed courses. Each course has associated links to some page (? need to figure this out) describing the course and listing help info.

The page holds links to general info about WEP and places where students can get community help.

Clicking a course will take the user to Special:MyCourses/$course (or maybe a separate page such as Special:MyCourse/$course), which shows their recent activity, progress, other analytics, maybe notes and other things. Need to further work this out, but it's one of the things only needed at the later stages of the project.

Special:EducationProgram
Lists statistics about the program. We can decide on what to do here later on.

Students
Students can enrol into an arbitrary number of terms and anyone can become a student (by default).

Education program admins
Admins that have all rights associated with the education program.

Rights:
 * Manage institutions
 * Manage courses
 * Manage terms
 * See enrolment token for all terms
 * Disassociate any student from any term they are enrolled in
 * Make any user an online ambassador
 * Make any user a campus ambassador
 * Make any user an instructor

Questions:
 * Right now there is one right to manage institutions, which allows creation, modification and deletion. Do we really want to have a separate right for deleting them? Seems odd that you'd trust someone to create and edit stuff but not delete it. And keep in mind that a "revision history" feature is on the roadmap, complete with revert capabilities.

Online ambassadors
Online ambassadors help students, not restricted to any particular institution or course.

Rights:
 * See enrolment token for all terms
 * ? please fill in this list with rights from the admin list, and be specific about the scope

Questions:
 * Is any kind of association for these ambassadors with institutions or courses needed? ie do they need to be able to show up as an ambassador for some institution?
 * ... In case of yes, is there also a need to be able to get all institutions linked to a single ambassador, or is getting the ambassadors for an institution sufficient?
 * Who is able to make people member of the online ambassadors group? Sysops and EP admins are obvious. Any other groups? In particular, can an ambassador make other people ambassador?

Campus ambassadors
Campus ambassadors help students, restricted to one or more institutions and possibly linked to a set of courses.

Rights:
 * See enrolment token for all terms part of the institutions they are linked to
 * ? please fill in this list with rights from the admin list, and be specific about the scope

Questions:
 * Is there a need to be able to get all institutions linked to a single ambassador, or is getting the ambassadors for an institution sufficient?
 * What would a link with a course entail?
 * Who is able to make people member of the campus ambassadors group? Sysops and EP admins are obvious. Any other groups? In particular, can an ambassador make other people ambassador?

Instructors
Instructors are staff or student at some institution and are linked to any number of courses.

Their terms consist of are those part of the institutions linked to the courses they are instructor for. So if they are instructor for course "foo" at institution "bar", all terms for courses of "bar" will fall under "their terms" as used below.

Rights:
 * See enrolment token for all their terms
 * Disassociate any student from any of their terms
 * Manage terms in the courses they are linked to
 * Manage the courses they are linked to
 * ? please fill in this list with rights from the admin list, and be specific about the scope

Questions:
 * Who is able to make people member of the instructors group? Sysops and EP admins are obvious. Any other groups?

Related DB design

 * Institutions
 * Courses - Linked to one institution
 * Terms - Linked to one course
 * Students - Linked to any number of terms. Linked to one user
 * Mentors - Linked to any number of institutions. Linked to one user

Further notes
Changes will be logged and old versions of objects will be kept as serialized php arrays in the ep_revisions table, so we can have comparable "history" functionality as regular articles. This will also require some UI work, which I still need to figure out how to best do --Jeroen De Dauw 19:12, 15 December 2011 (UTC)