Excellent question, the fact that the decorator passes in the default_context doesn't mean it should fail if removed. In other words, the `None` default value is just a way to assure a pattern in which the decorator is optional for the success of the view, even if the template actually wont correctly render without it. Admittedly this is futile for a couple of views that access values from the `default_context` parameter, so we might just as well remove the `None` and by that the ability from the decorator to be optional. Do you agree?

That said, I guess this pretty easily shows that the decorator isn't t a perfect tool for implementing a "base data structure" for views -- if you ask me I'd rather port those views over to be class based to have more leverage in composition. Something like a `ProductVersionView` that automatically provides the current version and product to both, the view implementation and the template context. For that purpose Django 1.5 started to pass in the `view` context variable even: https://docs.djangoproject.com/en/dev/releases/1.5/#new-view-variable-in-class-based-views-context