Packaging has become complicated—not because dpkg is complicated (indeed, dpkg-deb is very simple to use) but because of the high requirements of our policy. If a developer releases a new package, she has to consider hundreds of guidelines to make the package `policy compliant.'
All parts of our policy have been introduced by the same procedure: Some developer has a good idea how to make packages more `unique' with respect to a certain aspect—then the idea is discussed and a policy proposal is prepared. If we have a consensus about the policy change, it's introduced in our manuals.
Therefore, our policy is not designed to make life harder for the maintainers! The intention is to make Debian the best Linux distribution out there. With this in mind, lots of policy changes are discussed on the mailing lists each week.
But changing the policy is only a small part of the story: Just having some statement included in the manual does not make Debian any better. What's needed is for that policy to become `real life,' i.e., it's implemented in our packages. And this is where Lintian comes in: Lintian checks packages and reports possible policy violations. (Of course, not everything can be checked mechanically — but a lot of things can and this is what Lintian is for.)
Thus, Lintian has the following goals:
To give us some impression of the `gap' between theory (written policy) and praxis (current state of implementation).
From the results of the first two Lintian checks I implemented, I see that there is a big need to make this gap smaller. Introducing more policy aspects is worthless unless they are implemented. We first should fix packages to comply with current policy before searching for new ways to make policy more detailed. (Of course, there are also important policy changes that need to be introduced — but this is not what's meant here.)
To make us re-think about certain aspects of our policy.
For example, it could turn out that some ideas that once sounded great in theory are hard to implement in all our packages — in which case we should rework this aspect of policy.
To show us where to concentrate our efforts in order to make Debian a higher quality distribution.
Most release requirements will be implemented through policy. Lintian reports provide an easy way to compare all our packages against policy and keep track of the fixing process by watching bug reports. Note, that all this can be done automatically.
To make us avoid making the same mistakes all over again.
Being humans, it's natural for us to make errors. Since we all have the ability to learn from our mistakes, this is actually no big problem. Once an important bug is discovered, a Lintian check could be written to check for exactly this bug. This will prevent the bug from appearing in any future revisions of any of our packages.