We have a bunch of product names that consist of 2+ words as namespaces without _ between them:
- cloudevents
- webengine
- cosmosdb
- opentracing
...
they look fine in lowercase (cloudevents.event_id), but are not friendly to code generation.
E.g. Java and .NET would use CloudEvents.CLOUDEVENTS_EVENT_ID or CloudEvents.EventId constants.
Also, since code generation removes underscores at least for some languages, we should not allow to define namespaces/names that differ in _ only: e.g. cloud_events cannot be defined to avoid collision with cloudevents in generated code.