Develop custom Firmware with QGC's Firmware Plugin

Hello everyone.
I am currently controlling a vehicle of type [MAV_TYPE_SURFACE_BOAT] using QGroundControl.
I’d like to implement my own custom firmware to add new features and adjust/improve some that already exist. I can not use none of the available firmware because it is not compatible with my vehicle.
Had anyone already done something like this? Tips and where to begin answers would be really appreciated.

@vlad1k I added support for boats in sitl_gazebo, which is running something similar to the rover airframe:

Hi @Jaeyoung-Lim. Thank you for your answer.
My question here is not really about how to add support for a boat but how to implement my own Firmware to be used by QGroundControl’s Firmware Plugin.
I want to add some buttons and features to facilitate the navigation and mission planning (and also display my own logo similarly to ArduPilot/PX4).

@vlad1k UI elements are incorporated with qml files located in resources/qgroundcontrl.qrc/qml files in the qgroundcontrol build if you want to change them.