A year of open-source @ Google
It's been just over a year since I joined the amazing Cloud Platform Developer Relations team at Google. I'm incredibly happy to be part of a team filled with passionate and brilliant people who are always excited about technology and fanatical about open-source.
For me personally, it's incredibly fulfilling to be in a position where nearly everything I write is open-source. Over the last year I've published more open-source code than I ever have in my life. I thought it might be nice to review some of the stuff I've managed to put together. :)
Nox is a project of necessity. While trying to test our Python samples, we realized that our Tox configuration was out-of-control. We needed something more flexible. Nox is almost identical to Tox, with the exception that Nox uses a small Python script instead of an ini file for configuration. This small difference allows us to write smaller, easier to understand test automation scripts. While I don't anticipate Nox replacing Tox altogether (not even for my projects), I do like having the option of something more flexible when it's needed.
Noel was really my first attempt at writing something for the Kubernetes ecosystem. I wrote in detail about Noel in another blog post. Basically, it's another layer of abstraction on top of Kubernetes that lets you take a container and deploy it straight to Kubernetes without thinking about Kubernetes. I was rather surprised at the positive response to this - the Kubernetes Deployment SIG was kind enough to invite me to talk about it during their meeting. KubeWeekly was nice enough to post it in their newletter. I plan on coming back to Noel soon and taking advantage of some new Kubernetes features.
PSQ, or Pub/Sub Queue, is a rq-alike that uses Cloud Cloud Pub/Sub as the transport instead of Redis. This is really neat because it essentially allows you to have a zero-configuration deferred task queue. Cloud Pub/sub is an impressive transport that can scale to millions of messages per second.
httplib2shim provides a httplib2 interface over urllib3. This allows people who are stuck using libraries that depend on httplib2 to benefit from the sanity (thread safety, certificate validation, connection pooling) of urllib3.
Speaking of urllib3, I was happy to be able to contribute urllib3.contrib.appengine which provides better support for App Engine's urlfetch API in urllib3, opening the gate for requests to support App Engine again. Huge thanks to @shazow for being so helpful in reviewing and getting that merged.
I helped out a bit on Google's oauth2client by writing a Flask extension for authorization, re-organizing modules, and helping out with unit testing. There's still much to do here, but it's been incredible progress over the last year. Huge shoutout to the other contributors who've pushed this project forward: Danny Hermes, Nathaniel Manista, and Bill Prin.