-
Notifications
You must be signed in to change notification settings - Fork 417
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Binary releases and package management #2682
Comments
Thanks for putting this together. There is also:
In summary, the landscape is a wild zoo of unmaintained and obsolete ports, which increases confusion, and raises the barrier of entry even more with outdated (and most likely broken) packages. |
Thanks for completing that list @marcalff I am wondering, are there other C++ based projects we can learn from? How are some of them managing that? Or how do they make it easy for package providers to stay up-to-date and provide consistent solutions? |
So, I thought about this a little bit more, I think the easiest thing to begin with are the binary builds. I am wondering if the existing CI pipeline (or benchmark?) could be the foundation for that? |
I fear the build matrix would be rather large, and have to be somewhat opinionated. For example Lastly how these dependencies are pulled, for example when building .dll/.so/.dylib - are these dependencies also .dll/.so/.dylib, or are they bundled and hidden in the dynamic(shared) library itself. Would I get debug builds, and debug builds with different .dll names so I can place both .dll in the same "bin" folder (typical gamedev setup would be like this for us). I feel best of the buck would be dynamic library distribution, as precompiled .lib files go only so far. Oh, and also what flavor of C++ runtime and ABI version there too (I'm glad MSVC is now compatible from vs2015 to vs2022, and even clang-cl supports it, but no idea how Linux/OSX is) |
|
If this would be possible, I think that would already be a great starting point. The API is especially relevant for projects that want to provide "native instrumentation", so having an easy way to take dependency would be great!
If we want to do that, we might consider to start as small as possible, i.e. what are the one or two build configurations/architectures/etc. with the most value? I think we should start as small as possible and then start from there. I also heard from last SIG meeting that maybe making sure that vcpkg/conan are up-to-date would already be a great improvement? |
A binary with (minimum) OTLP/grpc support would make most sense to me. |
Sounds to me like a starting point could be the following:
Footnotes
|
Random collection of notes, which have an impact on packaging:
Tentative list of packages:
Packages can also provide -debug and -release options For implementing third party exporters, we also need the -dev packages with header files. The overall scope of packaging gets big very fast, this is neither trivial nor minor. |
Via CNCF we have access to a variety of runners, this is doable.
This is a very valid concern!
What list of the packages below hast the least amount of dependencies, or which packages have dependencies that require mainly dependencies one can expect endusers have readily available?
Can you elaborate? This might be a valuable piece to provide
Doe we really need all of them, maybe starting with a subset like -api, -sdk, exporter-otlp-http-trace, -exporter-ostream-trace?
Yes, it absolutely is, so thanks for taking a look anyway. I think not doing it now is still a valid outcome but in the future this issue can be used as reference to either continue this discussion or to validate if things have changed and can be addressed |
This issue was marked as stale due to lack of activity. |
Is your feature request related to a problem?
When I want to use OpenTelemetry C++ I currently have 2 options to do so:
For most users only option (1) is available and it's a huge entry barrier for people to get started with OpenTelemtry C++. A good example on the level of complexity is the Getting Started, which asks a lot of steps that need to be accomplished to get an app up and running.
Describe the solution you'd like
We discussed this during one of the last SIG meetings and this is a follow up issue on that: to make it easier for end-users to get started with OpenTelemetry C++ there are two options to address that:
Both options are not mutually exclusive, indeed by providing binary releases some publications for package managers are easier as well (except they require reproducable builds).
I suggest the following steps:
Describe alternatives you've considered
Do nothing.
Additional context
Addressing this issue does not require deep understanding of C++ but knowledge around releasing and publishing open source packages. Therefore I suggest this issue gets tagged with "help wanted".
Existing packages from 3rd parties:
The text was updated successfully, but these errors were encountered: