Developing Better Canvas Integrations with WordPress
I've written previously about an innovation grant I was involved with awarded by Instructure to develop an open source plugin that bridges Canvas to WordPress. There are various LTI integrations for WordPress available that are supposed to do a small piece of this and, for lack of mincing words here, they all suck and often don't work. The plugin referenced on the EduAppCenter is extremely old and narrowly focused on bringing users from Canvas in as authors on a blog. We're thinking broader in that we know there are educators out there that have a lot of their course content in Canvas from Announcements and Assignments to Discussion Threads. For many the idea of utilizing WordPress to take advantage of better visual styling for a course site, leveraging the wide array of WordPress plugins for additional functionality in the course, and building a truly open course outside of the LMS is appealing, but daunting because of the feeling of having to recreate the wheel of all of that content that lives in Canvas. This shouldn't have to be zero sum game where either platform has to "win" and so the goal of this development will be to bring in existing course content seamlessly via the Canvas API and make it dead simple for instructors and students to interact with that course content both within WordPress and in Canvas.
Along the way to developing this I plan to write regular updates here not only to keep personal track of where I am but also in the hopes that I can get feedback from the folks in my network. What speaks to you? What do you love about this approach? What would you change? As you follow along I hope you'll feel free to jump in the comments as this work develops to provide your insight. UMW is just one of many institutions now using Canvas and the more accessible this plugin is to a broader audience the better it will be.
Tim, why the hell aren't you writing this as a true LTI and limiting yourself to Canvas?
That's actually a great question and the easiest answer is that this is the low-hanging fruit. Working with the LTI standards is a complex beast and for the purposes of this grant we had a narrow focus with limited development funds to make it happen. There's no reason it can't be expanded to other software in the future, but it's honestly not where my expertise is and something I'd rather look at after we've got a solid 1.0 of the plugin released.
I met today with my conspirators on the project, Mary Kayler and Lisa Ames, and we began mapping out the development. Lisa put out a survey to our faculty to find out the features that they'd want to see in WordPress from Canvas. The results (ordered by popularity) were as follows:
- Course Roster
While we can't tackle everything and some components are better served by Canvas natively (like grading and taking quizzes) I think there's a lot of great stuff here and my approach will be 3 separate phases (that are likely to co-mingle to some extent I'm sure):
Announcements, Course Rosters, and Pages are going to be easier to implement because of the one-way interaction. The content already exists in Canvas and the idea is that it would be pulled in via API to WordPress allowing instructors to dedicate a page or pages to that content and have it seamlessly live in the external course site as well. So I'll be tackling those first along with the somewhat complex oAuth piece (gotta know who the instructor is within the plugin in order to make API calls for them).
Files and Modules. Still a mostly one-way interaction with the assumption these things live in Canvas already, but the display of them could be an interesting design challenge here. With Modules the particular challenge will be how to approach embedding this content since Canvas displays them as a linear progression of disparate objects within the course. But I have a few ideas on how to get at that.
Assignments and Discussions. By far the most requested and also the most complex to implement. This is where I think WordPress could and should also talk to Canvas to write data. Students should be able to author posts and connect that to an assignment as a submission. Viewing and participating in discussion threads from Canvas should be as easy as reading and responding to a blog post. That's the dream, but it requires I now have authenticated students in the site with Canvas credentials and writing that information properly with the API to the Canvas course. So I saved the hardest for last.
I'm tagging this and all future posts on the subject with canvas-plugin so you can follow along with development as things progress. As always I welcome thoughts from anyone and everyone. This is going to be a fun project with (I believe) some pretty large implications for how we view the supposed "walled garden" of the LMS and design software that promotes an open exchange outside of it in addition to within.