One shortcoming with the Arduino ecosystem is that it has not learned from other environments and done libraries right. In order to do libraries right, there needs to be a defined structure in place for how you write, version, publish, install, uninstall, browse by category, search etc.
We need two things
A standardized way to structure library projects. A common source structure, a common way to build and test them, a common way to document them, package them and add metadata to them. Look at CPAN, Maven, Ruby Gems etc.
A de-centralized way to publish libraries. Having only a common repository for lots of libraries doesn't really work. I would recommend studying how Homebrew on OSX works. They've gotten a lot of things right. An important point for why it needs to be done in a de-centralized manner is that it should be possible to publish libraries properly without having them included in any official repos that the user does not control.
I think we should start work on these two things. If we accomplish point 1, there are several ways we can accomplish 2.
I think we can design 1 without tying ourselves to how we solve 2.
Library metadata will be important and no library should be accepted into any official repos or listing without a metadata file that at the very least categorizes the library, adds tags, a 50 character description, a one-paragraph description, constraints (hardware, version etc) and dependencies. (Metadata model needs to be versioned and schema should be designed for evolution)