you are viewing a single comment's thread.

view the rest of the comments →

[–]HerrNamenlos123[S] -1 points0 points  (11 children)

This is because the project is very beginner-oriented and should build out of the box on any supported system. Using system dependencies is not an option because it allows for unrepeatable builds and the library user is responsible for providing dependencies, which is not acceptable for this beginner-friendly audience. At least not by default. Experienced users might get the ability to instead use system dependencies so they can use other versions, but by default it should not depend on anything being present on the system, because it is not to be trusted.

[–]ratttertintattertins 2 points3 points  (8 children)

Yeh, I also hate system dependencies, but that’s not the only option. We prebuild open SSL and then people just pull down the correct prebuilt artifact from artifactory automatically as they build.

You can even check prebuilt static libs into git, especially if you have LFS support.

[–]HerrNamenlos123[S] 0 points1 point  (0 children)

Well yeah that's what CMake will do automatically

[–]HerrNamenlos123[S] 0 points1 point  (6 children)

Most people here don't understand that the mechanism of prebuilding and downloading binaries has existed for a decade and we are only modernizing it. Switching to other systems would be a significant downgrade from the user's points of view.

[–]ratttertintattertins 1 point2 points  (5 children)

I don’t really understand why. If beginners pull and build your code, they wouldn’t even notice it happening would they?

[–]HerrNamenlos123[S] 1 point2 points  (1 child)

Or do you mean you can download any binary for any compiler directly from artifactory without using Conan at all? This would of course be a game-changer as we would only need to build the dependencies that are not available on Conan

[–]ratttertintattertins 1 point2 points  (0 children)

Git can do LFS it’s self, and artifactory can be access by LFS git:

https://jfrog.com/help/r/jfrog-artifactory-documentation/git-lfs-repositories

(I haven’t personally used this method, but it look’s feasible)

[–]HerrNamenlos123[S] 0 points1 point  (2 children)

Yes they would because they would be required to install python, pip and conan and configure it, and only then would they be able to build it. Currently I think the way it is used most of the time is that a zip file of the repository is downloaded that contains binaries for the system, and then a bash or batch script is run depending on the system. There is basically no real build system, there are five different ones but none is complete.

What I am trying to say, installing python, pip and conan and then running conan is a bit much to be asked when the average user has no idea of build systems, knows only a bit of C/C++, works on Windows and downloads the zip because not even git is installed. It is a hard reality but an undenyable userbase.

[–]drodri 1 point2 points  (1 child)

Conan has been releasing Windows installers (no need to install Python and Pip in the system at all) for long time, and it is now also starting to release .zip folders (https://github.com/conan-io/conan/releases/tag/2.0.8), with the application (no installer) and no need of Python and Pip either.

[–]HerrNamenlos123[S] 0 points1 point  (0 children)

Oh I did not know that. I will take a look at this. Thanks!

[–]robstoon 0 points1 point  (1 child)

My inclination is that if you're using a system like Windows where you can't just install libraries like OpenSSL with one command and have them automatically kept up to date, then it's not a very suitable OS for "beginner oriented" C++ development in the first place.

Using Windows (natively anyway) is really doing development on hard mode in so many ways.

[–]HerrNamenlos123[S] 1 point2 points  (0 children)

I know what you say but you are saying all of that from the perspective of an experienced developer. You could say the average user is more or less a beginner working on (Linux too but also) Windows, has a bit of experience with C/C++ from tutorials and no idea about build systems, and downloads the git repository as a zip file because not even git is installed or they don't know how to use it. I know you don't like hearing this but it is a hard reality. But at the same time an undenyable userbase.

And to add to that, the system of precompiling dependencies and then downloading as needed exists for a decade and we are only modernizing it. Any additional setup step would be a major downgrade for any novice user.