In educational technology we don't hear enough from the people behind the scenes, developing the platform, building courses.
There seems to be some inverse relationship between the folks most out front, and those who actually write the code.
That is why I’m so happy that David Ormsbee, an architect and developer at edX, is willing to engage in a discussion in this space.
Note: Dave’s title is “architect”, which in the edX context - and most startups - means that he works with a team to both design the platforms and the user experience, and also gets his hands dirty translating these design into code. So Dave cross-walks between the talking/planning/visioning roles and the doing/coding tasks.
In my experience the programmers, engineers, sys admins, developers, and architects that I know are somewhat reluctant to do what Dave has done below. To be willing to publicly share what they know outside of the company or university, to share their knowledge with a mixed (technical and non-technical) crowd.
This is partly because architects and engineers and developers are busy folks.
It may be because this sort of public sharing might not have a big career upside, but the career downsides of sharing something that management does not want shared are self-evident.
It also may be that they are not often asked to speak for the company or the university. I think, however, that we should all make more efforts to open up space for our more technical colleagues who are not in explicitly public or communications roles to interact with our communities.
So without further introduction, here are some of my questions and David’s answers about the technology that runs the edX platform:
Question 1. How did you end up a developer for edX? What has been your career path?
I learned about MITx through our chief scientist Piotr Mitros. I was involved in the initial prototype development and moved over to edX when the joint initiative with Harvard was announced. I've been doing professional development work for over a decade, starting at web consulting companies and later moving to startups focusing on mobile technology and education.
Question 2. How many developers does edX have? What languages do you work in? How is the work organized?
We have around 35 developers, including designers. Our courseware application code is primarily Python, with a little bit of Ruby. On the front-end, we make use of both Coffeescript and Sass. We use Puppet for infrastructure management, though we're moving towards Ansible. The public marketing site uses Drupal.
Question 3. Can you help us understand how the architecture of the edX platform compares to that of other learning management systems? Why would a school want to put its open online courses on the edX platform as compared to using the existing campus LMS, such as Blackboard, Moodle, Canvas, D2L, Sakai, etc?
We have an unusually rich set of problem types in our courseware, covering things like mathematical expressions, chemical equations, circuit simulation, code submission, etc. When you're running a course for tens of thousands of students, you lean heavily on machine gradable exercises. Because of that, we needed to make those exercises as powerful as possible, and to allow new types of instruction and assessment to be easily built.
The courseware component architecture that edX uses is XModule, though we've been gradually transitioning to a new system called XBlock. XModules (and their successor XBlocks) are basically mini-web applications that define their own handlers and views and cooperatively build a web page. When you see a course rendered in edX, you're seeing a tree of these XModules/XBlocks connected by parent/child relationships, from the course itself down to the individual videos and problems -- it's turtles, turtles, all the way down. That means that developers who are creating new course content types are not limited to the leaf nodes (problems, videos, etc.), but can also create new sequence and navigational container types.
Question 4. What are the big feature or usability projects that you and the edX developers are working on now? What big changes and updates can we expect to see in the platform in the next 12 months? What would you like to see improved in the edX platform?
Much of the work that's been going on lately has been infrastructure related, and not directly student visible. The analytics folks have been working on a new pipeline architecture to do data analysis. Our second generation courseware component architecture (XBlock) has been mostly implemented. There's also been a great deal of work on internationalization, making the system easier to stand up, and improving the system for course staff.
The really exciting thing for me personally is that we're nearing the release of a couple of key technologies that will drastically improve the way we create and manage course content under the hood. I think the next year will build on that, bringing significant improvements to the courseware and a wide variety of new XBlocks created both by edX and third parties.
In terms of future improvements, I would really like to see a simplification of the core platform, better forums, and a re-architecture of how we record and calculate grades (that last one is a long story, and a bit of a personal obsession).
What would you like to know from David about the edX platform?
What do you make of what David is saying about the edX platform? Can any of you help us understand where edX is in relation to other learning platforms? Can any of you help us understand why (or if) it is important for our community to share this sort of information?
Would any developer from Coursera, Udacity, Instructure, D2L, Lore, Schoology, Blackboard, Moodle, OpenClass, LearningStudio, or Sakai (who am I missing?) like to respond to the same set of questions that David from edX was willing to answer?
How can we carve out a space where the non-developer / less-techie higher ed community can hear from and learn from our more technical colleagues?