Description
After doing some investigation into usage of the SDK, I'm feeling that TracerProvider.shutdown may not be the best idiom at least in all languages. For example, a stateful span processor may be shared by multiple providers, and this seems reasonable. But this allows one provider to shutdown another one. It seems like if a span processor has state, it should be closed independently, similar to many objects that are shared, such as any old gRPC client used in an app. In Java this would be very idiomatic by just having anything that has state (e.g. Batch span processor, exporter) to implement Closeable - it makes it obvious what needs to be closed, and that can happen maybe with try/resources, or a DI container, without doing so in the TracerProvider, which is really just a bag of objects, not in itself requiring closing. Of course the shutdown maybe idiomatic in other languages so I don't know if it needs to be removed completely but it seems nice to give options that can use language features.