On other occasions, you may want to modify the program's source code instead. This may be because you want to make big changes such as adding or removing major features, or it may just be that a configuration parameter that you want to change has been hardcoded into the source [which is arguably bad design!].

One of the major advantages of open source software is that the source is open, so this is possible! It's also very straightforward, once you learn how.