A computer-implemented method, comprising: receiving (320, 340, 388), at a first computing device (304, 100) and from a second computing device, a request for an executable for a software application for storage on the second computing device; determining (322, 324; 342-344), by the first computing device (304, 100), that the software application uses a first version of a shared library; before installation of the software application on the second computing device, requesting and receiving (326-332; 356-358; 388), by the first computing device (304, 100) and from the second computing device, an indication of whether or not the second computing device already stores a copy of the first version of the shared library; determining, by the first computing device (304, 100) and based on data indicative of stability of one or more versions of the shared library, whether the first version of the shared library is eligible for sharing between software applications on the second computing device; determining (334-336; 342-344; 390-392), by the first computing device (304, 100), the executable for the software application, wherein the executable comprises a stripped executable when the indication is that the second computing device already stores the copy of the first version of the shared library and based on determining that the first version of the shared library is eligible for sharing between the software applications on the second computing device, wherein the stripped executable excludes the first version of the shared library, wherein the executable comprises a full executable when the indication is that the second computing device does not store the copy of the first version of the shared library or based on determining that the first version of the shared library is not eligible for sharing between the software applications on the second computing device, and wherein the full executable includes the first version of the shared library; and transmitting (338, 346, 398), from the first computing device (304, 100) and to the second computing device, the determined executable for the software application. receiving (320, 340, 388), at a first computing device (304, 100) and from a second computing device, a request for an executable for a software application for storage on the second computing device; determining (322, 324; 342-344), by the first computing device (304, 100), that the software application uses a first version of a shared library; before installation of the software application on the second computing device, requesting and receiving (326-332; 356-358; 388), by the first computing device (304, 100) and from the second computing device, an indication of whether or not the second computing device already stores a copy of the first version of the shared library; determining, by the first computing device (304, 100) and based on data indicative of stability of one or more versions of the shared library, whether the first version of the shared library is eligible for sharing between software applications on the second computing device; determining (334-336; 342-344; 390-392), by the first computing device (304, 100), the executable for the software application, wherein the executable comprises a stripped executable when the indication is that the second computing device already stores the copy of the first version of the shared library and based on determining that the first version of the shared library is eligible for sharing between the software applications on the second computing device, wherein the stripped executable excludes the first version of the shared library, wherein the executable comprises a full executable when the indication is that the second computing device does not store the copy of the first version of the shared library or based on determining that the first version of the shared library is not eligible for sharing between the software applications on the second computing device, and wherein the full executable includes the first version of the shared library; and transmitting (338, 346, 398), from the first computing device (304, 100) and to the second computing device, the determined executable for the software application.