Console

Zero, ClickHouse, and Ocean

Sponsorship

If you, or someone you know, is interested in sponsoring the newsletter, please reach out at console.substack@gmail.com


Not subscribed to Console? Subscribe now to get a list of new open-source projects curated by an Amazon engineer in your email every week.

Already subscribed? Refer 10 friends to Console and we’ll donate $100 to your favorite open-source project!

Share Console


Projects

ClickHouse

ClickHouse is an open-source column-oriented database management system that allows generating analytical data reports in real time. Open-sourced by Yandex.

language: C++, stars: 18831, watchers: 663, forks: 3667, issues: 1634

last commit: August 27, 2021, first commit: Dec 1, 2008

https://twitter.com/ClickHouseDB

ocean

Ocean is a work in progress C compiler from scratch.

language: C, stars: 146, watchers: 4, forks: 2, issues: 3

last commit: August 25, 2021, first commit: June 29, 2021

https://r1chard.nl/

zero

Zero is an open source tool which makes it quick and easy for startup technical founders and developers to build everything they need to launch and grow high-quality SaaS applications faster and more cost-effectively.

language: Go, stars: 83, watchers: 15, forks: 20, issues: 29

last commit: August 25, 2021, first commit: August 21, 2019

https://twitter.com/commitdev


Have a project you’d like to see featured in Console? Drop us a line at console.substack@gmail.com


An Interview With Bill Monkman of Zero

Hey Bill! Thanks for joining us! Let’s start with your background. Where have you worked in the past, how did you learn how to program, and what languages or frameworks do you like?

I taught myself to code in high school, mostly making DOS games in C++, and got my first real job writing Perl for a small domain name registrar in 2000. I realized pretty early that I liked the startup life, and since then I’ve worked mostly at startups of varying sizes, including writing auth systems for games like America’s Army: Operations and Halo, building SaaS apps in PHP for shipping companies, and spending a big chunk of time at Hootsuite. I started there as one of the first employees and over 8 years learned a lot by building and leading the creation of much of the backend and infrastructure that allowed us to scale to tens of millions of users. I needed a new challenge after that time and joined Bench Accounting where I helped improve their architecture and set them up to be able to scale. In 2019, some old colleagues and I created commit.dev to try to give startup engineers more agency over their careers.

I mostly work on the backend or infrastructure and have spent a lot of time focusing on distributed systems and building and scaling startups.

Who or what are your biggest influences as a developer?

Anyone who is passionate about writing code, solving problems, being creative, and learning. I’ve been lucky enough to meet and have some great chats with people like Armon Dadgar and Kelsey Hightower who I think are great role models in the world of open source and DevOps.

What's an opinion you have that most people don't agree with?

I fundamentally dislike most of the trend of “serverless” applications in the industry. I think it has its place and can be very useful as glue in cloud platforms but has a lot of shortcomings that I often see glossed over or misunderstood.

What is one app on your phone that you can’t live without that you think others should know about?

1Password

If you could teach every 12 year old in the world one thing, what would it be and why?

Critical thinking. A desire to dig deeper and try to understand things more fully is a common trait between a lot of people I respect most.

If I gave you $10 million to invest in one thing right now, where would you put it?

Probably something boring and safe.

What are you currently learning?

Rust, archery

What have you been listening to lately?

Phoebe Bridgers, Bo Burnham - Inside, the In The Heights soundtrack, Penelope Scott, loving the new Big Red Machine singles that have been coming out.

Why was Zero started?

I’ve worked at startups for a long time and have seen the same foundational code being written over and over again - infrastructure, user management/auth, logging/metrics, CI/CD, notifications, etc. and during our work with Commit, we have been exposed to a ton more early-stage startups facing these same challenges. Over the course of helping them, we built up a big repository of code to streamline all these things and built a CLI and supporting tools to make it really easy to reuse.

Where did the name for Zero come from?

We were thinking of it as all the things that happen before commit number one on your product - all the initial setup and stuff. So it became Commit Zero, and then just Zero.

Who, or what was the biggest inspiration for Zero?

Not having to write a bunch of code yourself before you can get to the point where you’re actually building out your application!

Are there any overarching goals of Zero that drive design or implementation?

For each feature we are adding, we weigh a bunch of different tech before we decide what to add into the Zero ecosystem 

  • Quality: Is it a great tool that will let a project start small but scale big? 

  • Simplicity: Will we be able to fully automate its setup in a way that will be easy to operate and maintain?

  • Price: Ideally open source, but ideally as low-cost as possible

If so, what trade-offs have been made in Zero as a consequence of these goals?

One example might be user management/authentication - I like using Auth0 and I think they’ve done a lot of things right, but I have a hard time recommending it to people if their product has the potential to grow to many users (for example, something with a freemium model) because of the cost. We ended up integrating Ory Kratos and Oathkeeper instead despite some added complexity, though also leaving the door open to use just part of the Ory stack and integrating with external tools like Auth0.

What is the most challenging problem that’s been solved in Zero, so far?

In the binary itself, probably the module system where we can pull in various modules from GitHub or other sources, read a definition file in them that specifies what parameters are required and how to prompt the user for them, and everything required to render out a project and create real-world systems out of them. For example, rendering the AWS infrastructure module, checking it into your GitHub, and then applying all the terraform inside to actually create your infrastructure in your AWS account.

In the generated code/ecosystem, probably just all the “glue” stuff we have had to write to automate everything in a way where it all works together, and effectively testing for regressions (which we’re still working on.)

Are there any competitors or projects similar to Zero? If so, what were they lacking that made you consider building something new?

There are some things like Heroku or Render that are near the same space, but they are trying to get you on to their platform and locked in, and we’ve seen a lot of issues with people using Heroku. It’s fine for a tiny project and makes things easy to get started, but simply doesn’t scale past a certain point, at which point you’re in for a huge migration headache. As far as I know, there’s not anything that is doing what we’re doing, probably because people realized like we did that there’s no way to make money from it since it’s fully open source and creating resources for you inside your cloud provider account.

What is your typical approach to debugging issues filed in the Zero repo?

We eat our own dog food with Zero by using it for all of our other software endeavours within Commit - we have a number of systems running in production that were fully built with Zero and that has been a great way to get feedback, debug issues, and develop new features.

What is the release process like for Zero?

Zero is actually a whole constellation of repositories and applications, including the CLI binary which eases the setup process, but also all the various modules that build your frontend, backend, infrastructure, static site, etc. all in various languages.

As much as possible we have CI pipelines set up with tests, linting and validation, changelog management, vulnerability scanning, documentation generation, etc. set up that helps make it easier on us when dealing with a bunch of different repos.

From the point of view of a user of Zero, the release process for your generated system is a pretty standard CI pipeline using either GitHub Actions or CircleCI that will kick off tests,  build, then deploy to staging for every merge to the main branch, then a manual approval step before deploying the same artifact to production.

Is Zero intended to eventually be monetized if it isn’t monetized already?

No, as I mentioned above there’s not really any way to make money with the design we are going for since we are creating everything within your accounts.

We do see a tremendous benefit to Commit, though, by creating a tool that helps startups, helping startup engineers build and grow their skills, and building a thriving community around Zero.

How do you balance your work on open-source with your day job and other responsibilities?

Commit is dedicated to the idea of open source, and we open up as much as possible of not just our code but also our processes and learnings and try to always work out loud. There are some great examples of this on Commit’s blog.

Do you think any of your projects do more harm than good?

Commit helps give startup-minded engineers new ways to grow their careers, Zero helps them build things better and faster, and build their skill set while they are at it. As far as I’m concerned it’s certainly a net positive for our profession. I can’t say for sure that people aren’t using it to build things that do more harm than good, but I certainly hope they aren’t! Be cool, people!

What is the best way for a new developer to contribute to Zero?

Check out the repos or the ZenHub board we use to track everything, look for the “good first issue” labels, join our community Slack. We have the CLI tool in Go, backend services in Go and Node, a frontend in React and plenty of DevOps stuff in the AWS stack module, so there’s something for almost everyone!

If you plan to continue developing Zero, where do you see the project heading next?

So far there are a handful of startups who have used Zero to set up their production systems but right now we’re looking to onboard a bunch more and gather feedback, then fix any issues and build features based on that feedback.

What motivates you to continue contributing to Zero?

It’s solving a lot of problems that I see startups constantly facing, and doing it using tools I have personally used and seen be successful in not just starting a new project but also scaling that project up to a huge degree. 

It’s also an incredibly powerful tool to help developers grow their skill sets by giving them solid, stable foundations to build upon. One great example of this is Kubernetes - I think if set up properly it can be an amazing tool and ecosystem to build SaaS apps upon and there are a ton of developers out there who want to get more experience with it but just don’t know where to start or are wary of the potential complexity, learning curve, etc. but with Zero we are able to quickly give them a well-organized cluster, defined fully in code, with examples of how to use it, deploy to it and all sorts of information and learning resources to help them become experts.

Do you have any suggestions for someone trying to make their first contribution to an open-source project?

“Chop wood, carry water.” - Find a project you like, look at their backlog, join their community chat, and just pick something nice and small to get used to their process and get introduced to their community. Don’t worry about working on some huge, impactful feature. Start small, get involved, and focus on learning.