The Journey to 1,000,000 Downloads

Download counter showing 1 million downloads

This morning I came into work to find my Packagist download counter had rolled over: league/commonmark now has over 1,000,000 downloads!

To celebrate this milestone I thought I'd share the story of how this package came about, how it's grown, and how I couldn't have reached this milestone without the PHP community's help.

Getting Started

I was browsing Reddit on September 3rd, 2014 when I stumbled upon a blog post announcing Standard Markdown (later renamed to CommonMark). This ambitious project aimed to standardize the syntax used by most Markdown parsers while also defining how edge cases should be handled.

Being a huge fan of Markdown, I wanted to start using this new standard in PHP - instead of waiting for someone else to create a parser, I simply forked the official JavaScript implementation to PHP.

5 days later I published version 0.1.0 of this fork.

Joining the PHP League

Fast-forward a few months: I had just published version 0.2.1 (and hadn't reached even 50 total downloads) when I saw this message in my inbox:

Email message from Phil Sturgeon

I thought: "Holy crap that's THE Phil Sturgeon! He's like super smart and famous! And he somehow found my fork and thinks it's a project worthy of the League!" It was starstruck, proud, and felt like a total imposter. But I also trusted him - maybe my little project did have the potential to become something great - so I happily accepted his offer.

The process of joining the League was fairly straight-forward: I worked on bringing the package quality up to par while Phil gained approval from the leadership team. Once that was done, we changed the package name from colinodell/commonmark-php to league/commonmark and released version 0.8.0!

Continued Improvements

Since then I've continually worked on refining the architecture of the library, turning that basic 1:1 fork into something object-oriented, well-architected, and fully-extensible. It's now possible to create custom Markdown syntax, modify the HTML output, and so much more.

The community has done some really cool things with this library - it's been used in projects like Bookdown, En Marche, and others. There's even a small community of developers who have written custom extensions which add new syntax/functionality and integrations with most major frameworks & CMSes!

There's still some room for improvement, but overall I'm very pleased with the current state and level of control it offers.

The Broader Community

Becoming involved in the open-source development (through the development of this project) opened my eyes to the broader community. I began speaking at conferences, attending meetups, contributing to other projects, traveling across the world, and making lots of great friends and memories along the way. And it all started because I released this tiny Markdown parser 3 years ago.

I really couldn't have gotten where I am today (and had all these great experience)s without the support of so many others in the community:

  • John MacFarlane, Jeff Atwood, and everyone else who created the CommonMark spec
  • Phil Sturgeon and the PHP League for inviting my package into their group
  • Eli White and Anne-Sophie Bachelard for inviting me to speak at their conferences (when I had no prior experience)
  • The organizers, attendees, and speakers at every conference I've attended and/or spoken at
  • Michael Spinosa and the entire team at Unleashed Technologies for their encouragement and support of my endeavors
  • Beau Simensen, Matthew Trask, Frаnk de Jonge, Sammy Kaye Powers, Cal Evans, Nicolas Grekas, Jeremy Mikola, Ryan Weaver, Hugo Hamon, Jordi Boggiano, Paul Jones, Christopher Pitt, Jonathan Reinink, Ben Ramsey, Chris Hartjes, Graham Campbell, Ed Finkler, Gary Hockin, Ben Edmunds, Chris Tankersley, Ben Marks, Lorna Mitchell, Davey Shafik, Sara Golemon, Graham Daniels, Marco Pivetta, Yitzchok Willroth, J.T. Grimes, Kévin Dunglas, Samantha Quiñones, Adam Culp, Michelangelo van Dam, Amanda Folson, Chris Cornutt, David Stockton, Jessica Mauerhan, Carsten Brandt, Eryn O\'Neil, Brandon Savage, Jeff Geerling, Joe Ferguson, Michael Cullum, Heather White, Freek Van der Herten, Bernhard Breytenbach, Scott Arciszewski, Adam Englander, and so many other great folks who I've met along the way
  • Every person who has taken time to offer advice, feedback, improvements, or bug reports for league/commonmark
  • Every person who has ever blogged about PHP, written a tutorial, or otherwise shared their knowledge
  • Basically the entire open-source community!

And YOU of course. Yes, you. Just because I didn't name you above doesn't mean I don't value what you've done for me and the community. Seriously, I couldn't have had these great experiences without you and everyone else who makes our community so awesome.

So thanks again, and here's to another million downloads and many more great experiences with all of you! Cheers :)

Enjoy this article?

About Colin O'Dell

Colin O'Dell

Colin O'Dell is a Senior Software Engineer at SeatGeek. In addition to being an active member of the PHP League and maintainer of the league/commonmark project, Colin is also a PHP docs contributor, conference speaker, and author of the PHP 7 Migration Guide.