Making open source software available

Today, I want to give you some feedback about making open source software available. One could think that this is as simple as “make your software“, “compress the sources“, “upload them somewhere“, “spread the link“, “done“… but it is not. Indeed, spreading a source code archive doesn’t make the availability of the software to the user. The challenging part is to keep the software compilable on all the different target environments, any time.

There are several reasons that made this hard to achieve with OpenViBE. First of all, we have to consider the target environments. OpenViBE is for Windows and Linux as stated in the download page. Two different worlds with major differences in the way of making software available. Then, we have to consider the levels of users concerned by the availability of the software. Some users just want to take the software and use it as is. They want to click and play, they want precompiled binaries. Other users want to be able to modify or add things to the existing software. They want the source code.

On Windows, software are usually available as precompiled binaries, no need to compile anything, no need to check any prerequisites, everything is included… This fits the first category of users need !

But, for users who want to modify code, it becomes important to specify lots of things such as :

  • what compiler and tools to use (e.g. Visual C++ Express 2008 Service Pack 1 or Cmake 2.8.0)
  • what dependencies to use (e.g. GTK bundle 2.16 or Ogre 1.6.5 SDK for Visual C++ .Net 2008)
  • what environment variables to update, and paths to the dependencies
  • what procedure to follow in order to get all the binaries ready

Given those instructions, users are able to manually set up a perfect development environment… but still, the whole procedure being manual, mistakes could happen (small version differences for example) resulting in unexpected side effects, sometimes hard to track.

In OpenViBE, I chose to compile and package all the needed dependencies and put them online. From then, a simple application lets the user download & install everything just fine, correct version, know location, automatically updated environment variables. Almost the same behavior as Cygwin‘s installer.

Now on the Linux side, software are almost always available as sources (even if precompiled binaries could be built), people are used to the idea that a compilation step could be necessary before using a software… This fits the second category of users… but may turn to hell when talking about version of the dependencies (this will be in a future post).

On the other hand, building precompiled binaries for Linux is not easy. When talking about precompiled binaries and packages for Linux, we talk of as many packages as Linux distributions exist. Each distribution has its own way of packaging software and dependencies, such as dpkg on debian and ubuntu, or rpm for fedora and mandriva, or even portage for gentoo, a tool that gets source packages and compiles them on the fly at installation time !

All these tools make the availability of precompiled binaries on Linux really challenging and I admit I didn’t find my way through these different tools yet.

Wow, that was a long article. I hope this could be of interest to some readers. Making a software available is not a detail. It’s a big work and it’s challenging.

But we do love challenges, don’t we ? :)

Comments are closed.