A namespace consists of a name, a short and a long description, commands and command groups.
The namespace also has a property saying whether it has boilerplates related to it. This is so that we know which namespaces to inject commands and command groups related to boilerplates in.
Boilerplates can have namespace tags. While initializing, the tooling system registers all command, command group and namespace providers, it also discover all boilerplates. If there are any boilerplate with a namespace that has not been previously provided, the command manager will create a namespace and mark it as a namespace that has boilerplates.