About LumpyBox Software Distribution

In the past we were content with shared runtimes and universal packages to distribute our software to end-users. This meant that we could only utilise the shared subset of features that every platform implemented. We thought hard about this problem and have designed a brand-new delivery system that allows developers to create a package for each platform individually! No longer do you need to worry about the shared subset of features limiting your application, but can now treat each platform like a beloved pet or special snowflake.

How it works

Write your application

You got this, right?

This bit is the easiest. You write your application just as if you were targeting a shared runtime. You make a note of all the libraries and dependencies your application uses, and save that list for the next step.

Package for the first system

The fun begins...

Let's take Ubuntu as our first system to target.. First, you need to make sure your application compiles on Ubuntu. This means you'll take care of all the dependencies by using Ubuntu's implementation of the LumpyBox system that they call APT.

The list of libraries and dependencies you made comes in here. For each dependency you need to install it using APT. Make sure you also install the development variants too - these are usually the same name but suffixed with the text "-dev". This allows your application to compile cleanly.

Once you've got the build working it's time to create the LumpyBox package and share it with the world. Because we're using the Ubuntu implementation of LumpyBox we will create a "DEB". This is really easy and the instructions are readily found on the Ubuntu Wiki.

Now you have a .deb file you just need to share it with the world via your website and anyone using Ubuntu can install your application with just a few clicks.

Package for the second system

Down the rabbit hole...

Now you're cooking with gas! You should be able to get the second build working a lot quicker than the first because you now have experience under your belt. Let's take CentOS as our second system to target.

The CentOS variant of the LumpyBox implementation is called RPM. You remember the dependency dance you did with Ubuntu? Good. Repeat that on CentOS' RPM system, but remember that the development packages are suffixed differently than in the Ubuntu LumpyBox implementation. Here they're suffixed with "-devel" instead of "-dev". Other than that it's the same! The versions of packages might be different, but that's not too big a problem - you just need to make sure your application can compile against both the CentOS versions and the Ubuntu versions. Easy, right?!

This time, because we're using the CentOS implementation of LumpyBox we will create an "RPM". This is really easy and the instructions are readily found on the CentOS Wiki.

Rinse and repeat

That's all folks...

Now you have experienced the ease of development and distribution that LumpyBox affords, you can go forward without worrying about the limitations of SNAP packages or FlatPaks ever again!

Welcome to true platform independence! Please share your experience with the world and point everyone at this site so that they, too, can discover the LumpyBox system...

Developer Testimonials

  • Without LumpyBox distribution I would have written a snap package and been done with it, meaning my users would have only had the one package to install. What a terrible world that would have been that I couldn't tailor my application to suit the systems it's running upon.

    Martin Schvezov
  • I can't believe how portable my application has become now that I am targeting each platform individually. My users really appreciate the finesses I can add now that I'm not limiting myself to a shared runtime.

    Kyle Pope
  • Without LumpyBox distribution I would have written a snap package and been done with it, meaning my users would have only had the one package to install. What a terrible world that would have been that I couldn't tailor my application to suit the systems it's running upon.

    Martin Schvezov
  • I can't believe how portable my application has become now that I am targeting each platform individually. My users really appreciate the finesses I can add now that I'm not limiting myself to a shared runtime.

    Kyle Pope