Here's an updated patch for package, package-x and tests. Please comment, I'd like to install it soon-ish. Notes: * Converting from plist to alist and back is a hassle, but it gives us an opportunity to clear out keys with nil values in `package-desc-from-define'. * Not passing :homepage to `package-desc-from-define' in `package-buffer-info' when its value is nil seems hard. * `package--add-to-archive-contents' tries to retain backward compatibility by checking the given vector's length. Now we just need a package archive that would include homepage information.