BSU Appathon 2012 Postmortem - Learning Assistant
This weekend (March 2-4, 2012), I competed in the Boise State University Appathon. This is a 48 hour competitive coding contest, wherein teams are tasked to create either a web app or a mobile app that has some relation to student life. Our team chose to create an alternative to Blackboard (which is the LMS that is used by BSU). The general feeling that I've gathered from students on campus is that Blackboard is a horrible kludgy tool that has no business being deployed in any production environments. I tend to agree with that statement.
Being that we only had 48 hours to build the application, we had to make some sacrifices. As such, we have not implemented the entire featureset of Blackboard. That said, I believe the feature set that we have implemented so far is enough of a starting point that the system could be deployed in production without much of a problem.
The project is called Learning Assistant, and it's based on Open Atrium.
The challenges that I identified as part of this contest are as follows:
- Time constraints (there's never enough time - this is not something unique to this contest)
- Team experience (I've been using Drupal for over three years now, but the other three people on my team had never touched Drupal before. I anticipated spending a large portion of the time in the competition getting people up to speed with Drupal concepts)
- Standing out as a unique app (While having an alternative to Blackboard is certainly appealing, there's nothing that particularly sets that apart from other apps in the competition)
At first, we thought about building this app with Drupal 7. After looking into it a little bit, we decided that building a Spaces + Features + OG project in Drupal 7 is probably not a good idea at this point, mostly due to the fact that Spaces is not quite ready for Drupal 7 yet (to be fair, it does have a -dev release, but I didn't feel comfortable relying on that for a competition with such tight time constraints). I decided that Open Atrium would be a good starting point for the application. This saved a lot of work in configuring OG, Spaces, etc.
A lot of time was spent with the String Overrides module. This was a quick and easy way for the other team members to jump in and start contributing to the project - String Overrides are pretty easy to explain (for the most part). This also served as a good way to introduce the Drupal translation system, and how the strings that are on the page aren't necessarily the strings that have to be overridden (for instance, if the strings have replacement patterns inside). It didn't take long for them to start digging through the source and finding the correct strings to substitute.
The main things that we renamed were the Blog feature (which was renamed to Announcements), Groups (which were renamed to classes), and all of the role names (manager became instructor, and group members became students).
So far, not too complicated.
The idea was to grab a bunch of the pre-packaged features for Open Atrium and drop them into place. We were particularly interested in Atrium Folders, OA OpenTok Video chat, and OA Group Links. Unfortunately, none of those features functioned as intended. Because of this, we created our own Group Link feature, as well as a Course Files feature. These were pretty quick to make, and were largely based on the Imageboard feature tutorial in the Open Atrium documentation.
The features that we ended up providing in the application are as follows:
- Dashboard (the stock dashboard feature that ships with Open Atrium)
- Announcements (basically the Blog feature from Open Atrium with a bunch of String Overrides)
- Links (a listing of external links)
- Files (a listing of uploaded files (attached to nodes using the filefield module))
- Gradebook (I'll talk about this more in just a second)
- Student directory (the Member listing feature from Open Atrium with string overrides)
- Mobile access (this is accomplished with the mobile_tools module and the mobile_ginkgo theme)
To me, this was the most technically interesting part of the project because I actually got to write some code (not a lot, but I'll take what I can get). We based this functionality on the gradebook module and the og_gradebook module. Those two modules provided the bulk of the functionality. The only thing I really had to do was write a wrapper around them that enabled Spaces access control. Gradebooks are not currently available in the user space, but we're planning on adding it later. Each class (aka group) gets one gradebook automatically because of og_gradebook. I wrote a small feature that checked that the feature is enabled in the current space, and if so, adds a link to the features menu that points to the appropriate gradebook.
The gradebook module takes care of the access control components of grading. That is, students can only see their own grades, and instructors can see all of the grades.
Since we had a fairly limited amount of time in which to build this and expose three people to the Drupal development process, we didn't do a lot of things in the most technically "pure" fashion. For instance, all of our string overrides are still in the database. To rectify this, we're going to try to get everything exported over the next few weeks and release the project on Drupal.org. Our goal is that a University could install Open Atrium, then install our set of features, and the University would then have a complete learning management solution.
We'd also like to give the project a new coat of paint. We wanted to use Twitter Bootstrap to provide a nice looking, responsive theme, but we didn't have time. We sort of have a fix in place by using the mobile_ginkgo theme for mobile devices, but it's not perfect, and I'd much rather have a responsive theme than two separate themes.
Finally, we'd like to expand the feature set a little bit. While we are currently providing the essentials, Blackboard does provide a LOT of features. I imagine that, since those features exist, somebody is using them. If our project doesn't have similar features, then there will be a barrier to adoption.
If you'd like to play with the application, you are welcome to login at our development site. This site is backed up fairly regularly, so feel free to make changes, respond to assignments, etc.
Student Username: "Clark Kent" (without the quotes) Student Password: "iamsuperman" (without the quotes)
Instructor Username: "Bruce Wayne" (without the quotes) Instructor Password: "thebatman" (without the quotes)
Let me know if you have any suggestions or feedback through my contact form.