This page describes the official mobile apps being developed by Moodle HQ.
- 1 Rationale for mobile apps
- 2 General approach
- 3 Licensing
- 4 Roadmap
- 4.1 Moodle app 1.0
- 4.2 Future versions
- 5 Internationalization
- 6 See also
Rationale for mobile apps
Mobile access is clearly becoming a preferred option for most web services on the internet, and Moodle sites are no exception.
As an application developer, there are four main ways we can tackle this problem:
1. Mobile-optimised web
Mobile platforms have web browsers, so Moodle works immediately without any modification. However, an interface designed for a computer does not always work perfectly on a small screen. Some solutions here are themes designed for small screens, such as MyMobile, others use more structured solutions in core UCLA mobile framework.
- Runs well on all platforms,
- easier to develop by anyone in the community,
- theme designers can have more options
- Doesn't take advantage of mobile features,
- doesn't work offline
2. HTML5 application
HTML5 introduces new features that allow the web to allow web sites to behave more like native apps. Good examples of these are the Google Apps, which really behave like apps, including offline access to data.
- Runs well on most platforms,
- no special client required,
- can cache data offline
- Difficult to develop properly,
- requires huge core changes to Moodle,
- HTML5 still doesn't have the full performance/features of native apps
3. Native mobile apps
Apps are still the predominant paradigm for mobile development, and have a number of features that make them attractive. There are already a number of apps out there developed by the community (eg mTouch, mBot etc) but the problem with most of them is that they rely on "screen scraping" the web interface, which means they can't work offline and don't add many features beyond the basic web interface.
The opportunity exists to create new mobile apps based on the secure web services functionality in Moodle 2.0 and later.
- Stable platforms.
- Easier to develop.
- Full use of mobile functionality.
- High security.
- No limitations on functionality.
- Need to develop each client independently.
4. Native mobile apps (cross-platform compiled)
We have looked at cross-platform development frameworks (Airplay SDK, Appcelerator Titanium, Corona SDK, Flash Builder 4.5) producing native code for various mobile platforms.
- All the benefits of native apps (above)
- Can generate iPhone / Android apps at the same time and keep them synchronized.
- Debugging is often not as pleasant than on native SDK
- Missing features, eg push notification (even though some framework allow you to write Objective-C / Java code in plugins)
- Dependent on an external company (price, features ...)
Based on the rationale above, we (core developers at Moodle HQ) have decided to focus on writing native mobile apps for now to start providing solutions. The apps will be called "Moodle", and will use the web services infrastructure developed in Moodle 2.x to communicate securely and consistently with Moodle sites. Note that the app will not work with a Moodle site until the administrator of the Moodle site has enabled mobile web services.
We will be tackling the mobile platforms in this order:
- iPhone (to get the small interface right and help a large number of users)
- Android (by hiring an Android developer to copy the iPhone interface)
- iPad (as an upgrade to the iPhone app, just to get a new HD interface right for tablets)
- Android tablets (by hiring an Android developer to copy the iPhone interface)
- Other platforms (perhaps Blackberry) depending on demand
So that we can deliver something useful in a short period of time, we have decided to avoid going for a full replication of Moodle functionality and instead to focus on a simple task-based approach to provide the most-wanted features in an interface that is as simple as possible.
We have been holding public brainstorming sessions to think about and decide the tasks that would be best to start with. See the Roadmap below for more details.
The iPhone/Pad apps will be free from the iTunes app store (with FULL functionality). However the source code will be owned by Moodle Pty Ltd and will not be initially distributed under the GPL. One possibility is that we will help produce custom-branded versions of the app for specific Moodle institutions that want it.
The Android apps will definitely be GPL and free for download and modification by other developers. This is in keeping with the philosophy of the Android platform and will allow the community to innovate on that platform.
Our overall philosophy is to release early and release often. The app releases will not be tied to Moodle releases, as they can automatically query the Moodle site to find out what services are supported and hide/show buttons as necessary.
Full details about the progress of each feature can be found in the MOBILE tracker.
Moodle app 1.0
Requires Moodle 2.1 (released 1st July 2011).
Functionalities (tasks) are displayed with icons on the home page of the app. A button allows you to configure the app to connect to one or more Moodle sites. Once connected to a site the name of it is displayed at the top.
(In future versions we will add more management of this screen to allow you to arrange the buttons as you prefer, like the Facebook app)
[Settings (also called 'Sites' view) Site settings tracker issue] On the settings page, you can set up and save connection information for one or more Moodle sites. Only one connection is active at a time. The supported operations are:
- add a site (url / username / password)
- edit a site (url / username / password)
- delete a site
- select a site
This functionality allows you to select or capture an image, sound recording or video from your mobile device and quickly post it to your "Private files" area in Moodle.
These files are then easily accessible in the normal Moodle interface whenever you need to insert an image into a forum post, post an assignment or anything else that uses files.
(In future versions this interface will be extended to allow you to post the file directly to specific activities in Moodle, or to update your profile image)
This feature allows you to see all the courses you are enrolled in, and to browse the contact information for all the users in those courses.
- You can see photos and descriptions of all people (according to your capabilities and privacy settings etc)
- If they have phone numbers defined, you can call them or send an SMS with a single click.
- If they have email addresses you can send them an email.
- If Moodle messaging is enabled you can also send a private message.
This feature allows you to choose one of the courses you are enrolled in, and then see an outline of all the resources and activities in the course. You can choose to download all available resources (useful if you are on wifi) or choose a particular compatible resource (eg a pdf, or a HTML file) which will download that particular file and view it. However you download it the file will be stored in a local cache, so that future access (even offline) will still work.
This feature is fairly difficult to develop (even though it sounds simple!) because of the wide range of resources that Moodle supports, so the app functionality may initially be fairly basic.
- see your own grades
- grade assignments
- download all assignments (eg pdfs), grade them offline, send back to students
- Give grades if it doesn't require much effort
- See grades (limited view)
- Ability to add some notes as reasons for non-attendance ("last seen near smoker's corner") AND attendance ("looks sick")
- Save notes with data (and also to Moodle user notes??)
It is mainly a copy of the iPhone messaging design.
Receive a notification
- User receives a notification at any time.
- User chooses to open the notification. Moodle app is launched on the contact discussion screen. This contact discussion screen displays the 30 last message between user and contacts. An option 'see more' is available.
- User can answer (optionally: attach a picture if it is supported by message API). Once the message is sent, the message is displayed on the same screen.
- From a button at the top of this screen, the user can go back to the message list (all users having sent the user a message are listed there).
Send a message
- User launch Moodle app.
- On the Moodle app dashboard user select message icon. It should now be on the message list (or discussion list). The message list displayed the 30 last persons that the user communicated with.
- User selects the 'new message' button. The new message screen is displayed
- User selects 'add contact' icon. The contact screen is displayed. On this screen all contact are listed.
- User wants to send a message to someone who is not in user contact list. User enters name in the search bar. Searchable Moodle users are listed (small profil: fullname, username, city). User selects someone.
- User enters a message and sends it. Contact discussion screen is displayed and the sent message is listed.
- see my activities/assignements deadlines, specially the close ones
- See new submissions (teacher)
- See activities/assignements deadlines, with number of missing submissions
community chat / twitter
Live poll activity / audience feedback
The application will be developed in English but the code will support internationalization from scratch. See the tracker issue about internationalization.