This post is an introduction to some of the higher level concepts of packaging, more about the whys than the hows. I plan to start a series of posts on the anatomy of your average deb for Maemo, but before that I wanted to go through some of the reasons for packaging so that the details fit into a larger purpose. That purpose is simply to make life easier for your users by doing the hard work for them.
The hard work is compiling, determining dependencies, and building for the chip architecture of your software. All this stuff is quite esoteric to the average user – they just want to know: how do I install? Does it work with my tablet? With packaging we can answer in the affirmative the latter question and we can make install painless. That makes users of your software happy and more likely to use it.
Debian has as part of its mission the goal of putting users first, this makes Nokia’s choices of debian as an operating system fortuitous. Debian has worked really hard at making software easy to install and their success has made it one of the most popular linux distros out there. Debian’s user-centric focus created the APT (Advanced Packaging Tool) system, with apt-get and aptitude, which Maemo has inherited. This means that maemo packages can take advantage of all the well tested debian tools and the infrastructure which debian has built.
Building packages correctly allows you to insert software onto a variety of architectures, Maemo supports two and Debian supports at least eight.
Packaging has some fringe benefits as well, it forces a certain amount of discipline upon the developer and alerts them to the needs of their users. This is unfortunately something that we as programmers forget to do – to put the user at the center of the experience. Software should be written with users and usability in mind, otherwise no matter how good it is, no one will use it. Packaging helps to enforce best practices which make the installation and upgrade of software standardized. By standardizing distribution of software we are realizing the spirit of the GPL and bringing some pretty amazing technology to everyone, not just the alpha geeks who know their way around a C compiler.
Quick recap: Packaging allow us to
- Build software for numerous architectures
- Make software easy to install
- Follow best practices in the development and distribution of software
So that is the point of packaging; to make software easy to install. It’s good to remember this when you are jumping through the hoops of dpkg and its various tools.