Skip to content

Latest commit

 

History

History
221 lines (165 loc) · 9 KB

banaszkiewicz-piotr-amy.md

File metadata and controls

221 lines (165 loc) · 9 KB

Enhance Amy, a workshop-management platform for Software Carpentry

Abstract

The number of Software Carpentry's workshops run weekly is growing rapidly (see Fig. 1 below). All the management for these workshops is currently being done by 1-2 persons and in very rough conditions (via files and text notes). That's why Amy was created in December 2014: to help Software Carpentry admins schedule workshops, assign instructors to workshops, and even coordinate training for new instructors.

Cumulative enrolment and workshops Fig. 1: Cumulative workshops' enrolment.

Cumulative workshops Fig. 2: Cumulative number of workshops.

The aim of this project is to continue enhancing Amy. Many people suggested great ideas for Amy, some even implemented them, but not much was actually merged. As a result, in March we can see a drop in new commits.

Features

Integration that will allow Amy admins to easy control workshop-related services:

  • integration with Eventbrite
    • check if an event's registration exists
    • check if an event's registration is running
    • maybe bulk-load event attendees
  • integration with Mailman
    • list people signed up for a specific list
    • list lists person is signed up to
    • create per-workshop lists for instructors, helpers, and hosts
  • integration with GitHub
    • OAuth login

New functionality this project should bring into Amy:

  • reports (statistics)
    1. number of people taught
    2. number of instructors
    3. number of workshops run to date
    4. workshop enrolment per workshop
    5. workshops without enrolment numbers
    6. how many times an instructor has taught
    7. list of instructors who have never taught
    8. number of instructor trainees per cohort
    9. instructors who have been badged in the last N months
  • charts - some of the reports above could use nice visualization, for example:
    • line chart: number of people taught
    • line chart: number of instructors
    • line chart: number of workshops

On Amy issues page there are several long-standing issues. I selected a few that I think are important:

Additionally, if enough time is given, I can work on other issues.

Technical Details

For Eventbrite integration I'll use Eventbrite REST API. It should be straighforward — we only want to know if an event is available.

Integration with Mailman will be possible if:

  1. Mailman 3 arrives (maintainers hope to release it in April 2015) as it brings long-awaited REST API
  2. Software Carpentry migrates to Mailman 3.0

Alternatively, if Mailman v3 doesn't appear in time for GSoC 2015, the integration would mean running shell commands directly from Amy.

In case integration with Mailman is quite extensive, I'll consider using valor as an easy OOP integration layer.

Additionally, if there's an issue with timeouts to Eventbrite or Mailman endpoints, I'll consider using Celery as a simple queueing system.

I have never done social authentication in Django, but people at StackOverflow suggest to use python-social-auth. An alternative - django-allauth - seems to provide "local" authentication (ie. what we have now - via email/password) as well.

Statistics (or reports) are not fancy - they are database queries; hopefully I'll be able to implement all of them in Django ORM. In case of Report#4,5 or Report#6,7 or Report#9 I'll provide an UI to easily view specific people/workshops.

I want to implement DataTables before diving into reports. DataTables should help a lot when viewing existing listings in Amy, too.

To implement charts I'll use Mozilla's MetricsGraphics.js as it's the most stable and well developed charting library for JavaScript I've seen in a while.

Schedule of Deliverables

A word on my availability:

In the month of June I have to prepare for exams. I'll make sure to be spending at least 20hrs per week on this project.

My exams are not scheduled yet, but the timeslot for them is June 23rd - July 7th. In this time I won't be able to work on the project. However, most likely I'll be over with the exams by the end of June - in that case I'll resume working on the project as soon as I pass everything.

If the Developer guidelines aren't ready in time for GSoC 2015, I want to start with them so that I know what I can and cannot do.

Additionally I want to point out that anyone can start working on issues this project will focus on during GSoC 2015. Hence changes to the schedule below may be expected.

May 25th - June 7th

A sort of "cleaning up" time period:

  • Write down Developer guidelines.
  • Push to close any remaining pull requests.
  • Create issues on Amy's GitHub page for the topics in this project that were not yet in there.
  • Triage GitHub issues (ie. create milestones and assign issues to them.)
  • Probably (as a result of finished Developer guidelines) launch Travis-CI and Coveralls for Amy (see #166).

June 8th - June 21st

  • Implement DataTables.
  • Implement EventBrite integration.
  • Implement GitHub login integration.
  • Provide tests for these features.

June 22nd - July 5th

I'm unavailable due to exams.

July 6th - July 19th

  • If Mailman3 is out: work with Software Carpentry admins to upgrade existing Mailman 2.x installation
  • Integrate with Mailman.
  • Test Mailman integration.

July 20th - August 2nd

  • Create reports and reports' pages.
  • Provide tests for these features.
  • Create colorful charts.

August 3rd - August 16th

  • Work on remaining issues for Amy like test fixtures or event enhancements.

August 17th - August 21st 19:00 UTC

  • Work on remaining issues for Amy like test fixtures or event enhancements.

Future works

I've been involved with Software Carpentry for almost a year now. I'm a Software Carpentry instructor, Software Carpentry Foundation member and I don't plan to leave.

Open Source Development Experience

2010-2012: cooperation with Oregon State University Open Source Lab: Ganeti Web Manager project (during two GSoCs and one Google Code-In).

GSoC 2014: Peer instruction project for Mozilla Science Lab (and Software Carpentry).

Since January 2015: Amy for Software Carpentry.

Academic Experience

I'm studying Automatics Control and Robotics at AGH-UST in Krakow, Poland. I know understand quite a bit of Mathematics, including optimization theory, control theory, probability, and others. Additionally I've got to know many industrial automatics systems (PLCs, robots, etc.), I'm also good at Matlab. I posses a LabView certificate (CLAD).

Why this project?

Four reasons why I started working on Amy:

  1. I wanted to give back to Software Carpentry
  2. I knew Amy was (and still is) really needed for Software Carpentry to continue developing at current pace.
  3. I was familiar with technologies Amy was written in.
  4. I promised Arliss on MozFest 2014 in London that I'll work on Amy :-)