Late in 2016, I began to scratch a career-long itch. I had recently decided that I simply wouldn’t do anymore WordPress projects. I had too often pushed the blogging platform far beyond its intended capabilities. Although WordPress is a good system, I knew that I wanted something else. But to rebuild a content management system that was intentionally reusable, and easy for a non-technical person to jump in and create / edit content is no small feat.

After countless WordPress installations and customizations, as well as many ground-up projects, I had a good idea of the features I wanted from a new CMS:

Simple installation & deployment

No database server (how many projects really need a standalone database?)

Headless, JSON API to access content (no more “themes”, keep it front-end agnostic)

APIs to insert, update, and remove content (enabling real application development)

Code generation for my CRUD views/actions (no run-time custom field / post type plugins)

Fast & efficient enough to be successful for 99% of projects using only a single server

HTTP/2 features like Server Push made easy

made easy Automatic & free HTTPS with certificate management (using Let’s Encrypt)

With all of that in mind, I wanted to build this in Go, a language I had been working with very closely for the past few years and thought it had all the power and flexibility I needed. On top of that, I wanted to use Go for more projects and thought of no better way than to front-load some work now so I can write more Go later.

It quickly dawned on me that this CMS (much like most software projects) was a bigger project than I had set out to do; I needed help. With 2017 quickly approaching, I thought maybe this was my chance to actually make a New Year’s Resolution that stuck, and I’d commit to becoming more

involved in the world of Open Source. So I took to Github and published Ponzu, my CMS in its own organization and licensed it under the BSD-3. My hope was that Ponzu would become more than “my” CMS; to become anyone and everyone’s CMS. I posted the project to r/golang the sub-Reddit dedicated to the Go programming language, and to my surprise lot’s of people started to check it out!

“Gotoro” Ponzu’s sushi-chef mascot

Just weeks later, it had caught the attention of hundreds of Go programmers around the world, and with the help of a generous mention by Brian Ketelsen on the “Go Time” podcast, Ponzu started to

climb in popularity and was trending as a top project on Github. Brian shared that he and the GopherCon team had used Ponzu as the backend & CMS for the conference’s website! The largest Go conference in the world was using my project — that was pretty awesome. At the same time, contributions started to roll in, and others were filling in Ponzu’s gaps or fixing bugs and adding documentation.

A side effect of Ponzu’s growth was that it has brought many programmers into the Go community, who had previously never written a line of Go code. Realizing this, as I looked through the “stargazers” of the repository, was an incredible feeling. The majority of Ponzu’s users had code repositories containing no Go, but lots of Ruby, Python, Javascript, PHP, etc. I was able to share my passion for the language with others who I hope become just as passionate, and life-long Gophers.

The inflection point of when Ponzu went (in my opinion) from “good” to “great”, is crystal clear to me. By sharing the project and releasing it under a permissive license, so many talented people have been able to contribute ideas and features, and implement them with a higher degree of skill than I alone could have accomplished.

The Open Source community has made Ponzu great and I am incredibly thankful. I look back at 2017 and my resolution to be involved in open source as one of the most gratifying years in my life, and of course I intend to continue making Open Source a priority in 2018.

Cheers to the New Year, and if I can leave you with one bit of advice, it would simply be to make Open Source a part of your life too.