Open Source and New Year’s Resolutions

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


If you use Ponzu or are interested in learning more or contributing in any way, I would love to hear from you. Please reach out on Twitter (@nilslice) or on Github (ponzu-cms/ponzu).


Ponzu wouldn’t be made possible if it weren’t for Open Source, and as such I would like to link to the great projects and repositories that are used as part of Ponzu:

Logo

The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com) The design is licensed under the Creative Commons 3.0 Attributions license. Read this article for more details: http://blog.golang.org/gopher

The Go gopher vector illustraition by Hugo Arganda @argandas (http://about.me/argandas)

“Gotoro”, the sushi chef, is a modification of Hugo Arganda’s illustration by Steve Manuel (https://github.com/nilslice).


Lastly, I owe a special “thank you” to my lovely and patient wife, @laurenmanuel. Without her support, I wouldn’t have been able to focus on Ponzu nor spend the long nights and evenings putting in extra work.