DEV Community

Cover image for 💡 The Untold History of GitHub Awesome-Lists 🤯
Zevi Reinitz
Zevi Reinitz

Posted on

💡 The Untold History of GitHub Awesome-Lists 🤯

If you use GitHub, you’re probably 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:

2

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 site 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 looked around and could not find anyone who had written about this, so I decided to fill the gap myself and write the first comprehensively researched history of awesome-lists in history.

It’s helpful that GitHub is built to leave digital fingerprints and clues, and so after sifting through lot of commit histories, READMEs and PR comments I’ve pieced together an authoritative timeline and history of awesome-lists.

Where it All Began

1

The first awesome-list in history was awesome-php, launched January 25, 2012 by Jamie York (@ziadoz on GitHub).

In his initial commit he wrote:

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:

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.

Later that day, Francisco edited the README by adding more context:

A curated list of amazingly awesome sysadmin open source resources inspired by [Awesome PHP](https://gist.github.com/Xanza/7663627)

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 was 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

summer

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 took notice of the awesome-list trend and they were joining with lists of their own.

Awesome-lists Filled With awesome-lists

everything is awesome

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](https://github.com/avelino/awesome-go), which was in turn inspired by [awesome-python](https://github.com/vinta/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](https://github.com/sindresorhus/awesome) list thing.

Awesome-lists had arrived at scale.

They were officially “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 of 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 in 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 of 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.

best of the best

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 hav 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.

You're awesome for sticking around until the end! If you've already come this far and have an extra 8 seconds to spare, I’d appreciate it if you would give awesome-opensearch a star!

Thank you!


I'm Zevi, a global marketing and growth advisor. I help early-stage companies become awesome with their organic growth.

If you're looking for more amazingly genius growth and marketing wisdom - subscribe to my Growth Notes (launching soon).

Top comments (0)