Skip to main content

Maintaining and Updating a Custom Learning Management System, Introduction

3 min read

The past few years I have been getting more involved with a web development project at work. I find it interesting to note that ever since the advent of the world wide web I have been dabbling in web development, at some points in time more "officially" than others.  Lately it has become an official component of my work as the person who had built and maintained a custom learning management system (LMS) at work retired and I have taken over the responsibility of maintaining and updating the system.  I've had a lot of thoughts about this, and decided it could be therapeutic to write them here.  Maybe others will find them useful, or triggering, depending, or find them helpful like I have found many the web development blog myself.

Philosophically and ethically, I am a firm believer that educators should have complete control over the technology they use in the classroom.  What this looks like may vary of course, and this doesn't mean that all educators must be software developers, but it frustrates me when we make decisions that affect students not because they are the best we can offer the students, but because they are the best we can offer within the limitations of the commercial software we have come to depend on.  Suffice it to say, when I was interviewing for teaching positions, the fact that the unit I am not part of supported a home-grown LMS piqued my interest and was definitely a perk for me.


I’m not quite sure if there will be a super organized structure to these posts, but my plan is to reflect chronologically as a new faculty member coming in as a user of the system, working with it to develop content for a class, the challenges I ran into and some of the attempts I made to develop additional functionality on top of the system without being able to modify the system itself, to attempts at developing parallel systems that could work in tandem, and finally to my current attempts at wrestling with a legacy code base and figuring out how best to bring the system up-to-date while developing new features and improvements with the realization that I can’t overall/replace all ~200k lines of existing code in one Summer, and yet I don’t want the updates I’m working on to be constrained by the structure of the original system.  These posts will likely contain both technical and pedagogical content as well as reflective rambling/rants at times.  I hope that they bring some organization to my own thoughts, and if they help others in some way too that is a bonus.