Skip to content

Blog

Introducing Spaces

As a monorepo grows, so does the number of dependencies, environments, and the complexity of keeping modules isolated from one another.

Qik spaces provide the foundation for isolation, both in command execution and code imports. Spaces enable virtual environments, dotenv files, and fencing of files in a monorepo. Plugins like Pygraph use these constructs for import linting. Future plugins can use spaces for creating optimized docker containers and much more.

Let's dive in to the many use cases of spaces.

Why I'm Building Qik

I'm a fan of monorepos. I like to avoid overly complex infrastructure. However, the consequences can oftentimes be painfully slow CI and a poor developer experience.

For example, huge Django projects can have seconds of latency to run a command, not to mention minutes of running migrations in CI just to start your test suite. Oh, you have a failing test? Have fun literally re-running everything from scratch on the next commit.

Although tools like nx have greatly benefitted JavaScript monorepos, I desired a tool like make for large Python projects that could:

  • Understand the import graph, running only the things that matter.
  • Support multiple virtual environments and enforce import boundaries.
  • Use full file hashing to understand what's changed vs. file modification times.

Enter qik (quick).