Open Source is an Infinitely Scalable Art

Open source software development is an infinitely scalable art. All other types of development are not art or not infinitely scalable. It’s important to get some things right to make it truly ‘infinitely scalable art’.

First of all, quality is always a top priority for good art. Quality makes software predictable. An unpredictable open-source project is just trash. Open source projects should be reference projects in their domain. People rarely reference low-quality projects.

The most important and hardest part of quality is clear requirements and specifications. Clean and performant code has a negative value if it doesn’t follow the specification. Requirements should have well-thought-out templates because they will come from completely different people. Specifications should be documented too, and live together with the code. Fortunately, we have tools for it (openapi, asyncapi and so on). The code should have a baseline standard, automatically checked on pull request. That means linters, tests, coverage reports should present. e2e tests are critical for distributed systems. Ideally, one command should create all required components (containers, VMs), orchestrate them and then run e2e tests. Resilience and performance testing must appear later. Tools exist (Chaos monkey, Gatling).

Second, to make art scalable, it should have documentation. At the bare minimum, it’s an overview of the project + contribution guide + one-step build and installation.