Hmm, I just read the linked article more carefully. We may be confusing two separate things here.
There is the
GitHub Flow model you linked, which uses feature branches to do development. Then there is the master/develop
Successful Git Branching Model, which attempts to use a non-default "develop" branch as the base for development.
I assumed you were talking about the second. Interestingly, I just found some comentary on the second article:
A Successful Git Branching Model Considered Harmful. I also found yet another article:
GitFlow Considered Harmful, though it again seems to be describing the second article with master/develop rather than the "GitHub Flow" article in the first link. Perhaps there is some confusion over the name/model.
In GitHub Flow, the master branch should always be
deployable, but that doesn't necessarily mean it's the most recent release. It should be fine to merge in code refactoring, or complete new features that will go into the next version, assuming they've been tested. You don't want to merge in half finished work that will break the build, break existing features, or cause serious security or reliability issues if deployed. Effectively all the experimental work is done on feature branches which are merged in as they are completed. It also opens the possibility for code reviews using pull requests, which might also include automated testing before the merge to master happens.
When I was new to Git and came across the second article, it did sound rather alluring to me. Though now that I've been using Git for a while, it feels like needless complexity that is hard to justify. It's not clear what benefits it actually adds. If the "GitHub Flow" described in the first article is followed correctly, it already protects the master branch from being broken. The question then is what does having an extra "develop" branch really add? My gut feeling is, not much.
Well, you've successfully got me thinking rather deeply on the topic.