Should we include the entire sources of the libraries used in our project?
If your code is written in C, it (generally) uses the C standard library. If it is coded in C++, it uses the C++ standard library. I usually see no reason to include in your code the source code of them (e.g. GNU glibc on Linux).
And if your code uses very common libraries (think of libcurl as an example on Linux), I am not sure that including their source code (e.g. the source of libcurl
inside your GitHub repository) in your code makes practical sense.
I'm used to using static link libraries in my projects. This doesn't make the solution heavier and allows to be updated more easily.
I am not convinced it is always a good idea.
If all the processes running on your computer are statically linked, total memory consumption is higher, because there is no shared libraries. On Linux, read Drepper's paper How to write shared libraries. So using static libraries does make your user computer "heavier" (in the sense of requiring more physical memory, since virtual memory becomes less efficient : the code segment of a library used by several processes can be shared by paging only if it is a shared library).
Details are of course operating system specific and related to the expertise of your audience users.
A motivation for using static libraries is to fight the dependency hell. But that core issue is supposed to be solved by package managers. And at the source level, what matters is API compatibility (related to semantic versioning).
Notice also that your software is less likely to becomes packaged and redistributed in binary form if it uses LGPL libraries, whose license practically almost requires them to be shared libraries and linked dynamically (this is an oversimplification).
My personal recommendation is to use (on Linux) shared libraries when then are usually packaged in major Linux distributions. Of course, the evil is in the details and your mileage may vary.
You might be interested by the SoftwareHeritage project and the research these nice folks (notably Roberto Di Cosmo) are doing.
In my RefPerSys and Bismon projects (both are GPLv3+ free software), I definitely use shared libraries.
On my Debian desktop, almost all software are dynamically linked, and for a good reason. Exceptions include low level utilities like sash.
libm
orlibdl
orlibncurses
or GTK...