Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

No matter the implemented package manager solution, it has deal with different packages types: from a single class library (a single hpp file) up to monster libraries like ffmpeg.

In the case of ffmpeg, what the package manager should do? Download the sources and all its dependencies and build from scratch? This is very difficult and time consuming.

Because right now the alternative is going to the ffmpeg website, download and include the dll (and lib) or .so and a couple of .h files to your project. And that's pretty simple to me.



It's not that the package manager fixes the problem, it's that having 1 or maybe 2 or 3 canonical or popular package managers gets the implementer to fix the problem.

The implementer, who has extensive knowledge of their own build system runs that aspect and creates a package that conforms to a universally expected output.

It's an incredible difference going from C++, where you end up in the details of all kinds of repos and build systems, to something like C# with Nuget packages where it's a simple command or single click to start using someone else's code.


Consider that C/C++, being highly portable, has support for many platforms and architectures, including the possibility of cross-compiling.

I guess if a package manages works on all those architectures and platforms, then the implementer would have to support all of them, and it's not always the main objective.

Let alone if there are several package managers.


> guess if a package manages works on all those architectures and platforms, then the implementer would have to support all of them,

Other "highly portable" languages handle this by simply having the developer include a manifest of the platforms their library works for. The package manager only shows compatible packages for the targeted platform.


ffmpeg isn't a library, just so you know. libav* are the libraries that ffmpeg use, which are what you'd include. https://trac.ffmpeg.org/wiki/Using%20libav*


FFmpeg is the whole package including ffmpeg as a standalone program and its libraries.

From https://www.ffmpeg.org/about.html

"FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created."

After that:

"It contains libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale and libswresample which can be used by applications. As well as ffmpeg, ffplay and ffprobe which can be used by end users for transcoding and playing"




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: