You are not required to use this widget framework, you can always just build your own widgets how you want to, but the widget framework is how the out-of the-box widgets of the API are being built.
There is some great documentation in the SDK on how to create your own custom widgets, and a great sample you can review as well.
You can find the sample code used in this videol on github. It has a couple of fixes not in the video, like a rendundant use of
renderable() in the Widget View Model.