September is left as a risk reserve. See below for a more detailled breakdown of tasks.

Model

DeadlineGoal

Tasks

Late MarchModel ist clean.
  • Use a consistent naming scheme for taxonomies.
  • Use a consistent naming scheme for metadata fields.
  • Register taxonomies ourselves, instead of with a plugin.
  • Add admin UIs for taxonomies; but don't add them to the sidebar.

Episode Upload

DeadlineGoal

Tasks

Late MarchBasisklassifikation completely modelled.
  • Re-do slugs.
  • Enter the whole Basisklassifikation.
Early AprilRights and licenses are modelled.
  • Metadata field for rights holders.
  • Episode metadata field for licenses.
  • Image metadata field for rights holders.
  • Image metadata field for licenses.
  • Taxonomy for licenses.

Mid-April

Episode metadata is validated.

  • Make Basisklassifikation required unless the podcast is already classified.
  • Limit the number of Basisklassifikation terms to three.
  • Limit the number of keywords to N.
  • Discuss the proper value of N with librarians.
  • Require users to declare copyright holders and usage rights.
Late AprilUsers can upload episodes w/o a manual.
  • If no speaker is entered, create/use a speaker based on the current user.
Mid-MayPer-podcast postring privilege are implemented.
  • Per-podcast postring privilege are implemented.
JulyEpisode upload is translated to German.
  • Translate field descriptions into German, if feasible.
  • Translate validation errors into German.

Podcast Creation

DeadlineGoalTasks
Mid-MayRights and licenses are modelled.
  • Have a podcast metadata field for rights holders (probably easiest to reuse the Speakers field).
  • Have a podcast metadata field for licenses.
  • If copyright holders and a license are declared for a podcast, use them as defaults for episodes.
Mid-MayPostcast metadata is validated.
  • Filter Basisklassifikation terms by UI language when creating a new podcast.
  • Make the speakers and Basisklassifikation fields required when creating a new course.
  • Override the slug field of lecture series with <semester>-<course ID> and hide slug entry field.
Late MayUsers can create podcasts w/o a manual.

-

Mid-JunePodcast generation is translated to German.
  • Translate field descriptions into German, if feasible.
  • Translate validation errors into German.
Late JuneSpecial privileges for courses are implemented.
  • Special privileges for courses are implemented.

Data Migration

DeadlineGoalTasks
Mid-AprilOld episodes are available.
  • Medien und bestehende Metadaten sind migriert.
Mid-AprilThere is a metadata strategy.
  • There is a list of keywords to be used.
  • There is a plan how to apply those keywords to old episodes.
  • There is a team of volunteers to execute the plan.
SeptemberA number of old episodes has been classified.
  • Old episodes back to so a set date have been classified.
SeptemberA number of old lectures has been classified.
  • Old lectures back to so a set date have been classified.

Front-end

DeadlineGoal

Tasks

Mid-JulyThe German site is usable.
  • Test whether episode speakers and series speakers both show up on a series page/entry if both are given and differ.
  • Add link title attribute to metadata entries.
  • There are no PHP warnings on the front-end, even with debugging enabled.
Mid-AugustA11Y has been reviewed.
  • Test the site with screen readers.
  • Ask disabled colleagues for feedback.
Mid-AugustThe English site is usable.
  • Translate legal information into English.
  • Translate the main menu to English.
  • Classify old English material.
Have a nice front-end.
  • Maybe use <https://wordpress.org/plugins/podcast-subscribe-buttons> to make subscribing to podcasts easier.
  • Don't show taxonomies in post metadata if the current view is for that taxonomy.
  • Use a hyphenation library to hyphenate long words before saving/updating a post/page/podcast.
  • Selbe Farbe für “Nächste/Vorherige Seite” verwenden wie im Menü oder Kontraste wieder etwas abschwächen.
  • Hübschere Pfeile bei „Nächste/Vorherige Seite“.
  • Have a page that lists all classifications.
  • Have a page that lists all speakers, maybe by podcast.
  • Have a page that lists all semesters.
  • Fix the sidebar to the bottom of the screen when scrolling down and to the top of the screen when scrolling up.
  • Have a report button, so that we can show how much we care about copyright?
  • Center lecture numbers more properly.
  • Have an icon to un-/collapse sub-menus without having to click on the parent item.
  • Display per series-persons.
  • Display per series keywords on series page.

Legal Issues

DeadlineGoal

Tasks

Ende MaiRechtsform ist geklärt.
  • Gründung eines Vereines ist mit dem Institut und der Fakultät akkordiert.
  • Der Verein ist gegründet.
  • A “Datenverarbeitung” has been registered wit the University of Vienna.
Ende JuliProcesses have been set up.
  • There is a form for third parties to allow uploading their lectures on the Audiothek (GDPR, copyright).
  • There a database to keep track of those forms.
Late AugustPrivacy policy is ready.
  • Draft for privacy policy is ready.
  • Policy has been translated into English.
  • Privacy policy has been cleared by a lawyer (German and English).
Late August

Terms of use are ready.

  • Note that only the German version is legally binding.
  • Draft for terms of use is ready.
  • Terms have been translated into English.
  • Terms have been cleared by a lawyer.

Search Engine Optimisation

DeadlineGoal

Tasks

Late AugustSearch engines find us.
  • Don’t forget to add a robots.txt file when everything else is done.
  • Don’t forget to allow search engines back  in when everything else is done.
Late AugustEnable SEO review
  • Add the site to the Google Management Console

Infrastructure

DeadlineGoal

Tasks

Late MarchMigrate development to staging environment.
  • Migrate testing to staging environment.
  • Cache TTL on schroeder may need further optimisation.
  • Investigate TLS errors reported by Mozilla Observatory.
  • Differentiate webroot and file store by version numbers.
Late JulyMove media to share
  • Move cachefiled store from Virtio FS to local ext4 volume.
  • Test streaming media from share under load.
  • Route traffic to share.univie.ac.at over a dedicated interface.

Late August

Go live with beta

  • Re-test staging environment for stability under load, performance, A11Y, and SEO.
  • Forward mimi.phl.univie.ac.at to audiothek23.philo.at.
  • Add forwarding rules for URLs, if feasible.
  • Change banner on old Audiothek and point to new address.
Late AugustGo live
  • Test with fake hostname.
  • Add forwarding rules for URLs.
  • Let audiothek.philo.at point to schroeder.