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!
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.
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.
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:
- Materialnote Editor
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
“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.