Hacking on FirefoxOS’s music app.

If you're not aware, Mozilla, the non-profit behind Firefox, has their own smartphone and mobile Operating System, FirefoxOS. I got one of the phones at Mozfest, and ever since, I've been wanting to hack it to make it work exactly the way I want it. It's open source, and all its apps are written in technologies I'm familiar with, like JavaScript and HTML5, which makes that possible!

It's pretty neat, but certain things could use improvement – for example its music app doesn't support user-defined playlists yet. I thought (and I think I was right!) that it would be a big challenge, but a good and achievable one.

Of course, I had never hacked on this app before, so I spent a considerable amount of time reading and following the source code and trying to figure out how everything worked… which was a bit of a headache, but in time I sort of got the hang of it!

Figuring out how an app you've never looked at before works is sort of like a puzzle: you need to put the pieces together at least until you have some idea what the picture looks like. Understanding how the various views pass data to each other, how they talk to the database, and how events are passed to them.

Another thing that was interesting (and very valuable) to play with was IndexedDB. It's the first object-oriented database I've used so it was difficult to adjust to at first. However, I'm learning a bit about it thanks to this project, which is awesome!

So far, I have been able to make the app ask for a playlist name when you long press a song:


And then your custom playlists appear on the bottom of the playlists list – not very pretty at the moment, but I'm working on that part!


In closing, it just goes to show once more how much you can learn by spending some time on an open source project. Being able to hack my phone's core apps and improve them or change them to my liking is also really amazing! I hope I'll be able to finish the playlist feature and do more awesome things in the future.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.