I saw this blog post by lvh asking the simple question, "Why do people hate launchpad so much?" It was something I also wondered until I started tinkering with forking NetBSD pkgsrc and went to research various package managers. When I was going through all the various package managers I finally realized that the difference between Launchpad and Github is actually the difference between System Administrators and Software Developers.
Try this out, let's pick a random github project, say gitflow on github, and then Bazaar on Launchpad. You could do this with various random projects, but check out what you see first:
Now, I'm not saying one way is better or another, I'm saying that depending on what your day job is, you want either Github's focus or Launchpad's focus.
Github wins on this because, when you need to implement something, and you're on the edge of technology, you want code. Code code code. You want source files, source revisions, who to talk to, how to make the damn thing work, READMEs. You want them now. You don't want to search you want the source files you have to download and put into your project right now.
Programmers don't care about version numbers, release history, bug trackers, mailing lists, nothing. Especially if the project is relatively small. Just the code please.
In this respect, Launchpad loses horribly. You have to dig around to find any source code. It's just assumed that you'll use bzr and do this:
bzr branch lp:theproject
Yes, Bazaar is so tightly integrated into Launchpad that you don't have that weird text field that you need to copy paste and get right just to get code out of it. You just say "lp:thedamnproject" and that's it. But, that sucks for everyone who doesn't get this, and hell even though I know bzr well I'd like to get at the code to browse.
The reason programmers hate Launchpad is for their daily work life it's a major sucking pain in the ass. They don't deal with making packages, confirming versions of packages, or usually care about the project. They just want the code, and in that way Github wins because it doesn't make you click around for 10 clicks just to browse the source tree.
If you need code, then Launchpad totally sucks. Github is awesome if all you care about is code.
Launchpad rocks if you're packaging software because it's all automated and very well organized with one canonical place for every project. As a SysAdmin you want to know that you're getting certain versions of things, who's involved in the project, where to file bugs, what is an "official" version. You could care less about the code and you want versions and packages
In fact, Launchpad is so damn good at package management that they've got an automated package builder from just source code called the PPA:
Using a Personal Package Archive (PPA), you can distribute software and updates directly to Ubuntu users. Create your source package, upload it and Launchpad will build binaries and then host them in your own apt repository.
It's bug tracker (as lvh mentions) is pretty damn good too, but most importantly because it tracks downstream changes. Again, as a packager of software for operating systems you like to know that a change from the source project has been accepted so that you don't make a fork.
For a SysAdmin this is preferable because you typically don't care about what's in the source code files, or what one guy committed, and not even the README really. You care about the project and what version it is at and whether you can upgrade or how to ask for help on a mailing list.
On the flip side, Github seriously blows for packaging a project. It's very author centric, but has defined author as "some dude with git who did some stuff" so you generally have no idea what's the one true source of anything. People on github tend to not even version stuff and just use the git hashes for things, which drives a sysadmin crazy. The bug tracker is pathetic and not nearly as capable as the Launchpad one.
Numerous times I've googled for a project, found a link and then had to figure out if this one is the real one or some random fork. I've been bit in the past by a fork having more google juice than the main repository and had to dig around. With ZeroMQ they decided to move the pyzmq project around so that it could live under the zeromq author, so for about a month I was pulling from a dead repository and didn't even know it.
Under launchpad you don't have this project because the project is the main target and has a canonical name. Pyzmq wouldn't move around because it would just be at pyzmq and that's it. The project owner would change, new versions and releases would come out, but I wouldn't have to hunt around and play "find the random git repo".
Launchpad's mailing lists, blueprints, docs, team logic, and other tools are great for sysadmins and packagers of the software. Github however just totally sucks if you need to pack something up in a consistent version, track some bugs, find out who an owner is, see who's on a team, or other similar things.
As I've said, one way isn't better than the other, it's just a factor of two totally different user bases and needs. Github services a bunch of coders. Launchpad services a bunch of OS builders and sysadmins. The real question is, does the UI need to be so starkly divided? Can you do an interface that is both?
I personally think you can't, not because of any usability or technical limitations, but because of the culture war of Programmer vs. SysAdmin. The second you made Github more "SysAdmin friendly" you'd piss off the Programmers. Their egos are too softly stroked by having their name first in the URL. The second you made Launchpad more "Coder friendly" the SysAdmins would revolt complaining about not caring about the code.
Really I think you need a 3rd system that's radically different. I'd rather break this whole dependence on "projects" and "source" and come up with a different sharing model. Leave these two as the site for "code" and "packages", but come up with another idea entirely. Not sure yet what that is, but I've been tinkering for a bit on some ideas.