How can I start to develop the Pi MusicBox?


I am interested in adding features in the Pi MusicBox. Could someone explain to me how one can go from modifying the code to testing it?

If I modify the code on, is there a faster way to test it than building the image, writing it on an sd-card, and physically inserting the card in my pi? For example, can I load the image over the network? Or can I run the image on a virtual machine?

Thank you for your advice!

To be more specific, I am interested in having the devs explain their typical development workflow, so that I can get inspired from their approach.

There isn’t really a good way with the project in its current state. I did have something better set up for the transition to jessie (!) but I’ve not worked on any of that for a long, long time. No idea what state that’s in.

The best current setup depends on exactly what you are working on but I would not recommend rebuilding the image during your development, it’s very slow and usually unnecessary. There are no good emulation options but mounting your development files in a musicbox chroot/container is an option. There is a chroot based script already in the repo. If you are working on something startup or hardware specific then there’s no substitute for running on an actual raspberry pi. I sometimes setup sshfs bind mounts from my dev machine if working with a small number of files. Booting from a network image would be a lot better but I never spent any time getting that working. I’m not sure if there will be any Wheezy related issues there. I’m hoping to dust off the project over the holidays, it has been sadly neglected.

I don’t really know anything about Musicbox, but could Docker help here? It caches at each step of building an image, so if you make a change, you don’t have to start from scratch each time. You can also mount files into a container, which makes development easier.

To be honest, not really. For me, The main advantage of using a container (over chroot) is the ability to boot the image almost like a regular system, like you can with systemd-nspawn. That’s a huge help. It also supports filesystem layers with a little work, you just need to be explicit. I did have a setup using docker but it didn’t really bring anything that made it worth having to learn about docker files. If someone comes up with a nice easy setup then I’m willing to give it another go.