Firmware is the code that you need to edit and then upload to your controller, such as the Arduino board.
There are several types or brands of firmware. I used Sprinter on my first as I found that was very easy to get to work.
On my second printer I use Marlin. Marlin is a little bit more trickier than Sprinter, but apparently it is meant to be a better firmware. It is meant to make better prints. I do like it. You can get it from here.