Ideas for Open edX Conference Hackathon

If you have ideas about what to work on during the hackathon for the 2014 Open edX Conference, add them here! You can also browse existing ideas, and add your name if you're interested in working on an idea!

IdeaProposer(s)Interested PeopleNotes
Upgrading DjangoDavid Baumgold (Deactivated)

Calen Pennington (Deactivated)

Braden MacDonald

ClintonB (Deactivated)

This will be a lot of work, and require a lot of testing.
Improve Initial Course EntryMarco Morales (Deactivated) Suggestion for a small project which would allow course authors to move away from the use of the Course Info tab.
Course structure graphdmitchellR (Deactivated)

Adam Palay (Deactivated)

Nimisha Asthagiri (Deactivated)

Julia Eskew (Deactivated)

Use a graphing package to display any given course's structure highlighting orphans, blocks with > 1 parent, blocks with unpublished content? perhaps adding some crud operations. Intended audience is data debuggers not end users.
Studio version history viewerdmitchellR (Deactivated)

Nimisha Asthagiri (Deactivated)

Marco Morales (Deactivated) dfriedmanR (Deactivated)

Steven Vergenz (Unlicensed)

Add a unit, component, whatever history viewer (log w/ who & when) which allows you to click on any entry to view that version (and perhaps revert to that version)
bug-tracker dot edx dot orgAdam Palay (Deactivated)btalbotR (Deactivated), benweeksR (Unlicensed)Simple tool for PMs (and others!) to track the status of a bug fix once it's been "closed" on JIRA. The tool would give information about whether the fix is a) live, b) in the current rc, with an estimate about when it will go out, or c) in master, but not yet on a release candidate.
Accessible Drag n DropMark Sadecki (Deactivated)

Colin Fredericks

GiulioG (Unlicensed)

Chris Rodriguez (Deactivated)

There has been some work on making the DnD problem type accessible (https://groups.google.com/forum/#!topic/edx-code/rk4Z-ysB_UE)  However, I'm not crazy about the approach (it has an accessible fallback alternative).  I'd like to work on returning to a unified solution that works for everyone without making any compromises on existing features or functionality.
Support for Captions in Media PlayerMark Sadecki (Deactivated)

Omar Al-Ithawi

C

Chris Rodriguez (Deactivated)

Our current media player supports the display of synchronized transcripts only.  There have been an increasing number of support requests for traditional captions in addition to transcripts (captions displayed in an overlay over the video are preferred by people with hearing impairments.)

Related tickets (from Zachary Kramer (Deactivated)):

Reorganize developer guides to make onboarding (internal and open source) easierRenzo Lucioni (Deactivated)Colin Fredericks dfriedmanR (Deactivated)Unify the old closed source wiki (old confluence), the open source wiki (this confluence), the github wiki, and the read the docs developer guides (source is here: https://github.com/edx/edx-platform/tree/master/docs/en_us/developers/source). Probably centralizing on the Github wiki (with links to the open source wiki as needed) since the Github wiki is the first place most contributors will look.
Scripts for uploading course vid transcripts on Transifex, & downloading them back.Sarina Canelake (Unlicensed) Would involve: scraping a course's assets for transcripts; figuring out how to get the text from the SRT files extracted and put into .po files (? or maybe there's another solution) for upload to Transifex (it its own course-specific project); downloading translated assets from transifex and reassembling into SRT files; uploading the new transcripts into existing course content. Target is to get the transcripts from the DemoX course translated.
Docker.IO containers for edX devstack and fullstackAli Hasan

Nate Aune

stv

TJ Keemon

Fred Smith (Deactivated)

ClintonB (Deactivated)

Xavier Antoviaque

Replace the Vagrant VirtualBox support with Docker.IO. Compared to VirtualBox, Docker is much more lightweight and it offers native performance for the app. Check https://docker.io for info about docker. As a stretch goal, I'd like to add setting up a clustered Docker.IO setup to allow dev. to have closer environment to production. This is especially doable with Docker because of it's relatively low memory consumption.

Note from Nate Aune: We've already built some Open edX Docker images (edx-lite and edx-full), but they're all-in-one, and we'd like to split the services into different images to have better separation between application and database, for example. Here are the instructions on how these images were created using Ansible. We started working on a multi-container Docker in this docker_multi_release branch of our forked configuration repo just MongoDB and MySQL for now.

Could possibly use Fig from Orchard (now owned by Docker) to handle the linking of different containers.

If you don't already have Docker installed on your computer, and you have a Mac or Windows machine, the easiest way to get it installed is to use boot2docker.

Upgrade Django wikiSarina Canelake (Unlicensed) 

We haven't updated our fork of https://github.com/django-wiki/django-wiki (https://github.com/edx/django-wiki) since forever - Adam Palay (Deactivated) is that correct? Do we have a sense of how much work this would be?

Adam Palay (Deactivated): yeah since at least 2012. I know we'd made a few changes to our own fork, so we'd have to make sure they were compatible with new versions. But yeah, updating would be great.

Use libsass instead of sass (remove ruby dependency in edx-platform)Dave Ormsbee (Deactivated)

btalbotR (Deactivated)

ClintonB (Deactivated)

Sass is indispensable to the design team, but the way we currently use it requires us to run a ruby process as part of edx-platform. Using libsass would allow us to remove that from our stack and give us dramatically faster compilation of stylesheets (some benchmarks show a 20x+ improvement there). Some wrinkles that would have to be resolved:

  1. We use bourbon and neat (we can probably just move these to vendor includes instead of running the programs).
  2. We're currently on Sass 3.3.5, Bourbon 4.0.2, Neat 1.6.0 – libsass support for 3.3 features is spotty, bourbon would have to be pulled down to 3.2 (which was meant as a libsass compatible bridge release to 4.0), and I'm not sure what the situation with neat is. We'd have to verify that we weren't using features that would break anything, or find workarounds if we did.
  3. The way that the asset pipeline/watching happens would have to be adjusted. The edX UX team has some thoughts on this.

 

Pluggable settings views in StudioAndy Armstrong (Deactivated) Use Stevedore to make the list of Studio settings view be pluggable. For a demo, consider making an ORA 2 settings page.
Implement first class featuresAndy Armstrong (Deactivated) Use Stevedore to make 'feature' as a first class extension. Features should be implemented as database backed configurations so that they can be enabled and disabled. Allow features to declare their constituent parts (xblocks, plugins, Django apps etc) and have them all enable and disable together. Add an admin page for managing features. For a demo, consider making ORA 2, discussions etc into features.
Death to lettuce. All hail bok choy.JesseZ (Deactivated)

JesseZ (Deactivated), clytwynecR (Deactivated)

David Adams

We have two sets of selenium-based acceptance tests: the legacy tests built on lettuce and the more reliable tests built on bok-choy. We will be working on converting all the remaining lettuce tests to bok-choy.

If you want to learn (or improve your skills at) bok-choy or to really dig into a particular feature by helping to convert its tests, we welcome you to join our team! See this page for more details.

You could also make the xblock-sdk tests use bok-choy properly, as a warmup exercise.

XModule to XBlock portingDave Ormsbee (Deactivated)

Nimisha Asthagiri (Deactivated),

stv, dfriedmanR (Deactivated)

Julia Eskew (Deactivated), benweeksR (Unlicensed)

XBlocks can have children! Let's start moving more XModules to be XBlocks! For each particular XModule, this would mean:

  • Removing XModule as one of the base classes it inherits from.
  • Making sure they use the runtime properly.
  • (optional) Extract it from edx-platform (e.g. templates, JS dependencies)
  • (optional) Change it to obey XBlock conventions about not doing work in the __init__ (particularly capa and videos).

Some example XModules to target:

  • (easy): purely structural blocks that don't really use the runtime much: Sequence, Chapter, etc.
  • (intermediate): capa, which already has had a lot of the underlying work done so that Google's runtime can make use of it.
  • (hard): video module, which has a lot of dependencies on things in platform.

Calen Pennington (Deactivated): Please add anything you think pertinent.

Note: Studio's lack of support for editing non-xmodule xblocks will be a major impediment to merging any of these ports.

Travis.CI for edx-platformJesseZ (Deactivated) If we can get around the edx-platform environment taking so long to build from scratch we might be able to switch to Travis for CI. I've outlined a possible approach to investigate: pip-accel / upload to S3 / build matrix. See this page for details, comments and thoughts welcome.
Studio Move FeatureMarco Morales (Deactivated)Marko Jevtic (Deactivated)The ability to relocate a studio component to another Unit/Container page. From a new action on each component, a Move modal lets you select another valid location. (sketch - https://www.dropbox.com/s/s03u9sq5af3cfcw/Studio%20-Move.png?dl=0, https://www.dropbox.com/s/w7vvun78t6sdni5/Studio%20-Move%20-Selected.png?dl=0)
Add field validation to XBlockChristinaR (Deactivated) As of https://github.com/edx/edx-platform/pull/5710, Studio will display validation messages returned by xblocks. The XBlock validate method currently just returns an empty Validation object. A reasonable default implementation would be to validate the fields on the xblocks (make sure they are the expected type, within acceptable ranges, etc.). If you are interested in working on this, talk to dmitchellR (Deactivated) who has a lot of ideas about default validation.
Improve editors in Studio Advanced SettingsChristinaR (Deactivated)Braden MacDonaldIntroduce the editors we have in component settings into Advanced Settings (leaving the generic JSON editor for field types that we don't have better editors for). See edx-/edx-platform/cms/static/js/views/metadata.js.
Get static code analysis into quality processBen Patterson (Deactivated)Ben Patterson (Deactivated)Take a tool like radon (or its enforcer, xenon) and provide static code analysis on builds.
Automate testing of devstack spin-upsBen Patterson (Deactivated) 

Build a CI pipeline for devstack. Goals: to test on a regular basis (at least once/day, at most as many commits as possible of edx/edx-platform and edx/configuration):

  • Creating a devstack instance from scratch
  • Re-provisioning on a longer-running devstack instance

Should also run smoke tests against the devstack target once provisioning completes, with some retrofitting on the test_build_server role in the configuration repo.

Note: due to virtualization limitations, this cannot be done on EC2 completely end-to-end; however, portions of it (such as the ansible provisioning) can.

 

Cassandra backend for Student ModuleJim Abramson (Deactivated)rochaR (Deactivated)

Implement Cassandra as a significantly more scalable backend for the XBlock user_state scope in the LMS runtime. The expected integration style is to implement a new CassandraKeyValueStore, replacing the DjangoKeyValueStore presently being used.

In terms of data model, this sketches out a proposed starting point:

  • Row Key: Student + Course Run
  • Column Keys: Module Type + Usage Key (Module State Key) + Timestamp
  • Column Value: UTF8 String (JSON serialized state)
MathJax -> KaTeXJim Abramson (Deactivated)davorino (Deactivated)

KaTeX is a new math typesetting library built by Khan Academy engineers, which purports to outperform MathJax by up to 20-30x (ex. http://jsperf.com/katex-vs-mathjax).

KaTeX as yet only supports a subset of MathJax functions and is therefore not a drop-in replacement for existing courses. As a mitigation we could provide a course-level switch where the author/admin can choose between the two libraries.

XBlock servicesRichard Machielse (Unlicensed)

Richard Machielse (Unlicensed)

S (Deactivated)

User and Course services in XBlock to provide details about the current user and course
XBlock editing in StudioAndy Armstrong (Deactivated)

steveR (Deactivated)

ChristinaR (Deactivated)

Xavier Antoviaque

Rework Studio's editing framework so that it is not dependent upon xmodule descriptors but can work for any arbitrary xblock. Some thoughts:

  • Allow xblocks to declare that they wish to support this new style of editing (don't break existing editors)
  • Have Studio render the Save and Cancel buttons and have Save call a method on the xblock
  • Allow an xblock to declare which tabs it wishes to show and Studio will ask the xblock to render each one when needed
  • Provide a default "Settings" tab view (in Studio only, initially) that is metadata-driven
    • Allow an xblock to opt in to the "Settings" tab and indicate which fields it would like to have shown.


Out of scope thoughts for the longer term:

  • Have a separate repo for an xblock-editing framework (or maybe more generically a model-driven editing framework)
    • Studio would use this framework, but then so could other runtimes
  • Have Stevedore entry points so that any package can register new xblock field type editors
Concurrent course editing supportSteven Vergenz (Unlicensed) 

Add the ability to either:

a) Replicate the state of a course to other instances of edX, and merge changes from other instances. This would allow each member of a team of developers to have his/her own devstack, and can thus make edits to a course without fear of overwriting another team member's drafts/changes. Perhaps some sort of git integration with the course import/export tool?

b) Indicate what users are currently editing a course page, preferably along with the ability to see their changes in real-time in the draft view. This could allow out-of-band communication between team members to make sure no toes are stepped on.

If path a) is taken, this could tie in with the Studio history viewer proposed by dmitchellR (Deactivated).

Learner Account pagefrancesR (Deactivated)

Marco Morales (Deactivated)

Diana Huang

This is a two part project:

  1. Create a merge-able PR to move the LMS user account settings to a dedicated page, accessed from the User drop-down menu
  2. Getting creative with the new user account settings page
Break, Record, DocumentMolly de Blanc Take a part of the install or setup process, attempt to break it, and write documentation.
Use RequireJS Optimizer in the LMSwillR (Deactivated)

Renzo Lucioni (Deactivated)

Alasdair Swan (Deactivated)

Studio is already using RequireJS Optimizer. This would extend that work to the LMS, with the end goal of converting at least one LMS page to RequireJS.
Cognii Virtual Learning AssistantDee 

Develop Xblock and LTI plugins to integrate Cognii's natural language processing assessment API into Open EdX platform. The main tasks include:

  1. Get the open edX system working on Amazon AWS (using the AMI)
  2. Implement the Xblock or LTI plugin for external assessment service
Login & Register combined into "Sign in" pageawaldropR (Deactivated) 
  1. Combine the existing pages into a single 2 Text field form.
  2. Build off Learner Account page that francesR (Deactivated) is leading, to create a progressive registration form that will contain all the extra fields currently on our registration page.

 

x2go (edX in a box)Nikhil Dubbaka (Deactivated)Brad Smith (Akamai), Omar Al-Ithawi (QRF)
  1. make deployment easy using ansible + git
  2. box as wireless access point, configuration in ansible

rePatcha XBlock

http://repatcha.org/

https://github.com/TechNikh/xblock_repatcha

Nikhil Dubbaka (Deactivated) 
  1. needs third party auth - github
  2. add short text field to Annotator.js
  3. vote up/down a patch

 

 

Facilitators/mentors (Thursday)

In addition to working on projects, we'll need a few engineers interested in being facilitators / mentors for the Hackathon. You don't have to do this the whole time! But if you'd be willing to spend 1-2 hours of hackathon day 1 walking around to different groups, making sure people are properly set up and focused, please put your name here. Sarina Canelake (Unlicensed) will coordinate with everyone to make sure that we have everyone spaced out and that everyone also gets plenty of time to hack!

  • Sarina
  • DB