Awesome-Lists, Everywhere
Chances are, if you use GitHub, you’re familiar with “awesome lists.”
Awesome-lists are a series of open source GitHub projects. They offer curated content around a specific topic that readers will find… awesome. Each list uses the “awesome-” naming convention and most of them give credit to other awesome lists that inspired them to create their own.
They’ve become so popular that GitHub now displays “Awesome Lists” as one of the options in the mobile app Explore tab:
You’ll find awesome-lists ranging from mainstream tech topics like awesome-react to random stuff like awesome-falsehoods (”a curated list of falsehoods programmers believe in.”), awesome-board-games (“a curated list of awesome and exceptional board games”), and awesome-veganism (“a curated list of awesome resources, pointers, and tips to make veganism easy and accessible to everyone”).
My Progress From Consumer → Maintainer
For me, awesome-lists were love at first sight when I was introduced to the concept a few years ago. I’m now a maintainer of my very own list, having recently started awesome-opensearch together with my friends at Pulse.
👉 👉 [Would you mind giving my awesome list a GitHub star ⭐***? I’d really appreciate it!*** 🙏 🙏]
Researching the Origins of awesome-lists
All of this got me thinking – where did this awesome-list concept come from in the first place? Who started it? Did they do anything to promote the idea early on? And why “awesome” of all possible superlatives?
I couldn’t find anyone who had written about this, so I decided to fill the gap myself.
It’s helpful that GitHub is built to leave digital fingerprints and clues, and so, after sifting through a lot of commit histories, READMEs, and PR comments I’ve pieced together the first timeline and history of awesome-lists.
Where it All Began
The first awesome-list in history was awesome-php, launched on January 25, 2012, by Jamie York (@ziadoz on GitHub).
In his initial commit, he wrote:
Here are some awesome PHP libraries that are awesome. Yes, so awesome I’ve used the word three times! You should be using them already:
Two years later, on January 17, 2014, another awesome-list came to life when Jan Van Ryswyck launched awesome-talks. And while this project carried a similar naming convention to awesome-php, Jack didn’t make any connection in his initial commits.
The first signal of influence and attribution would come a month later, on February 10, 2014, with the launch of awesome-sysadmin. In the initial commit, Francisco Augusto wrote:
A curated list of amazingly awesome sysadmin open-source resources inspired by Awesome PHP.
that day, Francisco edited the README by adding more context:
A curated list of amazingly awesome sysadmin open-source resources inspired by Awesome PHP.
Notice that the reference is a GitHub Gist URL. Gist is a GitHub feature that lets you store and distribute code snippets without setting up a full-fledged repository. It’s sort of like GitHub’s version of a post or a tweet.
It turns out that the specific Gist reference that Francisco added is a dead link. Looks like he meant to reference: https://gist.github.com/ziadoz/1677679 which is where Jamie York had posted awesome-php back in January of 2012.
Early Traction
It seems then, that the initial awesome-lists were not actually repositories – they were Gists. And the initial traction and visibility of the awesome-list concept were thanks to the social and sharing nature of the Gists feature.
After almost 2 years on Gists, awesome-php had reached 260 forks and 1400 stars. And on Nov 29, 2013, Francisco announced that “Awesome PHP has been relocated permanently to its own Github repository](https://github.com/ziadoz/awesome-php). No further updates will made to this gist.”
Awesome-lists had outgrown Gists, and it was time to finally find their permanent home as stand-alone projects in GitHub proper.
The Wild Summer of 2014
The real inflection point for awesome-list growth was the summer of 2014 as several new awesome-list GitHub projects were launched during June and July.
On June 28, 2014, awesome-python was started. In the initial commit, Vinta Chen wrote:
A curated list of awesome Python frameworks, libraries, and resources. Inspired by awesome-php.
On July 3rd, Marc Anguera launched awesome-ruby. There was no reference to other lists in the initial commit, but the timing and naming convention suggest that this was inspired by other awesome-lists that preceded it.
Awesome-lists were also starting to gain wider promotion on other social platforms. Take this tweet for example on July 9th, 2014 telling people about the awesome-ruby project:
The rapid growth signals continued a couple of days later on July 6, 2014, when @avelino launched awesome-go. The initial commit reads:
A curated list of awesome Go frameworks, libraries, and software. Inspired by awesome-python.
Whereas other awesome-lists had referenced awesome-php as their OG awesome inspiration, awesome-go had taken inspiration from the awesome-python project that was launched just a week prior.
The next day (July 7th) awesome-shell was launched by Caleb Xu. People throughout the GitHub ecosystem had apparently taken notice of the awesome-list trend and they were joining with lists of their own.
Awesome-lists Filled With awesome-lists
By July 8th, there were enough awesome-lists out there with enough exposure to inspire the first awesome-list of other awesome-lists.
awesome-awesomeness was started by Alexander Bayandin as what he described as:
A curated list of amazingly awesome awesomeness.
The list collected all of the above awesome-lists that came before it in one convenient place.
On July 10th of that year, the awesome-list trend continued with the arrival of awesome-devenv. In the initial commits, Dotan J. Nahum highlighted the progression:
A curated list of awesome tools, resources, and workflow tips making an awesome development environment.
Inspired by awesome-go, which was in turn inspired by awesome-python.
On July 11th, another awesome-list aggregate was started when Sindre Sorhus launched awesome, which was described as:
“A curated list of awesome lists.”
It’s notable that one of the lists in this project’s first commit was frontend-dev-bookmarks. This list was started by Tim Navrotskyy on
Jun 22, 2013, a year before the explosive growth of 2014. The frontend-dev-bookmarks project obviously did not use the awesome- naming convention and it’s not clear that it was inspired by the budding awesome-list trend. It appears that this was a parallel, similar effort to curate useful information, as Tim suggests in the initial commit:
A badass list of frontend development resources I collected over time. Pull requests are welcome.
The pull of the awesome-list ecosystem was so strong, that even parallel efforts such as this one were pulled in.
Awesome-lists Become a “Thing”
On the same day Sindre Sorhus launched awesome, he also launched awesome-nodejs which was described as:
A curated list of delightful Node.js packages and resources. Inspired by the awesome list thing.
Awesome-lists had arrived at scale.
They were officially a “thing.”
What Caused the Wild Summer of 2014?
I reached out to several of these early awesome-list creators to understand what prompted the rapid growth during that summer of 2014. I assumed there must have been an event or conference that put the awesome-list concept on display to the entire dev community, but it turns out that it was completely organic. This was a trend that caught on thanks to social media sharing and algorithms.
Balancing Scale and Quality
One of the interesting corollaries of awesome-list adoption was the challenge of maintaining them. How does one ensure that the links are correct? How do you identify links that become broken over time?
This was something that the early adopters thought about, with Dotan of awesome-devenv sharing an article at the end of 2015 explaining how he used Travis CI to automatically review and validate awesome list content.
Why “Awesome”?
As we referenced at the beginning of this article, Jamie York used the word “awesome” to describe the very first awesome-list: “Here’s some awesome PHP libraries that are awesome. Yes, so awesome I’ve used the word three times! You should be using them already:”
Awesome was used as an emotional measure of how delightful a resource or piece of content was. If it wasn’t delightful, then it didn’t belong on the list. The word “awesome” captured the ethos of the awesome-list movement and solidified the key distinction between collection and curation. The objective was to curate only the best content and leave the other stuff out.
As Sindre Sorhus puts it in his contribution guidelines:
[Make sure the list] only has awesome items. Awesome lists are curations of the best, not everything.
Closing Thoughts
The rest, as they say, is history. Awesome lists are here to stay as an important part of GitHub culture. Collectively, these projects have gained millions of GitHub stars, and they have proven to be a valuable set of resources for the dev community and beyond.
The prolific growth of the awesome-list trend highlights the value of thoughtful content curation and emphasizes the collaborative nature of open source.
If you go this far and have an extra 8 seconds to spare, I’d appreciate it if you would give awesome-opensearch a star!
Thank you!