Solving Open Source Discovery
Today I’m launching Libraries.io, a project that I’ve been working on for the past couple of months.
The intention is to help developers find new open source libraries, modules and frameworks and keep track of ones they depend upon.
The world of open source software depends on a lot of open source libraries. We are standing on the shoulders of giants, which helps us to reach further than we could otherwise.
The problem with platforms like Rubygems and NPM is there are so many libraries, with hundreds of new ones added every day. Trying to find the right library can be overwhelming.
How do you find libraries that help you solve problems? How do you then know which of those libraries are worth using?
GitHub Explore and Search are the best tools we have at the moment, but stars often turn searches into a popularity contest, telling you which projects people currently admire, rather than the ones they are actually using and depending on.
The search approach I’ve been working on within Libraries.io attempts to solve this, taking a leaf out of Google’s book.
The dependency graph of all of the available libraries in a package manager fits quite nicely with the PageRank algorithm. According to Wikipedia:
PageRank works by counting the number and quality of links to a page to determine a rough estimate of how important the website is. The underlying assumption is that more important websites are likely to receive more links from other websites.
If we swap ‘linking to’ for ‘depending on’ you have a fairly good model for discovering which libraries are best to use in your apps.
Within Libraries.io I’ve aggregated over 700,000 projects, written in 130 languages from across 22 package managers, including dependencies, releases, license information and source code repository infomation. This results in a rich index of almost every open source library available for use today.
The index is kept up to date with information about new libraries and new releases of existing libraries every day. This ensures upcoming projects get exposure, as well as existing well known libraries.
This also means you can subscribe to a project to receive notifications when new releases are published, including new tags on GitHub repos for platforms like Bower and Go that don’t store release information in a central repository.
I welcome you to try it and let me know how we can improve it to make the world of open source an easier place to navigate.