We need to change constructors to add new things, like location and properties on DatasetDescriptors. But, we have to deprecate and support old constructors. This isn't always possible. For example, adding a required location isn't backward-compatible. Optional additions can be made backwards-compatible, but require adding new constructors.
I'd like to deprecate constructors in favor of builders and URI-based instantiation. To support Guice/Spring instantiation, we should keep only the most general constructor public, and note in docs that it may change and is for injection---because Guice won't care if it changes as long as it has a binding.