An important part of the development process, and especially at the start, is keeping an eye out for issues that could arise. And then just to be one step a head of the game, decided how you will get over those hurdles once they do come.
Hardware failure or loss of data is a constant concern since there are so many variables which make them so likely. It’s actually surprising how few cases of data loss I’ve come across. Between losing a flash drive, or a hard drive dying, or burst pipes destroying my machine, and the many hundreds of other ways which data can be lost, it’s always important to have a back up.
To guard against this risk though I’m using a distributed version control package (Git) to keep my code (and all my course docs) in a number of places, and all synced up at any one time. I have a repository on my laptop, on my desktop, and on my server. My server is hosted with AWS, and so is redundantly backed up by Amazon all over the world. To guard against bad administration of my server, and losing data that way, I have various snapshots of my server which I take once a week and keep for a month or two.
Another unlikely but constant threat is prolonged illness which means I can’t get work done on time. To avoid this I could make some lifestyle changes, like eating more fruit. However, if I do fall ill I have given myself a week at Christmas, and almost three weeks before the deadline which are empty on my Gantt chart. This time could be used to catch up.
An immediate risk is to do with the legal and technical issues around having the browser play an MP3 file. I’m not sure if modern browser support the playing of MP3 encoded audio files. This is an important issue since the majority of people keep their music in that file type. Without the ability for them to be listened to Sound Tiger will be almost useless.
Some quick research tells me that Firefox (my main browser, and so the one I most definitely wanted to support) doesn’t intend to add support for MP3 files. MP3 is a patent encumbered file format, but as is GIF and that’s still supported in every browser. Nevertheless, Mozilla have decided against adding support. There are javascript based tools to bring MP3 playing abilities to Firefox though. That means I’ll have to rely on the support of a third party library.
I’ve given myself a week of research time into the methods of playing audio though, which will including experimenting with that javascript library. If at the end of that week I haven’t been able to work out how to play MP3 files in Firefox I’ll have to withdraw support for it (as a user, and for Sound Tiger). Another way around this would be to attempt to convert the file formats into a more open format on the server, once a user uploads their music.
Ignoring the fact that I might not be able to use MP3 files for a moment, simply playing the files could be considered a risk to the project. The <audio> element, which would be used to avoid using Flash, is still fairly young both in the specification of HTML5 and in support for it with browsers. At any moment, a browser manufacturer could decide to withdraw support for it.
This isn’t very likely however. Other the past few years, most noticeably with Internet Explorer, browser creators are beginning to see that the way forward is a standardised web, rather than a competitive one. More browsers are happier to follow the standards set out by W3C. The likelihood of W3C removing the audio element is almost zero; and even if they did, the committee works so slowly there would be discussion of its removal for many years before anything actually happens.
I thin support for the <audio> element will only get more widespread, rather than revoked.
In the unlikely event, a contingency for this would be to use Flash, however. Despite the fact that I really wanted to avoid using it, as much is said in my project contract, it will be the ultimate fall back. This is also the case for if there is really no way to have Firefox play MP3 files.
All in all, I think those issues aren’t likely to crop up, and if they do I have thought out contingencies which will allow the project to be finished by the deadline.