Building Distributable Linux Binaries

I don’t normally get too excited about threaded discussions, but I was impressed with the comments in response to a recent Ask Slashdot post asking for advice about building and distributing Linux binaries that will really work across various distros.

The replies were mostly thoughtful and the overall impression was the same sort of even handedness you’d expect from a wikipedia article. Unsurprisingly there was much discussion about static linking but there were links to several interesting looking projects I’d not heard of.

At another point, the thread considered what happens when you have to ship as binary (for whatever reason) instead of being able to ship source. Two comments in particular seemed insightful:

If you’re making games, a good solution is to make the game engine open source, and charge for the data. The game engine can get ported to dog knows what platforms without any effort from you, and you can still get compensated by charging for the data files. The real value of a game tends to be in the data files, as they control the story line, the graphics, the sound effects… ref


If you absolutely can’t have the source to your app open, you could do like the developers of binary kernel modules: ship your software in object format, with all the parts that interface with the rest of the system open source. That way …. they can compile and link the glue layer to make your code work on their system.

If you take this approach, be very careful to have everything that interfaces with the outside system in the open source part; I’ve worked with kernel modules where some OS calls were still made from inside the binary part, and they were hell. ref

I’m all for source distribution but there are times when its not appropriate; if you consider the above in best-practice abstraction and separation-of-concerns terms (as opposed to the usual religious licencing debate) there is food for thought especially for those who struggle to make widely available software.

Anyway, worth a read.