Library packaging

Wow, it’s been since Oct. since I’ve updated? Time really flies.

So lately some Linux users have been going after me for including dependency libraries in the RakNet download, rather than telling them to go download it themselves after downloading RakNet. They make the argument that this is the only way to use up-to-date dependencies and that it also cuts down on the download size.

About a year ago I was trying to make a game using SDL. Since that’s a Linux oriented library, it had many dependencies, and some of those dependencies had dependencies. At one point I downloaded this library that had SIX different dependencies. Of those six libraries, how many do you think

A. Were still available for download?
B. Were still supported?
C. Worked with the library I was trying to use, as well as each other?

The answer is two. So like a dependency graph with a broken node, that ultimately affected my ability to use SDL and I had to find something else.

This is why I include all dependencies with RakNet. And with good cause: when I last went to upgrade speex, RakVoice no longer worked. I’m fixing that now, but in the meantime nobody would have been able to use RakVoice.

Just to drive the argument home, even if all dependent libraries were available and functional, who wants to spend the next 30 minutes downloading other libraries and figuring out where or how to unpackage or install them? When people download RakNet, they want to use RakNet, not necessarily Speex or zLib.

2 replies on “Library packaging”

Yeah, I totally agree with your point of view. It’s really nasty to download all the dependencies, to put them in the right directories and to build them with the right paramters so they finally work together. I once sat a evening to get the monitoring application “ganglia” to work because it needed so much other libraries.
So it’s very wise of you to include all the stuff you need to compile RakNet. I always loved the simple way I can include RakNet into my projects! 🙂

Well, that’s one of the most important reasons why i prefer linux so much above windows. Every distribution of linux has something called a packet manager, which will allow you to click on “Download SDL” and then it will fully automatically download all the dependencies you need. So it’s just a mater of starting the packet manager, searching for the packet, clicking install and of you go. So now you’re happy and stuff and start working at your project and everything. After some hours/days/weeks you realize that you also wanted to support those who haven’t seen the light yet (aka windows users). So now you start downloading all those tonns of dependencies by hand cause somehow Microsoft doesn’t seam to like open source and so their updater will really only be able to download some crapp like internet explorer at most but not something like sdl and all its dependencies. So to summ up, maybe you should offer two versions, one light version (source, headers and that’s it) and a heavy version with everything included. Some open source projects like gaim or gimp have like a main packet and also a dependency packet that you can download seperately if you need to, maybe that’s another option.

Leave a Reply

Your email address will not be published. Required fields are marked *