As I am approaching the end of my time at King’s College London, I have to write a BSc project. In my case, I decided to write an Android application that interfaces with Moodle and a timetabling solution, to give students a nice client when they forgot to download their slides, take notes and interact with fellow students. As my work might someday be useful to someone, I thought I’d just start writing about it as it goes along. Most of the parts of what will be written here are parts of my report, so please do excuse me if they seem a bit formal. This post is the first of two that outline my considerations before I started developing.
Building on top of an existing project
In today’s globalised and internet-enabled world, people are starting and abandoning projects all the time. By nature, developers are builders and our first instinct is to start from scratch no matter what we do. However, this leads to massive time-wasting, creating the same software over and over again without even taking the time to see what is already out there. Re-inventing the wheel is not productive and should be avoided as much as possible.
As the open-source movement has exploded in the past couple of years, there are many projects available whose authors are more than happy for you to hack around with their existing source code, as long as they are attributed the credit where appropriate. For this reason, I owed it to the credibility of the project to find out if there was an existing basis that I could build my application on top of and my search was fruitful.
As my background research pointed out, at the start of my project there were two Android applications available that properly integrated with Moodle. One of them turned out to be fully open-sourced and its main developer more than happy to help out.
Moodle-for-Android (initial project)
Moodle-for-Android is a project that was started by a group of Monash IT students in collaboration with Yew Cheung International School Puxi Campus and presents very similar features to my initial project specifications
The application is working, although a little buggy and currently integrates the following functionality
Authenticating a user through Moodle
The application provides a way for the user to authenticate to the correct Moodle instance, obtains a token and uses it to authenticate its requests for information at later stages. This authentication method is also referred to as oAuth.
Obtaining and displaying the user’s subscribed courses
Once the user is authenticated, he / she has access to a list of courses they are enrolled in through Moodle.
Obtaining the documents related to the user’s courses
The user has access to all of the documents that are uploaded on Moodle, related to the courses they are enrolled in.
Offline storage of documents
The user can decide to download his / her course documents and store them for offline reference. We will be performing a full offline synchronization, meaning that the application checks for updates of documents on the server and re-downloads them when appropriate.
Automatic downloading of documents
The user has a possibility to specify that the application should (or should not) download all of the course documents accessible to it, automatically, for offline usage.
Showing course assignment details and deadlines
The user has access to all of the course assignments that are present on Moodle, related to the courses they are enrolled in. We will only be handling showing the course assignments, meaning the user cannot use any real interaction (like uploading a document).
Providing web-access to forums
Direct access to the web-forums from within the application is not available. However, a list of the existing forums (available to the user on the Moodle platform) is provided, but with web links to them. This enables the user to access these forums on the browser of his / her mobile device (it does mean the user has to re-authenticate him / herself to Moodle within the browser).