User:Fsckd/Classroom future

From ArchWiki

These are notes on the ideas of the future of Arch Classroom.

Primary goals for Classroom

  • Host classes.
  • Host teaching materials.

Motivation and goals for change

Classroom was founded as a subproject of Arch Women. The proposed changes will reduce the demand on resources of Arch Women and make Classroom more independent of its parent project. The reasons for this are as follows.

  • Sadly, vicious trolls like to target Arch Women. The connection between Arch Women and Classroom can cause these trolls to attack Classroom. This has happened once already, though fortunately it was minor.
  • Get more people involved in Classroom. We have many students but all the teachers and volunteers are participants of Arch Women. The wider Arch community also has a lot of talented and skillful people. Classroom should draw from this larger community for volunteers and teachers. Some developers of upstream projects are users of Arch. It would be wonderful to see them give a class on the topics of their expertise.
  • Consolidate infrastructure in a sustainable way. Everything is in one git repository and it is a mess in many ways (including licensing). It needs to be split up and reorganized.

Current setup

This section describes the current state. You can skip it if you are already familiar with how Classroom works. The rest of this document is the proposed future.


This is a git repository hosted on Arch Women's server. It is the only git repository for Classroom. There is a mirror on GitHub. The repository contains materials and notes from past classes and logs of past classes.

After a class is over the repository is updated and pushed to the server. Its contents are checked out to the web directory /media/project_classroom (link).

Arch Women Wiki

Arch Women's wiki has an entire namespace devoted to Classroom. Only two pages are of interest for the purposes here.

The :admin page is the main administrative page for Classroom. It contains the following:

  • todo - most of these are archaic and predate Classroom's current setup and most will be closed or discarded. Furthermore, Arch Women is abandoning their todo system in favor of something they call activities.
  • list of team members
  • checklist for coordinators for a class's lifetime from initial proposal to after-class tasks
  • guidelines for the contents of classroom-media

The page :upcoming has a table of classes in development and the stage they are at.


There is a page on the ArchWiki, which serves as the main landing page for user, and some class specific subpages. The main page has the following:

  • table of upcoming classes - Unlike the table on Arch Women's wiki, these classes have all been scheduled and announced.
  • table of previous classes and links to logs
  • a list of requested classes
  • a guide for people who want to teach a class, includes tips on creating a lesson plan

Relations with other projects

Arch Women

Classroom is a subproject of Arch Women and is hosted there. The rest of this document describes the changes. In short, Classroom will use fewer of Arch Women's resources. However, Classroom will continue to be administered by Arch Women and discussed at their meetings.


ArchWiki cannot host Classroom as there may be non-textual materials, such as videos.

Interchange of content with the ArchWiki cannot be a goal. There are two directions for the flow information, pushing to the ArchWiki and pulling from the ArchWiki. From discussions with Alad and Jason, the ArchWiki is primarily a reference which augments and directs users to official documentation. As such, it does not host tutorials. By its very nature, Classroom produces tutorials and guides. Content cannot be copied from Classroom to the ArchWiki because the ArchWiki does not want it. Copying from the ArchWiki is also unlikely. Class materials should source content from upstream documentation, which is where the ArchWiki also obtains its content from.

ArchWiki hosts the main page for people interested in Classroom. There are subpages for various purposes. See the section on wiki pages for proposed changes.

Arch Linux Forums

The forums has a thread where classes are announced and people can discuss the project.

What will change

The administrative page is on Arch Women's wiki. It has a list of classes in development, checklists and procedures, and to-do items (activities). The list of classes in development and checklists and procedures will be moved to the ArchWiki.

The git repository classroom-media will be split into many git repositories hosted on GitHub instead of Arch Women's server.


The license for classes are to be CC BY-NC-SA and was announced in Arch Women's August 2016 meeting. Having a common license allows content to be used in multiple classes and for materials to be forked, updated, and merged back.

Goals for choosing the license:

  • Free to use and share materials.
  • Allow people to update class materials with new information.
  • Allow instructors who create new notes and materials to use materials from past classes.
  • Ease of understanding the license terms.

Licensing of past classes

We will ask the instructors of past classes to select a license for their class materials. Only the copyright holder can decided the license. (Their choices are limited if the work is a derivative of another work.)

Will tell the instructors what license future classes will use (and why). If they want to, they can choose the same license so their materials can be used as a base for future classes.

ArchWiki page

This is the main landing page for everyone interested in Classroom. It is also the starting page for people who want to teach a class.

The introductory paragraph tells what Classroom is about and mentions that upcoming classes are announced in arch-general and on the forum thread and sometimes in other places like reddit. The end of the page has links to related information but no longer links to Arch Women and instead links to the GitHub organization.

The page contents are something like this:

  1. table of upcoming classes with link to announcement(s)
  2. table of classes in development
  3. table of past classes with links to logs, materials, and meta info.
  4. steps to creating a class
  5. requested classes
  6. classroom team

It is not far different from the older version. Some content is moved to git repositories and new content is brought from Arch Women's wiki.

Git repositories

Currently all class materials and logs are in a single git repository, classroom-media, which is kept on Arch Women's server. (The GitHub link is a mirror.) Its contents will be divided across many new repositories to be kept on Classroom's GitHub. This section describes the new repositories to be made.

There are two kinds of repositories:

  • special repositories
  • class materials and notes

Special repositories

There are three special repositories planned.

This repository has three directories. One directory for logs, one for meta information on past classes (see below) and one for meta information on upcoming classes.
Fork from this to create a new repository of class materials and notes. Has the appropriate license set (CC BY-NC-SA) and a README with guidelines and tips for making notes and a syllabus.
Administrative procedures, checklists, rules, etc. Possible checklists are creating a class, announcing a class, after class is over, and adding staff (coordinator, chanop, or github).

The meta information kept is the information needed for announcements and then some:

  • class name/title
  • dates and times the class is scheduled for
  • description of the class
  • a list of prerequisites
  • name of the git repository containing notes, materials, and syllabus and the ID of the commit used - the git repository should be on Classroom's GitHub page
  • biographies of the teachers

The storage format of meta information should be amenable to git, readable to humans, and parseable by bash scripts. So JSON, YAML, or similar.

Class materials

Git repositories containing class materials, notes, lesson plans, and syllabi. Materials can include images, diagrams, videos (like ASCIInema), logs (not of classes), code examples, etc.

These are the motivations:

  • Students should be able to access class materials as future reference after the class is over.
  • There should be community maintained materials for classes the community deems important enough to be held periodically. Teachers can use these ready made materials and lesson plans for their classes.
  • Teachers should be able to make forks of materials from past classes for use in their own classes. Other teachers should be able to use these forks for their classes.

There are two kinds of repositories for materials. There are the ones maintained by the community and ones maintained by a specific author (likely a teacher). There are two uses for author specific repositories. One is for notes from old classes which are under an incompatible license. The other purpose is for authors who want to try teaching a class using an approach different from the community maintained notes. It is expected that repositories created for this will be merged back into the community maintained one.

Repository naming scheme

This is only for repositories on Classroom's GitHub page. Repositories on other people's pages and websites can be named however they want.

Repositories which are maintained by a specific author should have that author's name. The scheme I wanted is something like this, pkgbuild-beginners+meskarune+halosghost however GitHub does not allow '+' characters in repository names. In fact, in addition to alphanumeric characters, GitHub only allows full-stop '.', hyphen-minus '-', and underscore '_'. These are some possible schemes:

  1. pkgbuild-beginners_meskarune_halosghost (hyphen-minus separating words in class name, underscore separating author names)
  2. pkgbuild_beginners-meskarune-halosghost (underscore separating words in class name, hyphen-minus separating author names
  3. pkgbuild-beginners_meskarune-halosghost (hyphen-minus separating words in class name and author names, underscore separating class name from author names)
  4. pkgbuild-beginners-meskarune-halosghost (no underscore anywhere, hyphen-minus separates everything)

Underscores can become invisible in links and look like spaces. Tigrmesh said no to using a full-stop as a separator.

Of the four, I prefer the fourth without any underscore character. It is simple and there is no confusion on what is acceptable.

I have not decided on capitalization but lean towards everything lowercase.

Process for creating a class

It is perfectly fine for multiple people to teach the same class together.

  1. contact one of the coordinators
  2. come up with a name for the class
  3. lesson plan and materials for the class
    • use an existing one if it exists
    • fork from an existing one
    • create a new one from scratch by forking the starter repository
  4. provide info. needed for announcements
    • class description
    • list of prerequisites
    • biographies of teachers
  5. schedule the class
  6. coordinator will post announcements

Classes should be 1-1.5 hours long and should not exceed 2 hours. Account for an extra half an hour after the class for people who want to ask questions. If a class seems to be too long, it can be divided into parts which are held on different days.

A class can be held multiple times a day to accommodate multiple time zones.

Team roles

Members of Classroom team can hold one of three roles.

Primary contact for teachers. Have access to GitHub and are operators in the channel. Help teachers develop their classes and post announcements before a class and logs afterwards.
Keep the channel troll free.
They help manage git repositories but are not coordinators.

In addition to those three, there are also two special roles.

project lead
Administrates and sets direction for the project.
Has owner access to the GitHub organization or ability to change channel access list. This is not actually indicated in the team list.

Additionally retired staff are listed as fellows in accordance with Arch tradition.

With the current staff the list would look like:

  • meskarune (project lead, coordinator)
  • fsckd (coordinator)
  • tigrmesh (coordinator)
  • yar (chanop)
  • demize (chanop)
  • halosghost (github)

Fellows are: gtmanfred, carharttjimmy, escondida, and kaictl.

Migration plan

This plan will not be acted on without the approval of meskarune, the project lead. It is arranged as a tree. Two things on the same level can be done in parallel. Something on a lower level cannot be done until something on a higher level is complete.

  • Make a decision on the repository naming scheme. This needs to be done by meskarune.
    • Create repository for the class "Beginners Guide to Package Maintaining" by gtmanfred and kaictl. It has the same license as the ArchWiki as text was directly copied from the ArchWiki.
    • Ask CalimeroTeknik if the materials for his class will be the same as the CC license Classroom shall use or a different one. Either way, the class will be put in its own repository.
    • Ask jy2wong if the materials for her class will be the same as the CC license Classroom shall use or a different one. If she agrees to the license Classroom shall use, her notes will be the community maintained repository for kernel building classes. Otherwise it will be put in an author specific repository.
    • Ask nisstyre if the materials for his class will be the same as the CC license Classroom shall use or a different one. If he agrees to the license Classroom shall use, his notes will be the community maintained repository for classes on Scheme. Otherwise it will be put in an author specific repository.
    • Ask HalosGhost if the materials for his class, "An Imperfect Introduction to Static Typing", will be the same as the CC license Classroom shall use or a different one. If he agrees to the license Classroom shall use, his notes will be the community maintained repository for that class. Otherwise it will be put in an author specific repository. HalosGhost taught one other class and that is listed in a separate item.
    • Ask polyzen and meskarune if the materials for their class, "Git for Gits", will be the same as the CC license Classroom shall use or a different one. If they agree to the license Classroom shall use, their notes will be the community maintained repository for that class. Otherwise it will be put in an author specific repository. Meskarune taught one other class and that is listed in a separate item.
    • Ask HalosGhost and meskarune if the materials for their class, "Getting started with Arch Linux packaging", will be the same as the CC license Classroom shall use or a different one. If they agree to the license Classroom shall use, their notes will be the community maintained repository for that class. Otherwise it will be put in an author specific repository. Meskarune and HalosGhost each taught other classes that are listed in separate items.
  • Start the past-classes repository with logs of previous classes. Logs may need to be modified for formatting and the timestamps should be in UTC.
  • Add meta information of previous classes to the past-classes repository.
  • Create the repository classroom-admin with procedures and checklists from Arch Women's wiki and the ArchWiki.
  • Create the starter repository taking the tips and guide from the ArchWiki. It should have the correct license file.
    • Rename the section on the ArchWiki page called "Teaching" to "Teach a class" and rewrite using this and information from Arch Women's wiki.
  • Create a new section on the ArchWiki listing the team.
  • Add table of developing classes to ArchWiki page. Taken from Arch Women's wiki.
  • The list of requested classes should link to git repositories of materials. Should the list distinguish classes which are periodic?